caoyiwen 1 year ago
parent
commit
c7d843eba7
  1. 65
      diet-core/src/main/java/com/mathvision/diet/service/SugarService.java
  2. 70
      diet-dao/src/main/java/com/mathvision/diet/entity/Sugar.java
  3. 10
      diet-dao/src/main/java/com/mathvision/diet/repository/SugarRepository.java
  4. 139
      diet-web/src/main/java/com/mathvision/diet/controller/SugarController.java
  5. 2
      diet-web/src/main/resources/application.yml
  6. 4
      diet-web/src/main/resources/static/change.html
  7. 1
      diet-web/src/main/resources/static/index.html
  8. 98
      diet-web/src/main/resources/static/sugar.html
  9. 3
      doc/change.md
  10. 1
      doc/index.md
  11. 113
      doc/sugar.md
  12. 51
      sql/diet.sql
  13. 7
      sql/init.sql
  14. 39
      sql/update.sql

65
diet-core/src/main/java/com/mathvision/diet/service/SugarService.java

@ -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);
}
};
}
}

70
diet-dao/src/main/java/com/mathvision/diet/entity/Sugar.java

@ -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;
}

10
diet-dao/src/main/java/com/mathvision/diet/repository/SugarRepository.java

@ -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);
}

139
diet-web/src/main/java/com/mathvision/diet/controller/SugarController.java

@ -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;
}
}
}

2
diet-web/src/main/resources/application.yml

@ -2,7 +2,7 @@ spring:
application:
name: diet
profiles:
active: prod
active: dev
web:
resources:
static-locations: classpath:static

4
diet-web/src/main/resources/static/change.html

@ -66,4 +66,8 @@
<li>菜品接口: 增加菜品复制接口, 可以将一个菜品复制到多个单位;</li>
<li>食谱接口: 增加食谱复制接口, 可以将一个食谱复制到本单位或者其他单位;</li>
</ul>
<h3>12.15</h3>
<ul>
<li>ÓÍÑÎÌǽӿÚ: Ôöɾ¸Ä²é;</li>
</ul>

1
diet-web/src/main/resources/static/index.html

