14 changed files with 576 additions and 27 deletions
@ -0,0 +1,65 @@ |
|||||
|
package com.mathvision.diet.service; |
||||
|
|
||||
|
import com.mathvision.diet.entity.Sugar; |
||||
|
import com.mathvision.diet.repository.SugarRepository; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.data.domain.Page; |
||||
|
import org.springframework.data.domain.PageRequest; |
||||
|
import org.springframework.data.jpa.domain.Specification; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
import javax.persistence.criteria.Predicate; |
||||
|
import java.time.LocalDate; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Slf4j |
||||
|
@Service |
||||
|
public class SugarService { |
||||
|
|
||||
|
@Resource |
||||
|
private SugarRepository sugarRepository; |
||||
|
|
||||
|
public void save(Sugar sugar) { |
||||
|
sugarRepository.save(sugar); |
||||
|
} |
||||
|
|
||||
|
public void delete(Sugar sugar) { |
||||
|
sugarRepository.delete(sugar); |
||||
|
} |
||||
|
|
||||
|
public Sugar get(Long id, Long vender) { |
||||
|
return sugarRepository.findByIdAndVender(id, vender); |
||||
|
} |
||||
|
|
||||
|
public boolean exist(String name, Long vender) { |
||||
|
return sugarRepository.existsByVenderAndName(vender, name); |
||||
|
} |
||||
|
|
||||
|
public Page<Sugar> list(Long vender, LocalDate startTime, LocalDate endTime, PageRequest pageRequest) { |
||||
|
return sugarRepository.findAll(toSpecification(vender, startTime, endTime), pageRequest); |
||||
|
} |
||||
|
|
||||
|
private Specification<Sugar> toSpecification(Long vender, LocalDate startTime, LocalDate endTime) { |
||||
|
return (root, query, builder) -> { |
||||
|
List<Predicate> predicates = new ArrayList<>(); |
||||
|
|
||||
|
predicates.add(builder.equal(root.get("vender"), vender)); |
||||
|
|
||||
|
if (startTime != null) { |
||||
|
predicates.add(builder.greaterThanOrEqualTo(root.get("startTime"), startTime)); |
||||
|
} |
||||
|
|
||||
|
if (endTime != null) { |
||||
|
predicates.add(builder.lessThanOrEqualTo(root.get("endTime"), endTime)); |
||||
|
} |
||||
|
|
||||
|
if (predicates.size() > 1) { |
||||
|
return builder.and(predicates.toArray(new Predicate[0])); |
||||
|
} else { |
||||
|
return predicates.get(0); |
||||
|
} |
||||
|
}; |
||||
|
} |
||||
|
} |
@ -0,0 +1,70 @@ |
|||||
|
package com.mathvision.diet.entity; |
||||
|
|
||||
|
import com.alibaba.fastjson2.annotation.JSONField; |
||||
|
import lombok.*; |
||||
|
|
||||
|
import javax.persistence.*; |
||||
|
import java.math.BigDecimal; |
||||
|
import java.time.Instant; |
||||
|
import java.time.LocalDate; |
||||
|
|
||||
|
@Builder |
||||
|
@AllArgsConstructor |
||||
|
@NoArgsConstructor |
||||
|
@Getter |
||||
|
@Setter |
||||
|
@Entity |
||||
|
@Table(name = "sugar") |
||||
|
public class Sugar { |
||||
|
|
||||
|
@Id |
||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY) |
||||
|
@Column(name = "id", nullable = false) |
||||
|
private Long id; |
||||
|
|
||||
|
@Column(name = "vender", nullable = false) |
||||
|
private Long vender; |
||||
|
|
||||
|
@Column(name = "name", nullable = false, length = 64) |
||||
|
private String name; |
||||
|
|
||||
|
@Column(name = "day", columnDefinition = "int UNSIGNED not null") |
||||
|
private Integer day; |
||||
|
|
||||
|
@Column(name = "sugar_day", precision = 10, scale = 2) |
||||
|
private BigDecimal sugarDay; |
||||
|
|
||||
|
@Column(name = "sugar_week", precision = 10, scale = 2) |
||||
|
private BigDecimal sugarWeek; |
||||
|
|
||||
|
@Column(name = "oil_day", precision = 10, scale = 2) |
||||
|
private BigDecimal oilDay; |
||||
|
|
||||
|
@Column(name = "oil_week", precision = 10, scale = 2) |
||||
|
private BigDecimal oilWeek; |
||||
|
|
||||
|
@Column(name = "salt_day", precision = 10, scale = 2) |
||||
|
private BigDecimal saltDay; |
||||
|
|
||||
|
@Column(name = "salt_week", precision = 10, scale = 2) |
||||
|
private BigDecimal saltWeek; |
||||
|
|
||||
|
@Column(name = "start_time") |
||||
|
private LocalDate startTime; |
||||
|
|
||||
|
@Column(name = "end_time") |
||||
|
private LocalDate endTime; |
||||
|
|
||||
|
@JSONField(serialize = false) |
||||
|
@Column(name = "operate", length = 45) |
||||
|
private String operate; |
||||
|
|
||||
|
@JSONField(serialize = false) |
||||
|
@Column(name = "created") |
||||
|
private Instant created; |
||||
|
|
||||
|
@JSONField(serialize = false) |
||||
|
@Column(name = "modify") |
||||
|
private Instant modify; |
||||
|
|
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
package com.mathvision.diet.repository; |
||||
|
|
||||
|
import com.mathvision.diet.entity.Sugar; |
||||
|
import org.springframework.data.jpa.repository.JpaRepository; |
||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; |
||||
|
|
||||
|
public interface SugarRepository extends JpaRepository<Sugar, Long>, JpaSpecificationExecutor<Sugar> { |
||||
|
boolean existsByVenderAndName(Long vender, String name); |
||||
|
Sugar findByIdAndVender(Long id, Long vender); |
||||
|
} |
@ -0,0 +1,139 @@ |
|||||
|
package com.mathvision.diet.controller; |
||||
|
|
||||
|
import com.mathvision.diet.entity.Sugar; |
||||
|
import com.mathvision.diet.service.SugarService; |
||||
|
import org.springframework.data.domain.Page; |
||||
|
import org.springframework.data.domain.PageRequest; |
||||
|
import org.springframework.data.domain.Sort; |
||||
|
import org.springframework.stereotype.Controller; |
||||
|
import org.springframework.util.Assert; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestMethod; |
||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||
|
import org.springframework.web.bind.annotation.ResponseBody; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
import java.math.BigDecimal; |
||||
|
import java.math.RoundingMode; |
||||
|
import java.time.Instant; |
||||
|
import java.time.LocalDate; |
||||
|
import java.time.format.DateTimeFormatter; |
||||
|
import java.time.format.DateTimeFormatterBuilder; |
||||
|
import java.time.format.SignStyle; |
||||
|
import java.time.temporal.IsoFields; |
||||
|
import java.util.Objects; |
||||
|
|
||||
|
@RequestMapping("/api/sugar") |
||||
|
@Controller |
||||
|
public class SugarController extends BaseController { |
||||
|
|
||||
|
@Resource |
||||
|
SugarService sugarService; |
||||
|
|
||||
|
private static final DateTimeFormatter DATE_FORMATTER = new DateTimeFormatterBuilder().parseCaseInsensitive() |
||||
|
.appendValue(IsoFields.WEEK_BASED_YEAR, 4, 10,SignStyle.EXCEEDS_PAD) |
||||
|
.appendLiteral("-").appendValue(IsoFields.WEEK_OF_WEEK_BASED_YEAR, 2).appendLiteral("周") |
||||
|
.optionalStart().appendOffsetId().toFormatter(); |
||||
|
|
||||
|
@ResponseBody |
||||
|
@RequestMapping(method = RequestMethod.PUT) |
||||
|
public void add(@RequestParam Integer day, @RequestParam(required=false, defaultValue = "0") BigDecimal sugarWeek, @RequestParam(required=false, defaultValue = "0") BigDecimal oilWeek, @RequestParam(required=false, defaultValue = "0") BigDecimal saltWeek, @RequestParam String startTime, @RequestParam String endTime) { |
||||
|
sugarService.save(checkAndConvert(day, sugarWeek, oilWeek, saltWeek, startTime, endTime)); |
||||
|
} |
||||
|
|
||||
|
@ResponseBody |
||||
|
@RequestMapping(method = RequestMethod.POST) |
||||
|
public void update(@RequestParam Long id, @RequestParam(required=false) Integer day, @RequestParam(required=false) BigDecimal sugarWeek, @RequestParam(required=false) BigDecimal oilWeek, @RequestParam(required=false) BigDecimal saltWeek, @RequestParam(required=false) String startTime, @RequestParam(required=false) String endTime) { |
||||
|
Sugar sugar = sugarService.get(id, getVender()); |
||||
|
Assert.isTrue(sugar != null, "[参数错误]所需修改的数据不存在!"); |
||||
|
|
||||
|
boolean flag = false; |
||||
|
if(day != null && !Objects.equals(sugar.getDay(), day)) { |
||||
|
Assert.isTrue(day >=1 && day <=7, "[参数错误]天数取值1~7之间!"); |
||||
|
sugar.setDay(day); |
||||
|
flag = true; |
||||
|
} |
||||
|
|
||||
|
LocalDate start = toLocalDate(startTime); |
||||
|
if(start != null && !Objects.equals(sugar.getStartTime(), start)) { |
||||
|
sugar.setStartTime(start); |
||||
|
flag = true; |
||||
|
} |
||||
|
|
||||
|
LocalDate end = toLocalDate(endTime); |
||||
|
if(end != null && !Objects.equals(sugar.getEndTime(), end)) { |
||||
|
sugar.setEndTime(end); |
||||
|
flag = true; |
||||
|
} |
||||
|
|
||||
|
if(sugarWeek != null && !Objects.equals(sugar.getSugarWeek(), sugarWeek)) { |
||||
|
sugar.setSugarWeek(sugarWeek); |
||||
|
flag = true; |
||||
|
} |
||||
|
|
||||
|
if(oilWeek != null && !Objects.equals(sugar.getOilWeek(), oilWeek)) { |
||||
|
sugar.setOilWeek(oilWeek); |
||||
|
flag = true; |
||||
|
} |
||||
|
|
||||
|
if(saltWeek != null && !Objects.equals(sugar.getSaltWeek(), saltWeek)) { |
||||
|
sugar.setSaltWeek(saltWeek); |
||||
|
flag = true; |
||||
|
} |
||||
|
|
||||
|
if (flag) { |
||||
|
sugar.setName(sugar.getStartTime().format(DATE_FORMATTER)); |
||||
|
sugar.setSugarDay(toDayValue(sugar.getSugarWeek(), sugar.getDay())); |
||||
|
sugar.setOilDay(toDayValue(sugar.getOilWeek(), sugar.getDay())); |
||||
|
sugar.setSaltDay(toDayValue(sugar.getSaltWeek(), sugar.getDay())); |
||||
|
sugar.setOperate(getUid()); |
||||
|
sugar.setModify(Instant.now()); |
||||
|
sugarService.save(sugar); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@ResponseBody |
||||
|
@RequestMapping(method = RequestMethod.DELETE) |
||||
|
public void delete(@RequestParam Long id) { |
||||
|
Sugar sugar = sugarService.get(id, getVender()); |
||||
|
if (sugar != null) { |
||||
|
sugarService.delete(sugar); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@ResponseBody |
||||
|
@RequestMapping(method = RequestMethod.GET) |
||||
|
public Page<Sugar> query(@RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false, defaultValue = "0") int pageNo, @RequestParam(required = false, defaultValue = "20") int pageSize) { |
||||
|
return sugarService.list(getVender(), toLocalDate(startTime), toLocalDate(endTime), PageRequest.of(pageNo, pageSize).withSort(Sort.by(Sort.Direction.DESC, "id"))); |
||||
|
} |
||||
|
|
||||
|
private Sugar checkAndConvert(Integer day, BigDecimal sugarWeek, BigDecimal oilWeek, BigDecimal saltWeek, String startTime, String endTime) { |
||||
|
Assert.isTrue(day != null && day >=1 && day <=7, "[参数错误]天数取值1~7之间!"); |
||||
|
|
||||
|
LocalDate start = toLocalDate(startTime); |
||||
|
LocalDate end = toLocalDate(endTime); |
||||
|
Assert.isTrue(start != null && end != null && start.isBefore(end), "[参数错误]时间段输入错误!"); |
||||
|
|
||||
|
String name = start.format(DATE_FORMATTER); |
||||
|
Assert.isTrue(!sugarService.exist(name, getVender()), "[参数错误]" + name + "已经录入, 不允许重复录入!"); |
||||
|
|
||||
|
Instant dateTime = Instant.now(); |
||||
|
return Sugar.builder().vender(getVender()).name(name).day(day).sugarDay(toDayValue(sugarWeek, day)).sugarWeek(sugarWeek).oilDay(toDayValue(oilWeek, day)).oilWeek(oilWeek).saltDay(toDayValue(saltWeek, day)).saltWeek(saltWeek).startTime(start).endTime(end).operate(getUid()).created(dateTime).modify(dateTime).build(); |
||||
|
} |
||||
|
|
||||
|
private BigDecimal toDayValue(BigDecimal value, int day) { |
||||
|
if (value == null || value.compareTo(BigDecimal.ZERO) == 0 || day == 0) { |
||||
|
return BigDecimal.ZERO; |
||||
|
} |
||||
|
|
||||
|
return value.divide(BigDecimal.valueOf(day), 4, RoundingMode.HALF_UP); |
||||
|
} |
||||
|
|
||||
|
private LocalDate toLocalDate(String text) { |
||||
|
try { |
||||
|
return LocalDate.parse(text); |
||||
|
} catch (Exception e) { |
||||
|
return null; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,98 @@ |
|||||
|
<h1>油盐糖部分</h1> |
||||
|
<h1>1. 查询</h1> |
||||
|
<blockquote> |
||||
|
<p>GET /api/sugar</p> |
||||
|
</blockquote> |
||||
|
<h3>输入:</h3> |
||||
|
<pre><code>Content-Type:application/x-www-form-urlencoded |
||||
|
startTime=2023-12-07 // 查询时间段 |
||||
|
endTime=2023-12-20 // 查询时间段 |
||||
|
pageSize=20 // 默认20 |
||||
|
pageNo=0 // 默认0, 从0开始 |
||||
|
</code></pre> |
||||
|
<h3>输出:</h3> |
||||
|
<pre><code>{ |
||||
|
"body": { |
||||
|
"content": [ |
||||
|
{ |
||||
|
"id": 1, |
||||
|
"day": 5, |
||||
|
"endTime": 1702742400000, |
||||
|
"name": "2023-50周", |
||||
|
"oilDay": 100.00, |
||||
|
"oilWeek": 100.00, |
||||
|
"saltDay": 100.00, |
||||
|
"saltWeek": 100.00, |
||||
|
"startTime": 1702224000000, |
||||
|
"sugarDay": 100.00, |
||||
|
"sugarWeek": 100.00, |
||||
|
"vender": 1 |
||||
|
} |
||||
|
], |
||||
|
"number": 0, |
||||
|
"size": 20, |
||||
|
"totalElements": 1, |
||||
|
"totalPages": 1 |
||||
|
}, |
||||
|
"code": 200, |
||||
|
"desc": "成功", |
||||
|
"success": true |
||||
|
} |
||||
|
</code></pre> |
||||
|
<h1>2. 添加</h1> |
||||
|
<blockquote> |
||||
|
<p>PUT /api/sugar</p> |
||||
|
</blockquote> |
||||
|
<h3>输入:</h3> |
||||
|
<pre><code>Content-Type:application/x-www-form-urlencoded |
||||
|
day=5 // 天数, 必填 |
||||
|
startTime=2023-12-07 // 查询时间段, 必填 |
||||
|
endTime=2023-12-20 // 查询时间段, 必填 |
||||
|
sugarWeek=50 // 周总量(糖), 非必填 |
||||
|
oilWeek=100 // 周总量(油), 非必填 |
||||
|
saltWeek=100 // 周总量(盐), 非必填 |
||||
|
</code></pre> |
||||
|
<h3>输出:</h3> |
||||
|
<pre><code>{ |
||||
|
"code": 200, |
||||
|
"desc": "成功", |
||||
|
"success": true |
||||
|
} |
||||
|
</code></pre> |
||||
|
<h1>3. 修改</h1> |
||||
|
<blockquote> |
||||
|
<p>POST /api/sugar</p> |
||||
|
</blockquote> |
||||
|
<h3>输入:</h3> |
||||
|
<pre><code>Content-Type:application/x-www-form-urlencoded |
||||
|
id=1 // 编号, 必填 |
||||
|
day=5 // 天数, 非必填 |
||||
|
startTime=2023-12-07 // 查询时间段, 非必填 |
||||
|
endTime=2023-12-20 // 查询时间段, 非必填 |
||||
|
sugarWeek=50 // 周总量(糖), 非必填 |
||||
|
oilWeek=100 // 周总量(油), 非必填 |
||||
|
saltWeek=100 // 周总量(盐), 非必填 |
||||
|
</code></pre> |
||||
|
<h3>输出:</h3> |
||||
|
<pre><code>{ |
||||
|
"code": 200, |
||||
|
"desc": "成功", |
||||
|
"success": true |
||||
|
} |
||||
|
</code></pre> |
||||
|
<h1>4. 删除</h1> |
||||
|
<blockquote> |
||||
|
<p>DELETE /api/sugar</p> |
||||
|
</blockquote> |
||||
|
<h3>输入:</h3> |
||||
|
<pre><code>Content-Type:application/x-www-form-urlencoded |
||||
|
id=1 // 编号, 必填 |
||||
|
</code></pre> |
||||
|
<h3>输出:</h3> |
||||
|
<pre><code>{ |
||||
|
"code": 200, |
||||
|
"desc": "成功", |
||||
|
"success": true |
||||
|
} |
||||
|
</code></pre> |
||||
|
|
@ -0,0 +1,113 @@ |
|||||
|
# 油盐糖部分 |
||||
|
|
||||
|
# 1. 查询 |
||||
|
|
||||
|
> GET /api/sugar |
||||
|
|
||||
|
### 输入: |
||||
|
``` |
||||
|
Content-Type:application/x-www-form-urlencoded |
||||
|
startTime=2023-12-07 // 查询时间段 |
||||
|
endTime=2023-12-20 // 查询时间段 |
||||
|
pageSize=20 // 默认20 |
||||
|
pageNo=0 // 默认0, 从0开始 |
||||
|
``` |
||||
|
|
||||
|
### 输出: |
||||
|
``` |
||||
|
{ |
||||
|
"body": { |
||||
|
"content": [ |
||||
|
{ |
||||
|
"id": 1, |
||||
|
"day": 5, |
||||
|
"endTime": 1702742400000, |
||||
|
"name": "2023-50周", |
||||
|
"oilDay": 100.00, |
||||
|
"oilWeek": 100.00, |
||||
|
"saltDay": 100.00, |
||||
|
"saltWeek": 100.00, |
||||
|
"startTime": 1702224000000, |
||||
|
"sugarDay": 100.00, |
||||
|
"sugarWeek": 100.00, |
||||
|
"vender": 1 |
||||
|
} |
||||
|
], |
||||
|
"number": 0, |
||||
|
"size": 20, |
||||
|
"totalElements": 1, |
||||
|
"totalPages": 1 |
||||
|
}, |
||||
|
"code": 200, |
||||
|
"desc": "成功", |
||||
|
"success": true |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
# 2. 添加 |
||||
|
|
||||
|
> PUT /api/sugar |
||||
|
|
||||
|
### 输入: |
||||
|
``` |
||||
|
Content-Type:application/x-www-form-urlencoded |
||||
|
day=5 // 天数, 必填 |
||||
|
startTime=2023-12-07 // 查询时间段, 必填 |
||||
|
endTime=2023-12-20 // 查询时间段, 必填 |
||||
|
sugarWeek=50 // 周总量(糖), 非必填 |
||||
|
oilWeek=100 // 周总量(油), 非必填 |
||||
|
saltWeek=100 // 周总量(盐), 非必填 |
||||
|
``` |
||||
|
|
||||
|
### 输出: |
||||
|
``` |
||||
|
{ |
||||
|
"code": 200, |
||||
|
"desc": "成功", |
||||
|
"success": true |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
# 3. 修改 |
||||
|
|
||||
|
> POST /api/sugar |
||||
|
|
||||
|
### 输入: |
||||
|
``` |
||||
|
Content-Type:application/x-www-form-urlencoded |
||||
|
id=1 // 编号, 必填 |
||||
|
day=5 // 天数, 非必填 |
||||
|
startTime=2023-12-07 // 查询时间段, 非必填 |
||||
|
endTime=2023-12-20 // 查询时间段, 非必填 |
||||
|
sugarWeek=50 // 周总量(糖), 非必填 |
||||
|
oilWeek=100 // 周总量(油), 非必填 |
||||
|
saltWeek=100 // 周总量(盐), 非必填 |
||||
|
``` |
||||
|
|
||||
|
### 输出: |
||||
|
``` |
||||
|
{ |
||||
|
"code": 200, |
||||
|
"desc": "成功", |
||||
|
"success": true |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
# 4. 删除 |
||||
|
|
||||
|
> DELETE /api/sugar |
||||
|
|
||||
|
### 输入: |
||||
|
``` |
||||
|
Content-Type:application/x-www-form-urlencoded |
||||
|
id=1 // 编号, 必填 |
||||
|
``` |
||||
|
|
||||
|
### 输出: |
||||
|
``` |
||||
|
{ |
||||
|
"code": 200, |
||||
|
"desc": "成功", |
||||
|
"success": true |
||||
|
} |
||||
|
``` |
@ -1,18 +1,31 @@ |
|||||
ALTER TABLE `diet`.`ingredient` DROP INDEX `idx_key`; |
##12.15 |
||||
|
INSERT INTO `diet`.`role_item` (`item_name`, `item_value`, `category`) VALUES ('油盐糖-查看/新增/编辑/删除', '[post,put,delete]:sugar', '油盐糖管理'); |
||||
|
UPDATE `diet`.`role` SET `role_items` = '[18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38]' WHERE `vender` != 0; |
||||
|
|
||||
ALTER TABLE `diet`.`dish` ADD INDEX `idx_marks`(`marks`); |
ALTER TABLE `diet`.`menu` RENAME INDEX `udx_vender` TO `idx_vender`; |
||||
ALTER TABLE `diet`.`dish` ADD INDEX `idx_modify`(`modify`); |
|
||||
ALTER TABLE `diet`.`dish` ADD COLUMN `label` json NULL COMMENT '标签' AFTER `poly`; |
|
||||
|
|
||||
ALTER TABLE `diet`.`menu` |
DROP TABLE IF EXISTS `sugar`; |
||||
MODIFY COLUMN `scale` json NULL COMMENT '人群规模' AFTER `crows`; |
CREATE TABLE `sugar` ( |
||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, |
||||
|
`vender` bigint UNSIGNED NOT NULL COMMENT '单位', |
||||
|
`name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '名称', |
||||
|
`day` int UNSIGNED NOT NULL COMMENT '天数', |
||||
|
`sugar_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(糖)', |
||||
|
`sugar_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(糖)', |
||||
|
`oil_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(油)', |
||||
|
`oil_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(油)', |
||||
|
`salt_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(盐)', |
||||
|
`salt_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(盐)', |
||||
|
`start_time` date NULL DEFAULT NULL COMMENT '开始时间', |
||||
|
`end_time` date NULL DEFAULT NULL COMMENT '结束时间', |
||||
|
`operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员', |
||||
|
`created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
||||
|
`modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', |
||||
|
PRIMARY KEY (`id`) USING BTREE, |
||||
|
INDEX `udx_vender`(`vender` ASC) USING BTREE, |
||||
|
INDEX `idx_time`(`start_time` ASC, `end_time` ASC) USING BTREE |
||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '油盐糖' ROW_FORMAT = Dynamic; |
||||
|
|
||||
ALTER TABLE `diet`.`menu_dish` ADD COLUMN `label` json NULL COMMENT '标签' AFTER `poly`; |
INSERT INTO `sugar` VALUES (1, 1, '2023-50周', 5, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, '2023-12-11', '2023-12-17', 'system', '2023-12-16 21:38:38', '2023-12-16 21:38:38'); |
||||
|
|
||||
ALTER TABLE `diet`.`nutrition` |
|
||||
ADD COLUMN `crows` json NULL COMMENT '人群' AFTER `vendors`, |
|
||||
ADD COLUMN `overflows` json NULL COMMENT '溢出范围(分营养素)' AFTER `overflow`; |
|
||||
|
|
||||
UPDATE `diet`.`role_item` SET `item_value` = '[post,put,delete]:menu|menu/copy|menu/dish|menu/dish/batch' WHERE `id` = 6; |
|
||||
UPDATE `diet`.`role_item` SET `item_value` = '[post,put,delete]:menu|menu/copy|menu/dish|menu/dish/batch' WHERE `id` = 28; |
|
||||
UPDATE `diet`.`role_item` SET `item_value` = '[post,put,delete]:dish|dish/copy' WHERE `id` = 4; |
|
Loading…
Reference in new issue