@ -24,6 +24,7 @@
</ul>
</li>
<li><a href="icon.html">ͼƬЭÒé</a></li>
<li><a href="sugar.html">油盐糖管理</a></li>
</ul>
<h3>ÏìӦʾÀý</h3>
<pre><code class="json">{

98
diet-web/src/main/resources/static/sugar.html

@ -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>{
&quot;body&quot;: {
&quot;content&quot;: [
{
&quot;id&quot;: 1,
&quot;day&quot;: 5,
&quot;endTime&quot;: 1702742400000,
&quot;name&quot;: &quot;2023-50周&quot;,
&quot;oilDay&quot;: 100.00,
&quot;oilWeek&quot;: 100.00,
&quot;saltDay&quot;: 100.00,
&quot;saltWeek&quot;: 100.00,
&quot;startTime&quot;: 1702224000000,
&quot;sugarDay&quot;: 100.00,
&quot;sugarWeek&quot;: 100.00,
&quot;vender&quot;: 1
}
],
&quot;number&quot;: 0,
&quot;size&quot;: 20,
&quot;totalElements&quot;: 1,
&quot;totalPages&quot;: 1
},
&quot;code&quot;: 200,
&quot;desc&quot;: &quot;成功&quot;,
&quot;success&quot;: 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>{
&quot;code&quot;: 200,
&quot;desc&quot;: &quot;成功&quot;,
&quot;success&quot;: 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>{
&quot;code&quot;: 200,
&quot;desc&quot;: &quot;成功&quot;,
&quot;success&quot;: 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>{
&quot;code&quot;: 200,
&quot;desc&quot;: &quot;成功&quot;,
&quot;success&quot;: true
}
</code></pre>

3
doc/change.md

@ -61,3 +61,6 @@
营养素分析和能量分析两个按天查询的接口返回值增加days字段,标识该食谱上那些天有菜品有数据
* 菜品接口: 增加菜品复制接口, 可以将一个菜品复制到多个单位;
* 食谱接口: 增加食谱复制接口, 可以将一个食谱复制到本单位或者其他单位;
### 12.15
* 油盐糖接口: 增删改查;

1
doc/index.md

@ -22,6 +22,7 @@
* [食谱分析协议](menu/report.md)
* [食谱大屏协议](menu/display.md)
* [图片协议](icon.md)
* [油盐糖管理](sugar.md)
### 响应示例
```json

113
doc/sugar.md

@ -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
}
```

51
sql/diet.sql

@ -23,18 +23,21 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `dish`;
CREATE TABLE `dish` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '菜名',
`name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '菜名',
`vender` bigint NOT NULL COMMENT '单位',
`icon` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '图片',
`icon` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '图片',
`month` json NOT NULL COMMENT '适用月份',
`ingredient` json NOT NULL COMMENT '食材',
`marks` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '标记',
`poly` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '烹饪方式',
`poly` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '烹饪手法',
`label` json 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 `idx_vender`(`vender` ASC) USING BTREE,
INDEX `idx_marks`(`marks` ASC) USING BTREE,
INDEX `idx_modify`(`modify` ASC) USING BTREE,
FULLTEXT INDEX `idx_name`(`name`)
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '菜品' ROW_FORMAT = Dynamic;
@ -141,11 +144,11 @@ CREATE TABLE `menu` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`vender` bigint UNSIGNED NOT NULL COMMENT '单位',
`nutrient` bigint UNSIGNED NOT NULL COMMENT '营养标准',
`name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '食谱名称',
`day` int UNSIGNED NOT NULL DEFAULT 1 COMMENT '天数',
`name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '食谱名称',
`day` json NOT NULL COMMENT '天数',
`meals` json NOT NULL COMMENT '餐次',
`crows` json NOT NULL COMMENT '人群',
`scale` json NULL COMMENT '规模',
`scale` json NULL COMMENT '人群规模',
`month` json NOT NULL COMMENT '适用月份',
`status` tinyint UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态:0-草稿,1-提交审核,2-审核通过,3-审核失败,4-禁用,5-发布',
`approve` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '审批意见',
@ -155,7 +158,7 @@ CREATE TABLE `menu` (
`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_vender`(`vender` ASC) USING BTREE,
INDEX `idx_time`(`modify` ASC) USING BTREE,
FULLTEXT INDEX `idx_name`(`name`)
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '食谱' ROW_FORMAT = Dynamic;
@ -190,7 +193,8 @@ CREATE TABLE `menu_dish` (
`name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '菜名',
`ingredient` json NOT NULL COMMENT '人群食材',
`marks` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '标记',
`poly` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '烹饪方式',
`poly` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '烹饪手法',
`label` json 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 '修改时间',
@ -205,12 +209,14 @@ CREATE TABLE `menu_dish` (
DROP TABLE IF EXISTS `nutrition`;
CREATE TABLE `nutrition` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '标准名称',
`name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '标准名称',
`vendors` json NOT NULL COMMENT '适用单位',
`crows` json NULL COMMENT '人群',
`food_category_day` json NULL COMMENT '食物种类及数量标准(日)',
`food_category_week` json NULL COMMENT '食物种类及数量标准(周)',
`ingredient` json NULL COMMENT '食材',
`overflow` decimal(5, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '溢出范围',
`overflow` decimal(5, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '溢出范围(默认)',
`overflows` json 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 '修改时间',
@ -386,4 +392,29 @@ CREATE TABLE `vender_config` (
UNIQUE INDEX `udx_vender`(`vender` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '人群配置表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for sugar
-- ----------------------------
DROP TABLE IF EXISTS `sugar`;
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;
SET FOREIGN_KEY_CHECKS = 1;

7
sql/init.sql

@ -115,9 +115,9 @@ BEGIN;
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (1, '食材列表-查看', '管理端', '[get]|:ingredient|excel', '食材管理', 'system', '2023-09-02 16:03:16', '2023-10-06 20:23:17');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (2, '食材-新增/编辑/删除', '管理端', '[post,put,delete]:ingredient|excel', '食材管理', 'system', '2023-09-03 00:32:49', '2023-09-23 00:49:24');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (3, '菜品列表-查看', '管理端', '[get]:dish', '菜品管理', 'system', '2023-09-03 00:43:38', '2023-09-03 01:46:43');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (4, '菜品-新增/编辑/删除', '管理端', '[post,put,delete]:dish', '菜品管理', 'system', '2023-09-03 00:44:17', '2023-09-08 03:26:52');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (4, '菜品-新增/编辑/删除', '管理端', '[post,put,delete]:dish|dish/copy', '菜品管理', 'system', '2023-09-03 00:44:17', '2023-12-11 17:49:09');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (5, '食谱列表-查看', '管理端', '[get]:menu|menu/dish', '食谱管理', 'system', '2023-09-03 00:47:19', '2023-09-23 00:50:14');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (6, '食谱-新增/编辑/删除', '管理端', '[post,put,delete]:menu|menu/dish|menu/dish/batch', '食谱管理', 'system', '2023-09-03 00:48:15', '2023-09-26 00:53:47');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (6, '食谱-新增/编辑/删除', '管理端', '[post,put,delete]:menu|menu/copy|menu/dish|menu/dish/batch', '食谱管理', 'system', '2023-09-03 00:48:15', '2023-12-11 11:56:42');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (7, '食谱审核列表-查看', '管理端', '[get,put]:menu/review|menu/review/count', '食谱管理', 'system', '2023-09-03 00:50:30', '2023-10-08 03:51:41');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (8, '食谱审核列表-通过/驳回', '管理端', '[post,delete]:menu/review', '食谱管理', 'system', '2023-09-03 00:51:10', '2023-09-24 04:05:21');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (9, '食谱发布计划-查看', '管理端', '[get]:menu/release', '食谱管理', 'system', '2023-09-03 00:52:11', '2023-09-12 01:24:45');
@ -139,7 +139,7 @@ INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (25, '菜品列表-查看', '业务端', '[get]:dish', '菜品管理', 'system', '2023-09-03 00:43:38', '2023-09-03 02:00:56');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (26, '菜品-新增/编辑/删除', '业务端', '[post,put,delete]:dish', '菜品管理', 'system', '2023-09-03 00:44:17', '2023-09-08 03:25:51');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (27, '食谱列表-查看', '业务端', '[get]:menu|menu/dish', '食谱管理', 'system', '2023-09-03 02:02:07', '2023-09-24 02:51:20');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (28, '食谱-新增/编辑/删除', '业务端', '[post,put,delete]:menu|menu/dish|menu/dish/batch', '食谱管理', 'system', '2023-09-03 02:02:50', '2023-09-28 13:59:01');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (28, '食谱-新增/编辑/删除', '业务端', '[post,put,delete]:menu|menu/copy|menu/dish|menu/dish/batch', '食谱管理', 'system', '2023-09-03 02:02:50', '2023-12-11 11:57:04');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (29, '食谱审核记录-查看', '业务端', '[get,put]:menu/review|menu/review/count', '食谱管理', 'system', '2023-09-03 02:03:31', '2023-10-08 03:51:54');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (30, '食谱发布计划-查看', '业务端', '[get]:menu/release', '食谱管理', 'system', '2023-09-14 23:37:14', '2023-09-14 23:52:17');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (31, '食谱发布计划-发布/取消发布', '业务端', '[put,delete]:menu/release', '食谱管理', 'system', '2023-09-14 23:37:54', '2023-09-24 03:47:17');
@ -149,6 +149,7 @@ INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (35, '用户列表-查看', '业务端', '[get]:user|role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-11-17 21:17:57');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (36, '角色权限-查看/新增/编辑/删除', '业务端', '[get,post,put,delete]:role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-14 23:55:53');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (37, '用户-新增/编辑/删除', '业务端', '[post,put,delete]:user', '系统设置', 'system', '2023-09-03 01:06:28', '2023-09-14 23:55:57');
INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (38, '油盐糖-查看/新增/编辑/删除', '管理端', '[post,put,delete]:sugar', '油盐糖管理', 'system', '2023-12-16 21:17:57', '2023-12-16 21:24:26');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;

39
sql/update.sql

@ -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`.`dish` ADD INDEX `idx_modify`(`modify`);
ALTER TABLE `diet`.`dish` ADD COLUMN `label` json NULL COMMENT '标签' AFTER `poly`;
ALTER TABLE `diet`.`menu` RENAME INDEX `udx_vender` TO `idx_vender`;
ALTER TABLE `diet`.`menu`
MODIFY COLUMN `scale` json NULL COMMENT '人群规模' AFTER `crows`;
DROP TABLE IF EXISTS `sugar`;
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…
Cancel
Save