From 488a149ec3541764a356f42b6cbfeab971bd7fbe Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Fri, 26 Feb 2021 18:45:56 +0800 Subject: [PATCH 01/35] =?UTF-8?q?=E5=81=A5=E5=BA=B7=E4=BD=93=E5=BE=81?= =?UTF-8?q?=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- running/pdf/healthyReport.pdf | Bin 0 -> 152817 bytes .../custom/SysCustomerHealthyController.java | 11 + .../com/stdiet/common/utils/HealthyUtils.java | 19 +- .../common/utils/reflect/ReflectUtils.java | 18 + .../dto/request/HealthyDetailRequest.java | 390 ++++++++++++++++++ .../dto/response/NutritionalCalories.java | 19 + .../service/ISysCustomerHealthyService.java | 7 + .../impl/SysCustomerHealthyServiceImpl.java | 76 ++++ .../stdiet/custom/utils/NutritionalUtils.java | 7 + .../com/stdiet/custom/utils/PdfUtils.java | 70 ++++ stdiet-ui/src/api/custom/healthy.js | 10 + .../components/PhysicalSignsDialog/index.vue | 15 +- 12 files changed, 640 insertions(+), 2 deletions(-) create mode 100644 running/pdf/healthyReport.pdf create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/dto/request/HealthyDetailRequest.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/utils/PdfUtils.java diff --git a/running/pdf/healthyReport.pdf b/running/pdf/healthyReport.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9e2f110fa1729c981cb8963c4802daf58ecf98bb GIT binary patch literal 152817 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�utBwSkDILk?>BAp|Y& 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 wWPyCI-}L%PP&@)<%e9U}6}w-wAAD!v getReportData(SysCustomerHealthy sysCustomerHealthy, HealthyDetailRequest healthyDetailRequest){ + Map data = new HashMap<>(); + for (String key : healthyAttrNameAray) { + data.put(key, ReflectUtils.getFieldValueByFieldName(key, healthyDetailRequest)); + } + NutritionalCalories nutritionalCalories = NutritionalUtils.getNutritionalCaloriesData(sysCustomerHealthy); + nutritionalCalories.setNutritionalHeat_one(nutritionalCalories.getNutritionalHeat()[0].toString()); + nutritionalCalories.setNutritionalHeat_two(nutritionalCalories.getNutritionalHeat()[1].toString()); + nutritionalCalories.setNutritionalHeat_three(nutritionalCalories.getNutritionalHeat()[2].toString()); + nutritionalCalories.setNutritionalQuality_one(nutritionalCalories.getNutritionalQuality()[0].toString()); + nutritionalCalories.setNutritionalQuality_two(nutritionalCalories.getNutritionalQuality()[1].toString()); + nutritionalCalories.setNutritionalQuality_three(nutritionalCalories.getNutritionalQuality()[2].toString()); + nutritionalCalories.setWeightNutritionalRate_one(nutritionalCalories.getWeightNutritionalRate()[0].toString()); + nutritionalCalories.setWeightNutritionalRate_two(nutritionalCalories.getWeightNutritionalRate()[1].toString()); + nutritionalCalories.setWeightNutritionalRate_three(nutritionalCalories.getWeightNutritionalRate()[2].toString()); + for (String key : nutriAttrNameArray) { + if("targetEveryWeightHeat".equals(key)){ + data.put(key, nutritionalCalories.getTargetEveryWeightHeat()[0].toString()+"-"+nutritionalCalories.getTargetEveryWeightHeat()[1].toString()); + } + if("standardEveryWeightHeat".equals(key)){ + data.put(key, nutritionalCalories.getStandardEveryWeightHeat()[0].toString()+"-"+nutritionalCalories.getStandardEveryWeightHeat()[1].toString()); + } + data.put(key, ReflectUtils.getFieldValueByFieldName(key, nutritionalCalories)); + } + return data; + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java index e1a89986b..b253bcf45 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java @@ -32,6 +32,13 @@ public class NutritionalUtils { nutritionalCalories.setNutritionalHeat(nutritionalHeatAndQuality[0]); nutritionalCalories.setNutritionalQuality(nutritionalHeatAndQuality[1]); nutritionalCalories.setWeightNutritionalRate(HealthyUtils.calculateNutritionEveryWeight(nutritionalHeatAndQuality[1], nutritionalCalories.getWeight())); + //活动因子 + nutritionalCalories.setActivityFactor(HealthyUtils.activityFactor); + Long[] heatArray = HealthyUtils.calculateWithoutExerciseHeat(nutritionalCalories.getMetabolizeHeat()); + //不运动热量 + nutritionalCalories.setWithoutExerciseHeat(heatArray[0].intValue()); + //运动热量 + nutritionalCalories.setExerciseHeat(heatArray[1].intValue()); } return nutritionalCalories; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/PdfUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/PdfUtils.java new file mode 100644 index 000000000..41c96e36a --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/PdfUtils.java @@ -0,0 +1,70 @@ +package com.stdiet.custom.utils; + +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.pdf.*; +import com.itextpdf.text.Document; +import com.stdiet.common.core.domain.AjaxResult; + +import java.io.ByteArrayOutputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Map; + +public class PdfUtils { + + /** + * 生成PDF + * @param templatePath PDF模板文件路径 + * @param filePath 目标文件路径 + * @param data 数据 + * @return + */ + public static AjaxResult generatePdfFile(String templatePath, String filePath, Map data){ + AjaxResult ajaxResult = AjaxResult.success(); + + PdfReader reader; + FileOutputStream out; + ByteArrayOutputStream bos; + PdfStamper stamper; + + try { + out = new FileOutputStream(filePath);// 输出流到新的pdf,没有b2.pdf时会创建 + reader = new PdfReader(templatePath);// 读取pdf模板 + bos = new ByteArrayOutputStream(); + stamper = new PdfStamper(reader, bos); + AcroFields form = stamper.getAcroFields(); + + form.addSubstitutionFont(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED)); + for(String key : data.keySet()){ + form.setField(key, data.get(key), true); + } + stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为true + stamper.close(); + + Document doc = new Document(); + + PdfCopy copy = new PdfCopy(doc, out); + doc.open(); + PdfImportedPage importPage = null; + for (int i = 1; i <= reader.getNumberOfPages(); i++) { + importPage = copy + .getImportedPage(new PdfReader(bos.toByteArray()), i); + copy.addPage(importPage); + } + doc.close(); + + //Runtime.getRuntime().exec("chmod 644 " + filePath); + } catch (FileNotFoundException e) { + e.printStackTrace(); + ajaxResult = AjaxResult.error(); + } catch (IOException e) { + e.printStackTrace(); + ajaxResult = AjaxResult.error(); + } catch (DocumentException e) { + e.printStackTrace(); + ajaxResult = AjaxResult.error(); + } + return ajaxResult; + } +} diff --git a/stdiet-ui/src/api/custom/healthy.js b/stdiet-ui/src/api/custom/healthy.js index 473401e9c..f4b718818 100644 --- a/stdiet-ui/src/api/custom/healthy.js +++ b/stdiet-ui/src/api/custom/healthy.js @@ -61,4 +61,14 @@ export function download(fileName) { }) } +// 生成健康体征报告 +export function generateHealthyReport(healthyDetail) { + return request({ + url: '/custom/healthy/generateHealthyReport', + method: 'post', + data: healthyDetail + }) +} + + diff --git a/stdiet-ui/src/components/PhysicalSignsDialog/index.vue b/stdiet-ui/src/components/PhysicalSignsDialog/index.vue index be164b16f..7f39b74b6 100644 --- a/stdiet-ui/src/components/PhysicalSignsDialog/index.vue +++ b/stdiet-ui/src/components/PhysicalSignsDialog/index.vue @@ -3,6 +3,7 @@

+ 生成报告 修改备注 修改信息 删除信息 @@ -75,6 +76,7 @@ + + diff --git a/stdiet-ui/src/views/custom/recipesShow/MenuDetail/NutriComputeCom/index.vue b/stdiet-ui/src/views/custom/recipesShow/MenuDetail/NutriComputeCom/index.vue new file mode 100644 index 000000000..cff52f37c --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesShow/MenuDetail/NutriComputeCom/index.vue @@ -0,0 +1,159 @@ + + + diff --git a/stdiet-ui/src/views/custom/recipesShow/MenuDetail/index.vue b/stdiet-ui/src/views/custom/recipesShow/MenuDetail/index.vue new file mode 100644 index 000000000..17d7741f1 --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesShow/MenuDetail/index.vue @@ -0,0 +1,141 @@ + + + diff --git a/stdiet-ui/src/views/custom/recipesShow/PlanDrawer/index.vue b/stdiet-ui/src/views/custom/recipesShow/PlanDrawer/index.vue new file mode 100644 index 000000000..1a6cf3d92 --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesShow/PlanDrawer/index.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/stdiet-ui/src/views/custom/recipesShow/UserInfoDrawer/index.vue b/stdiet-ui/src/views/custom/recipesShow/UserInfoDrawer/index.vue new file mode 100644 index 000000000..bc8e392b1 --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesShow/UserInfoDrawer/index.vue @@ -0,0 +1,84 @@ + + + diff --git a/stdiet-ui/src/views/custom/recipesShow/index.vue b/stdiet-ui/src/views/custom/recipesShow/index.vue new file mode 100644 index 000000000..7f4a37f14 --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesShow/index.vue @@ -0,0 +1,161 @@ + + + diff --git a/stdiet-ui/src/views/custom/recipesShow/utils.js b/stdiet-ui/src/views/custom/recipesShow/utils.js new file mode 100644 index 000000000..14c1e5943 --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesShow/utils.js @@ -0,0 +1,42 @@ +export function getProcessMenuData(menuData) { + return menuData.reduce((arr, cur) => { + if ( + cur.dishesId > -1 && + cur.name && + cur.igdList.length > 0 && + cur.type !== "0" + ) { + arr.push({ + id: cur.id, + dishesId: cur.dishesId, + name: cur.name, + menuId: cur.menuId, + methods: cur.methods, + type: cur.type, + isMain: cur.isMain, + igdList: cur.igdList.reduce((igdArr, igdData) => { + if (igdData.id > 0) { + const tarDetail = cur.detail.find(obj => obj.id === igdData.id); + igdArr.push({ + id: igdData.id, + name: igdData.name, + carbonRatio: igdData.carbonRatio, + fatRatio: igdData.fatRatio, + proteinRatio: igdData.proteinRatio, + cusUnit: tarDetail ? tarDetail.cus_unit : igdData.cusUnit, + cusWeight: tarDetail + ? parseFloat(tarDetail.cus_weight) + : igdData.cusWeight, + weight: tarDetail ? parseFloat(tarDetail.weight) : igdData.weight, + notRec: igdData.notRec, + rec: igdData.rec, + type: igdData.type + }); + } + return igdArr; + }, []) + }); + } + return arr; + }, []); +} diff --git a/stdiet-ui/src/views/custom/subhealthy/investigation/index.vue b/stdiet-ui/src/views/custom/subhealthy/investigation/index.vue index 3e1455941..4798dfc6f 100644 --- a/stdiet-ui/src/views/custom/subhealthy/investigation/index.vue +++ b/stdiet-ui/src/views/custom/subhealthy/investigation/index.vue @@ -1,33 +1,71 @@ From faa1df53e1db1163eee9c6f39e1498b657d7fd67 Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Fri, 26 Feb 2021 20:27:38 +0800 Subject: [PATCH 03/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stdiet-ui/src/api/system/dict/data.js | 49 ++++++++++++++------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/stdiet-ui/src/api/system/dict/data.js b/stdiet-ui/src/api/system/dict/data.js index d7aca8923..0c2043a9d 100644 --- a/stdiet-ui/src/api/system/dict/data.js +++ b/stdiet-ui/src/api/system/dict/data.js @@ -1,61 +1,64 @@ -import request from '@/utils/request' +import request from "@/utils/request"; // 查询字典数据列表 export function listData(query) { return request({ - url: '/system/dict/data/list', - method: 'get', + url: "/system/dict/data/list", + method: "get", params: query - }) + }); } // 查询字典数据详细 export function getData(dictCode) { return request({ - url: '/system/dict/data/' + dictCode, - method: 'get' - }) + url: "/system/dict/data/" + dictCode, + method: "get" + }); } // 根据字典类型查询字典数据信息 export function getDicts(dictType) { return request({ - url: '/system/dict/data/type/' + dictType, - method: 'get' - }) + url: "/system/dict/data/type/" + dictType, + method: "get", + headers: { + isToken: false + } + }); } // 新增字典数据 export function addData(data) { return request({ - url: '/system/dict/data', - method: 'post', + url: "/system/dict/data", + method: "post", data: data - }) + }); } // 修改字典数据 export function updateData(data) { return request({ - url: '/system/dict/data', - method: 'put', + url: "/system/dict/data", + method: "put", data: data - }) + }); } // 删除字典数据 export function delData(dictCode) { return request({ - url: '/system/dict/data/' + dictCode, - method: 'delete' - }) + url: "/system/dict/data/" + dictCode, + method: "delete" + }); } // 导出字典数据 export function exportData(query) { return request({ - url: '/system/dict/data/export', - method: 'get', + url: "/system/dict/data/export", + method: "get", params: query - }) -} \ No newline at end of file + }); +} From d803e13ca30de8d2d098fe8bea71d56e237bd8ce Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Fri, 26 Feb 2021 20:45:30 +0800 Subject: [PATCH 04/35] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/custom/SysWapController.java | 11 ++++++++++- stdiet-ui/src/api/custom/recipesShow.js | 10 ++++++++++ stdiet-ui/src/api/system/dict/data.js | 5 +---- stdiet-ui/src/utils/request.js | 2 ++ .../src/views/custom/recipesShow/MenuDetail/index.vue | 9 +++++---- stdiet-ui/src/views/custom/recipesShow/index.vue | 2 +- 6 files changed, 29 insertions(+), 10 deletions(-) diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java index 8e6683851..45cb7f108 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java @@ -2,9 +2,9 @@ package com.stdiet.web.controller.custom; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; -import com.stdiet.custom.service.ISysRecipesPlanService; import com.stdiet.custom.service.ISysRecipesService; import com.stdiet.custom.service.ISysWapServices; +import com.stdiet.system.service.ISysDictTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -20,8 +20,12 @@ public class SysWapController extends BaseController { @Autowired ISysRecipesService iSysRecipesService; + @Autowired + ISysDictTypeService iSysDictTypeService; + /** * 客户食谱详情 + * * @param outId * @return */ @@ -39,4 +43,9 @@ public class SysWapController extends BaseController { public AjaxResult dayilyMenu(@PathVariable Long id) { return AjaxResult.success(iSysRecipesService.selectDishesByMenuId(id)); } + + @GetMapping(value = "/dict/{dictType}") + public AjaxResult sysDict(@PathVariable String dictType) { + return AjaxResult.success(iSysDictTypeService.selectDictDataByType(dictType)); + } } diff --git a/stdiet-ui/src/api/custom/recipesShow.js b/stdiet-ui/src/api/custom/recipesShow.js index ecdd3523e..de4d58dc7 100644 --- a/stdiet-ui/src/api/custom/recipesShow.js +++ b/stdiet-ui/src/api/custom/recipesShow.js @@ -29,3 +29,13 @@ export function getRecipesMenuInfoApi(id) { } }); } + +export function getDicts(id) { + return request({ + url: "/wap/dict/" + id, + method: "get", + headers: { + isToken: false + } + }); +} diff --git a/stdiet-ui/src/api/system/dict/data.js b/stdiet-ui/src/api/system/dict/data.js index 0c2043a9d..bd4d851b8 100644 --- a/stdiet-ui/src/api/system/dict/data.js +++ b/stdiet-ui/src/api/system/dict/data.js @@ -21,10 +21,7 @@ export function getData(dictCode) { export function getDicts(dictType) { return request({ url: "/system/dict/data/type/" + dictType, - method: "get", - headers: { - isToken: false - } + method: "get" }); } diff --git a/stdiet-ui/src/utils/request.js b/stdiet-ui/src/utils/request.js index 112d453da..f6261ff03 100644 --- a/stdiet-ui/src/utils/request.js +++ b/stdiet-ui/src/utils/request.js @@ -29,9 +29,11 @@ service.interceptors.request.use(config => { service.interceptors.response.use(res => { // 未设置状态码则默认成功状态 const code = res.data.code || 200; + console.log(res) // 获取错误信息 const msg = errorCode[code] || res.data.msg || errorCode['default'] if (code === 401) { + console.log(code) MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', diff --git a/stdiet-ui/src/views/custom/recipesShow/MenuDetail/index.vue b/stdiet-ui/src/views/custom/recipesShow/MenuDetail/index.vue index 17d7741f1..5f3b87964 100644 --- a/stdiet-ui/src/views/custom/recipesShow/MenuDetail/index.vue +++ b/stdiet-ui/src/views/custom/recipesShow/MenuDetail/index.vue @@ -30,6 +30,7 @@ diff --git a/stdiet-ui/src/components/PhysicalSignsGuidance/index.vue b/stdiet-ui/src/components/PhysicalSignsGuidance/index.vue new file mode 100644 index 000000000..fc3356095 --- /dev/null +++ b/stdiet-ui/src/components/PhysicalSignsGuidance/index.vue @@ -0,0 +1,88 @@ + + + + From 1d7b7cd2598be64daaa123e4fb615c9786a19365 Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Sat, 27 Feb 2021 16:57:45 +0800 Subject: [PATCH 06/35] =?UTF-8?q?=E4=B8=B2=E8=81=94=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/SysRecipesPlanController.java | 6 + .../controller/custom/SysWapController.java | 15 + .../stdiet/custom/domain/SysRecipesPlan.java | 5 + .../custom/mapper/SysRecipesPlanMapper.java | 4 +- .../service/ISysRecipesPlanService.java | 18 +- .../impl/SysRecipesPlanServiceImpl.java | 10 +- .../service/impl/SysRecipesServiceImpl.java | 1 + .../mapper/custom/SysRecipesPlanMapper.xml | 152 ++++---- stdiet-ui/src/api/custom/recipesPlan.js | 33 +- .../components/RecipesPlanDrawer/index.vue | 89 ++++- stdiet-ui/src/router/index.js | 3 +- stdiet-ui/src/store/modules/recipes.js | 75 ++-- stdiet-ui/src/utils/request.js | 1 - .../RecipesView/RecipesAspectCom/index.vue | 49 ++- .../src/views/custom/recipesBuild/index.vue | 12 +- .../src/views/custom/recipesPlan/index.vue | 366 +++--------------- 16 files changed, 388 insertions(+), 451 deletions(-) diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java index b7de225f6..88f35a1f4 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java @@ -57,6 +57,12 @@ public class SysRecipesPlanController extends BaseController return getDataTable(list); } + @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:list')") + @GetMapping(value = "/list/{cusId}") + public AjaxResult getAllPlanByCusId(@PathVariable Long cusId) { + return AjaxResult.success(sysRecipesPlanService.selectPlanListByCusId(cusId)); + } + /** * 获取食谱计划详细信息 */ diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java index 45cb7f108..bb4236852 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java @@ -34,16 +34,31 @@ public class SysWapController extends BaseController { return AjaxResult.success(iSysWapServices.getRecipesPlanListInfo(outId)); } + /** + * 获取用户信息 + * @param outId + * @return + */ @GetMapping(value = "/healthyInfo/{outId}") public AjaxResult healthy(@PathVariable String outId) { return AjaxResult.success(iSysWapServices.getHealthyDataByOutId(outId)); } + /** + * 获取某天食谱菜品 + * @param id + * @return + */ @GetMapping(value = "/recipes/menu/{id}") public AjaxResult dayilyMenu(@PathVariable Long id) { return AjaxResult.success(iSysRecipesService.selectDishesByMenuId(id)); } + /** + * 系统字典 + * @param dictType + * @return + */ @GetMapping(value = "/dict/{dictType}") public AjaxResult sysDict(@PathVariable String dictType) { return AjaxResult.success(iSysDictTypeService.selectDictDataByType(dictType)); diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java index 3251d3bc7..babdade09 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java @@ -28,6 +28,11 @@ public class SysRecipesPlan { private Long cusId; + /** + * 对外的用户id + */ + private String outId; + //客户ID // private Long customerId; diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanMapper.java index 9cdcd751f..a4fb2093f 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanMapper.java @@ -88,9 +88,9 @@ public interface SysRecipesPlanMapper */ List selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan); - List selectPlanListByOutId(String outId); - Long getCusIdByOutId(String outId); List selectRecipesPlanListInfo(String outId); + + List selectPlanListByCusId(Long cusId); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanService.java index 0f333c918..146b1f68b 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanService.java @@ -91,10 +91,26 @@ public interface ISysRecipesPlanService */ List selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan); - List selectPlanListByOutId(String outId); + /** + * 通过outId查询cusId + * @param outId + * @return + */ Long getCusIdByOutId(String outId); + /** + * 通过outId查询食谱计划简要 + * @param outId + * @return + */ List selectRecipesPlanListInfo(String outId); + /** + * 通过客户id查询食谱计划 + * @param cusId + * @return + */ + List selectPlanListByCusId(Long cusId); + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java index 49df25d1c..db6fb1ec8 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java @@ -293,11 +293,6 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { return sysRecipesPlanMapper.selectPlanListByOrderId(sysRecipesPlan); } - @Override - public List selectPlanListByOutId(String outId) { - return sysRecipesPlanMapper.selectPlanListByOutId(outId); - } - @Override public Long getCusIdByOutId(String outId) { return sysRecipesPlanMapper.getCusIdByOutId(outId); @@ -308,4 +303,9 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { return sysRecipesPlanMapper.selectRecipesPlanListInfo(outId); } + @Override + public List selectPlanListByCusId(Long cusId) { + return sysRecipesPlanMapper.selectPlanListByCusId(cusId); + } + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java index 34e0ddb24..9c38d2f2a 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java @@ -54,6 +54,7 @@ public class SysRecipesServiceImpl implements ISysRecipesService { SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); sysRecipesPlan.setId(sysRecipes.getPlanId()); sysRecipesPlan.setRecipesId(sysRecipes.getId()); + sysRecipesPlan.setReviewStatus(1); sysRecipesPlanMapper.updateSysRecipesPlan(sysRecipesPlan); } diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index ce4ece5b7..3a114d26f 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -5,52 +5,53 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - select id, order_id, cus_id, start_date, end_date, start_num_day, end_num_day, recipes_id, send_flag, send_time, create_time, create_by, update_time, update_by, del_flag, review_status from sys_recipes_plan - SELECT srp.id,srp.order_id,srp.recipes_id,srp.start_num_day,srp.end_num_day,srp.cus_id,sc.phone, + SELECT srp.id,srp.order_id,srp.recipes_id,srp.start_num_day,srp.end_num_day,srp.cus_id,sc.phone, su_nutritionist.nick_name nutritionist,su_nutritionist_assis.nick_name AS nutritionist_assis, - srp.start_date,srp.end_date,srp.send_flag,srp.send_time, sc.name as customer - FROM sys_recipes_plan srp - LEFT JOIN sys_order sr ON sr.order_id = srp.order_id - LEFT JOIN sys_customer sc ON sc.id = srp.cus_id - LEFT JOIN sys_user su_nutritionist ON su_nutritionist.user_id = sr.nutritionist_id AND su_nutritionist.del_flag = 0 - LEFT JOIN sys_user su_nutritionist_assis ON su_nutritionist_assis.user_id = sr.nutri_assis_id AND su_nutritionist_assis.del_flag = 0 - WHERE srp.del_flag = 0 and sr.del_flag = 0 - AND srp.order_id = #{orderId} + srp.start_date,srp.end_date,srp.send_flag,srp.send_time, sc.name as customer, srp.review_status + FROM sys_recipes_plan srp + LEFT JOIN sys_order sr ON sr.order_id = srp.order_id + LEFT JOIN sys_customer sc ON sc.id = srp.cus_id + LEFT JOIN sys_user su_nutritionist ON su_nutritionist.user_id = sr.nutritionist_id AND su_nutritionist.del_flag + = 0 + LEFT JOIN sys_user su_nutritionist_assis ON su_nutritionist_assis.user_id = sr.nutri_assis_id AND + su_nutritionist_assis.del_flag = 0 + WHERE srp.del_flag = 0 and sr.del_flag = 0 + AND srp.order_id = #{orderId} AND srp.send_flag = #{sendFlag} - AND (sc.name like concat('%',#{customer},'%') OR sc.phone like concat('%',#{customer},'%')) - AND su_nutritionist.user_id = #{nutritionistId} - AND su_nutritionist_assis.user_id = #{nutritionistAssisId} - AND srp.start_date BETWEEN date_format(#{startDate},'%y%m%d') AND date_format(#{endDate},'%y%m%d') - ORDER BY srp.order_id DESC,srp.id ASC + AND (sc.name like concat('%',#{customer},'%') OR sc.phone like + concat('%',#{customer},'%')) + + AND su_nutritionist.user_id = #{nutritionistId} + AND su_nutritionist_assis.user_id = #{nutritionistAssisId} + AND srp.review_status = #{reviewStatus} + AND srp.start_date BETWEEN date_format(#{startDate},'%y%m%d') + AND date_format(#{endDate},'%y%m%d') + + ORDER BY srp.order_id DESC,srp.id ASC - - + select id, out_id, start_date, end_date, start_num_day, end_num_day, recipes_id, review_status from sys_recipes_plan where cus_id=#{cusId} order by create_time desc - - - - - + + + + + + diff --git a/stdiet-ui/src/api/custom/recipesPlan.js b/stdiet-ui/src/api/custom/recipesPlan.js index 5fe40ae7c..b58401ef8 100644 --- a/stdiet-ui/src/api/custom/recipesPlan.js +++ b/stdiet-ui/src/api/custom/recipesPlan.js @@ -1,36 +1,43 @@ -import request from '@/utils/request' +import request from "@/utils/request"; // 查询食谱计划列表 export function listRecipesPlan(query) { return request({ - url: '/recipes/recipesPlan/list', - method: 'get', + url: "/recipes/recipesPlan/list", + method: "get", params: query - }) + }); } // 查询食谱计划详细 export function getRecipesPlan(id) { return request({ - url: '/recipes/recipesPlan/' + id, - method: 'get' - }) + url: "/recipes/recipesPlan/" + id, + method: "get" + }); } // 修改食谱计划 export function updateRecipesPlan(data) { return request({ - url: '/recipes/recipesPlan', - method: 'put', + url: "/recipes/recipesPlan", + method: "put", data: data - }) + }); } // 导出食谱计划 export function exportRecipesPlan(query) { return request({ - url: '/recipes/recipesPlan/export', - method: 'get', + url: "/recipes/recipesPlan/export", + method: "get", params: query - }) + }); +} + +export function listRecipesPlanByCusId(id) { + return request({ + url: "/recipes/recipesPlan/list/" + id, + method: "get" + }); } diff --git a/stdiet-ui/src/components/RecipesPlanDrawer/index.vue b/stdiet-ui/src/components/RecipesPlanDrawer/index.vue index dbecf5cbb..5ef6b8b44 100644 --- a/stdiet-ui/src/components/RecipesPlanDrawer/index.vue +++ b/stdiet-ui/src/components/RecipesPlanDrawer/index.vue @@ -6,19 +6,60 @@ @closed="handleOnClosed" size="40%" > -
+
客户食谱链接 + + + 查看暂停记录 + + + + + + + + + + + + + + + + 查看暂停记录 + >增加暂停记录 @@ -44,6 +85,8 @@ @@ -78,4 +155,8 @@ export default { /deep/ :focus { outline: 0; } + +.recipes_plan_drawer_wrapper { + height: calc(100vh - 77px); +} diff --git a/stdiet-ui/src/router/index.js b/stdiet-ui/src/router/index.js index 3437271be..04ff11715 100644 --- a/stdiet-ui/src/router/index.js +++ b/stdiet-ui/src/router/index.js @@ -140,9 +140,10 @@ export const constantRoutes = [ ] }, { - path: "/recipes/build", + path: "/recipes/build/:name/:planId", component: resolve => require(["@/views/custom/recipesBuild"], resolve), name: "RecipiesBuild", + props: true, meta: { title: "食谱制作" }, hidden: true }, diff --git a/stdiet-ui/src/store/modules/recipes.js b/stdiet-ui/src/store/modules/recipes.js index f8804023e..84ff42331 100644 --- a/stdiet-ui/src/store/modules/recipes.js +++ b/stdiet-ui/src/store/modules/recipes.js @@ -7,6 +7,7 @@ import { deleteDishesApi, addRecipesApi } from "@/api/custom/recipes"; +import { getRecipesPlan, updateRecipesPlan } from "@/api/custom/recipesPlan"; import { getDicts } from "@/api/system/dict/data"; const oriState = { @@ -23,7 +24,8 @@ const oriState = { typeOptions: [], currentDay: -1, startNum: 0, - endNum: 0 + endNum: 0, + reviewStatus: 0 }; const mutations = { @@ -72,32 +74,55 @@ const mutations = { const actions = { async init({ commit, dispatch }, payload) { - return new Promise((res, rej) => { - // console.log(payload); - // - commit("updateStateData", payload); - // - getDicts("cus_cus_unit").then(response => { - commit("updateStateData", { cusUnitOptions: response.data }); - }); - getDicts("cus_cus_weight").then(response => { - commit("updateStateData", { cusWeightOptions: response.data }); - }); - getDicts("cus_dishes_type").then(response => { - commit("updateStateData", { typeOptions: response.data }); - }); + // console.log(payload); + const planResponse = await getRecipesPlan(payload.planId); + const { + startNumDay, + endNumDay, + recipesId, + cusId, + reviewStatus + } = planResponse.data; + commit("updateStateData", { + cusId, + recipesId, + reviewStatus, + planId: payload.planId, + startNum: startNumDay, + endNum: endNumDay + }); + getDicts("cus_cus_unit").then(response => { + commit("updateStateData", { cusUnitOptions: response.data }); + }); + getDicts("cus_cus_weight").then(response => { + commit("updateStateData", { cusWeightOptions: response.data }); + }); + getDicts("cus_dishes_type").then(response => { + commit("updateStateData", { typeOptions: response.data }); + }); + + return new Promise((res, rej) => { // 健康数据 - if (payload.cusId) { - dispatch("getHealthyData", payload).catch(err => rej(err)); + if (cusId) { + dispatch("getHealthyData", { cusId }).catch(err => rej(err)); } // 食谱数据 - if (payload.recipesId) { - dispatch("getRecipesInfo", payload).catch(err => rej(err)); + if (recipesId) { + dispatch("getRecipesInfo", { recipesId }).catch(err => rej(err)); } }); }, + async updateReviewStatus({ commit, state }, payload) { + const response = await updateRecipesPlan({ + id: state.planId, + reviewStatus: payload.reviewStatus + }); + if (response.code === 200) { + commit("updateStateData", payload); + } + }, async getHealthyData({ commit }, payload) { commit("updateStateData", { healthDataLoading: true }); const healthyDataResult = await getCustomerPhysicalSignsByCusId( @@ -127,16 +152,14 @@ const actions = { const recipesDataResult = await getRecipesApi(payload.recipesId); let recipesData = []; if (recipesDataResult.code === 200) { - const { endNum, startNum } = state; - let length = null; - if (endNum && startNum) { - length = endNum - startNum; - } + const { endNum, startNum, recipesId } = state; + // 计算 + let length = endNum - startNum; recipesData = recipesDataResult.data.reduce((outArr, dayData, idx) => { - if (!length || (length && length >= idx)) { + if (!recipesId || length >= idx) { outArr.push({ id: dayData.id, - numDay: startNum ? startNum + idx : dayData.numDay, + numDay: !recipesId ? startNum + idx : dayData.numDay, dishes: dayData.dishes.reduce((arr, cur) => { if ( cur.dishesId > -1 && diff --git a/stdiet-ui/src/utils/request.js b/stdiet-ui/src/utils/request.js index f6261ff03..90df1b246 100644 --- a/stdiet-ui/src/utils/request.js +++ b/stdiet-ui/src/utils/request.js @@ -29,7 +29,6 @@ service.interceptors.request.use(config => { service.interceptors.response.use(res => { // 未设置状态码则默认成功状态 const code = res.data.code || 200; - console.log(res) // 获取错误信息 const msg = errorCode[code] || res.data.msg || errorCode['default'] if (code === 401) { diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue index a74c628b6..26f66188a 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue @@ -4,6 +4,31 @@ :style="`height: ${collapse ? 30 : 200}px`" >
+ +
+ 审核通过 + 未审核通过 +
+ + {{ reviewStatus === 1 ? "未审核" : "已审核" }} + +
生成食谱 - {{ - `${collapse ? "展开分析" : "收起分析"}` - }} + + {{ `${collapse ? "展开" : "收起"}` }} + +
@@ -79,6 +113,11 @@ export default { .header { text-align: right; height: 30px; + + .arrow_icon { + transition: all 0.3s; + transform-origin: center center; + } } .content { diff --git a/stdiet-ui/src/views/custom/recipesBuild/index.vue b/stdiet-ui/src/views/custom/recipesBuild/index.vue index 9a557b1e3..c8bdba22b 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/index.vue @@ -1,5 +1,5 @@ @@ -219,121 +182,11 @@ :limit.sync="queryParams.pageSize" @pagination="getList" /> - - - - - - - - - - - - - - - - - - - - - - - - - - 搜索 - - - - - - - - - - - - - - - - - - - - - - - -
+ + + From f92e07f1edf6fe600183364f1c7e6bb0c71db323 Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Mon, 1 Mar 2021 19:00:01 +0800 Subject: [PATCH 09/35] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=81=E6=8F=90=E6=88=90=E5=88=86=E4=B8=BA=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E3=80=81=E6=9C=AA=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/SysCommisionController.java | 1 + .../controller/custom/SysOrderController.java | 17 ++++ .../stdiet/custom/domain/SysCommision.java | 86 +------------------ .../com/stdiet/custom/domain/SysOrder.java | 4 + .../custom/dto/request/SysOrderCommision.java | 25 ++++++ .../custom/mapper/SysCommisionMapper.java | 8 +- .../stdiet/custom/mapper/SysOrderMapper.java | 3 +- .../custom/service/ISysCommisionService.java | 2 - .../service/ISysCommissionDayService.java | 1 + .../service/impl/SysCommisionServiceImpl.java | 5 -- .../impl/SysCommissionDayServiceImpl.java | 3 +- .../com/stdiet/custom/utils/OrderUtils.java | 10 +++ .../mapper/custom/SysCommisionMapper.xml | 15 +++- .../mapper/custom/SysOrderMapper.xml | 27 +++++- stdiet-ui/src/components/OrderAdd/index.vue | 2 +- stdiet-ui/src/components/OrderEdit/index.vue | 2 +- stdiet-ui/src/utils/orderType.js | 2 +- .../views/custom/commision/detail/index.vue | 21 +++++ .../custom/commision/detail_day/index.vue | 21 +++++ stdiet-ui/src/views/custom/customer/index.vue | 8 +- stdiet-ui/src/views/custom/order/index.vue | 51 +++++++++-- 21 files changed, 207 insertions(+), 107 deletions(-) create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SysOrderCommision.java diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCommisionController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCommisionController.java index defba24c1..c7fd11182 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCommisionController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCommisionController.java @@ -5,6 +5,7 @@ import java.math.RoundingMode; import java.util.List; import com.stdiet.custom.domain.SysCommissionDayDetail; +import com.stdiet.custom.dto.request.SysOrderCommision; import com.stdiet.custom.service.ISysCommissionDayService; import com.stdiet.framework.web.domain.server.Sys; import com.stdiet.system.domain.CusSalesman; diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderController.java index de7b68781..8bf63065d 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderController.java @@ -1,5 +1,6 @@ package com.stdiet.web.controller.custom; +import com.alibaba.fastjson.JSONArray; import com.stdiet.common.annotation.Log; import com.stdiet.common.core.domain.AjaxResult; import com.stdiet.common.core.domain.entity.SysUser; @@ -19,6 +20,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.net.URLDecoder; import java.time.temporal.ChronoUnit; import java.util.List; @@ -47,6 +49,7 @@ public class SysOrderController extends OrderBaseController { @GetMapping("/list") public OrderTableDataInfo list(SysOrder sysOrder) { startPage(); + dealOrderType(sysOrder); List list = sysOrderService.selectSysOrderList(sysOrder); List userList = userService.selectAllUser(); BigDecimal totalAmount = sysOrderService.selectAllOrderAmount(sysOrder); @@ -68,6 +71,20 @@ public class SysOrderController extends OrderBaseController { return getOrderDataTable(list, totalAmount); } + /** + * 处理订单类型 + * @param sysOrder + */ + private void dealOrderType(SysOrder sysOrder) { + if(StringUtils.isNotEmpty(sysOrder.getOrderType())){ + try { + JSONArray array = JSONArray.parseArray(URLDecoder.decode(sysOrder.getOrderType(),"UTF-8")); + sysOrder.setSearchOrderTypeArray(array.size() > 0 ? array : null); + }catch (Exception e){ + e.printStackTrace(); + } + } + } /** * 导出销售订单列表 diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java index 3fa6a8c45..a1fe6f18a 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java @@ -1,5 +1,6 @@ package com.stdiet.custom.domain; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.stdiet.common.annotation.Excel; @@ -13,6 +14,7 @@ import java.math.BigDecimal; * @author wonder * @date 2020-09-24 */ +@Data public class SysCommision extends BaseEntity { private static final long serialVersionUID = 1L; @@ -58,86 +60,6 @@ public class SysCommision extends BaseEntity { @Excel(name = "提成", scale = 2) private BigDecimal commision; - public BigDecimal getCommision() { - return commision; - } - - public void setCommision(BigDecimal commision) { - this.commision = commision; - } - - public Long getPostId() { - return postId; - } - - public void setPostId(Long postId) { - this.postId = postId; - } - - public void setPostName(String postName) { - this.postName = postName; - } - - public String getPostName() { - return postName; - } - - public void setRuleId(Long ruleId) { - this.ruleId = ruleId; - } - - public Long getRuleId() { - return ruleId; - } - - public void setUserId(Long userId) { - this.userId = userId; - } - - public Long getUserId() { - return userId; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public String getUserName() { - return userName; - } - - public void setAmount(BigDecimal amount) { - this.amount = amount; - } - - public BigDecimal getAmount() { - return amount; - } - - public void setRate(Float rate) { - this.rate = rate; - } - - public Float getRate() { - return rate; - } - - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("ruleId", getRuleId()) - .append("userId", getUserId()) - .append("userName", getUserName()) - .append("postId", getPostId()) - .append("postName", getPostName()) - .append("amount", getAmount()) - .append("commision", getCommision()) - .append("rate", getRate()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } + //订单审核状态 + private String reviewStatus; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java index 797c799d0..07534dbd4 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; +import com.alibaba.fastjson.JSONArray; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import com.stdiet.common.annotation.Excel; @@ -269,6 +270,9 @@ public class SysOrder extends BaseEntity { //拆分比例,如:1,9就是按照比例10%、90%拆分,非持久化字段 private String nutritionistRate; + //订单查询时的订单类型二维数组 + private JSONArray searchOrderTypeArray; + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SysOrderCommision.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SysOrderCommision.java new file mode 100644 index 000000000..c29ad458c --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SysOrderCommision.java @@ -0,0 +1,25 @@ +package com.stdiet.custom.dto.request; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SysOrderCommision implements Serializable { + + private static final long serialVersionUID = 1L; + + //后台用户ID + private Long userId; + + //岗位ID + private Long postId; + + //订单审核状态 + private String reviewStatus; + + //订单截止结束时间 + private String endTime; + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCommisionMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCommisionMapper.java index cca1dbfc3..d2b211970 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCommisionMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCommisionMapper.java @@ -2,6 +2,7 @@ package com.stdiet.custom.mapper; import java.util.List; import com.stdiet.custom.domain.SysCommision; +import com.stdiet.custom.dto.request.SysOrderCommision; /** * 业务提成比例Mapper接口 @@ -61,5 +62,10 @@ public interface SysCommisionMapper public List selectSysCommisionDetail(SysCommision sysCommision); - List selectSysCommisionDayDetail(SysCommision sysCommision); + /** + * 查询售后、营养师用户信息 + * @param sysCommision + * @return + */ + List getAfterSaleAndNutri(SysCommision sysCommision); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java index 3782af713..e23a0259e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java @@ -6,6 +6,7 @@ import java.util.List; import com.stdiet.custom.domain.SysCommision; import com.stdiet.custom.domain.SysCommissionDayDetail; import com.stdiet.custom.domain.SysOrder; +import com.stdiet.custom.dto.request.SysOrderCommision; import org.apache.ibatis.annotations.Param; /** @@ -72,7 +73,7 @@ public interface SysOrderMapper public BigDecimal selectAllOrderAmount(SysOrder sysOrder); /** - * 获取订单信息 + * 获取订单信息(按天提成计算) * @return */ List selectSimpleOrderMessage(SysCommision sysCommision); diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommisionService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommisionService.java index e39a7ae56..2a121d1bb 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommisionService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommisionService.java @@ -62,6 +62,4 @@ public interface ISysCommisionService public int deleteSysCommisionById(Long ruleId); public List selectSysCommisionDetail(SysCommision sysCommision); - - List selectSysCommisionDayDetail(SysCommision sysCommision); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommissionDayService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommissionDayService.java index e5b48559b..cb92b0c40 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommissionDayService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommissionDayService.java @@ -4,6 +4,7 @@ import com.stdiet.custom.domain.SysCommision; import com.stdiet.custom.domain.SysCommissionDayDetail; import com.stdiet.custom.domain.SysOrder; import com.stdiet.custom.domain.SysOrderCommisionDayDetail; +import com.stdiet.custom.dto.request.SysOrderCommision; import java.time.LocalDate; import java.util.Date; diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommisionServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommisionServiceImpl.java index b043f756e..8cfa7824e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommisionServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommisionServiceImpl.java @@ -98,9 +98,4 @@ public class SysCommisionServiceImpl implements ISysCommisionService public List selectSysCommisionDetail(SysCommision sysCommision) { return sysCommisionMapper.selectSysCommisionDetail(sysCommision); } - - @Override - public List selectSysCommisionDayDetail(SysCommision sysCommision){ - return sysCommisionMapper.selectSysCommisionDayDetail(sysCommision); - } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java index 471ba092f..95cc237a1 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java @@ -3,6 +3,7 @@ package com.stdiet.custom.service.impl; import com.alibaba.fastjson.JSONArray; import com.stdiet.common.utils.DateUtils; import com.stdiet.custom.domain.*; +import com.stdiet.custom.dto.request.SysOrderCommision; import com.stdiet.custom.mapper.SysCommisionMapper; import com.stdiet.custom.mapper.SysOrderMapper; import com.stdiet.custom.mapper.SysOrderPauseMapper; @@ -32,7 +33,7 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService { public List calculateCommissionByDay(SysCommision sysCommision){ List result = new ArrayList<>(); //查询用户 - List list = sysCommisionMapper.selectSysCommisionDayDetail(sysCommision); + List list = sysCommisionMapper.getAfterSaleAndNutri(sysCommision); //合计 SysCommissionDayDetail total = new SysCommissionDayDetail(); total.setTotalCommissionAmount(new BigDecimal(0)); diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/OrderUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/OrderUtils.java index d536639ce..fe82b06f3 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/OrderUtils.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/OrderUtils.java @@ -10,6 +10,8 @@ public class OrderUtils { private static final String[] orderMoneyTypeArray = {"全款单","定金单","尾款单"}; + private static final String[] orderMainTypeArray = {"主单","副单"}; + /** * 根据订单对象获取订单类型名称 * @param sysOrder @@ -18,8 +20,16 @@ public class OrderUtils { public static final String getOrderTypeName(SysOrder sysOrder){ String orderTypeName = ""; orderTypeName += orderTypeArray[Integer.parseInt(sysOrder.getOrderType())]; + //比例拆分单需要确认出主单副单 + /*if("1".equals(sysOrder.getOrderType())){ + orderTypeName += "("+(sysOrder.getMainOrderId().intValue() == 0 ? orderMainTypeArray[0] : orderMainTypeArray[1])+")"; + }*/ orderTypeName += "/"+orderCountTypeArray[Integer.parseInt(sysOrder.getOrderCountType())]; orderTypeName += "/"+orderMoneyTypeArray[Integer.parseInt(sysOrder.getOrderMoneyType())]; + //判断是不是二开提成单 + if("1".equals(sysOrder.getOrderCountType()) && sysOrder.getAfterSaleCommissOrder().intValue() == 1){ + orderTypeName += "/提成单"; + } return orderTypeName; } diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml index 7ba3957bd..b4b9eebe8 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml @@ -32,7 +32,9 @@ SELECT ${column} AS user_id, ${postId} AS post_id, SUM(amount) AS amount FROM sys_order WHERE ${column} IS NOT NULL AND ${column} <> 0 AND del_flag = 0 - AND review_status = 'yes' + + AND review_status = #{reviewStatus} + AND date_format(order_time,'%y%m%d') >= date_format(${beginTime},'%y%m%d') @@ -47,6 +49,7 @@ JOIN ( + @@ -54,6 +57,7 @@ UNION + @@ -61,6 +65,7 @@ UNION + @@ -68,6 +73,7 @@ UNION + @@ -75,6 +81,7 @@ UNION + @@ -82,6 +89,7 @@ UNION + @@ -89,6 +97,7 @@ UNION + @@ -96,6 +105,7 @@ UNION + @@ -188,7 +198,8 @@ - SELECT su.user_id,su.nick_name as user_name,sp.post_id, sp.post_code,sp.post_name FROM sys_user su LEFT JOIN sys_user_post sup ON sup.user_id = su.user_id LEFT JOIN sys_post sp ON sp.post_id = sup.post_id diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml index 04006ff8a..e2c08582a 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml @@ -103,6 +103,8 @@ and del_flag = 0 + + AND after_sale_commiss_order = 0 @@ -139,6 +141,26 @@ and 0 > amount + + + + ( + + + order_type = #{type} + + + order_count_type = #{type} + + + order_money_type = #{type} + + + ) + + + + and o.del_flag = 0 order by order_time desc @@ -365,7 +387,10 @@ from sys_order o left join sys_user su_sale on su_sale.user_id = o.after_sale_id and su_sale.del_flag = 0 left join sys_user su_nutritionist on su_nutritionist.user_id = o.nutritionist_id and su_nutritionist.del_flag = 0 - where review_status = 'yes' and o.order_time >= '2021-01-01' and o.del_flag = 0 + where o.order_time >= '2021-01-01' and o.del_flag = 0 + + and review_status = #{reviewStatus} + and (su_sale.user_id = #{userId} or su_nutritionist.user_id = #{userId}) diff --git a/stdiet-ui/src/components/OrderAdd/index.vue b/stdiet-ui/src/components/OrderAdd/index.vue index 6e2c4e562..5c1faa71e 100644 --- a/stdiet-ui/src/components/OrderAdd/index.vue +++ b/stdiet-ui/src/components/OrderAdd/index.vue @@ -37,7 +37,7 @@ - + diff --git a/stdiet-ui/src/components/OrderEdit/index.vue b/stdiet-ui/src/components/OrderEdit/index.vue index f4e34b65f..72849f5f8 100644 --- a/stdiet-ui/src/components/OrderEdit/index.vue +++ b/stdiet-ui/src/components/OrderEdit/index.vue @@ -16,7 +16,7 @@ - + diff --git a/stdiet-ui/src/utils/orderType.js b/stdiet-ui/src/utils/orderType.js index 0265c859f..9f40a0fb7 100644 --- a/stdiet-ui/src/utils/orderType.js +++ b/stdiet-ui/src/utils/orderType.js @@ -25,7 +25,7 @@ export const orderCountTypeArray = [ } ] -//订单类型 +//订单类型(订单新增) export const orderTypeArray = [ { value: 0, diff --git a/stdiet-ui/src/views/custom/commision/detail/index.vue b/stdiet-ui/src/views/custom/commision/detail/index.vue index 30d219235..3c9e56b93 100644 --- a/stdiet-ui/src/views/custom/commision/detail/index.vue +++ b/stdiet-ui/src/views/custom/commision/detail/index.vue @@ -48,6 +48,21 @@ > + + + + + { + this.reviewStatusOptions = response.data; + }); }, methods: { /** 查询业务提成比例列表 */ diff --git a/stdiet-ui/src/views/custom/commision/detail_day/index.vue b/stdiet-ui/src/views/custom/commision/detail_day/index.vue index a4dd3ae47..af3232316 100644 --- a/stdiet-ui/src/views/custom/commision/detail_day/index.vue +++ b/stdiet-ui/src/views/custom/commision/detail_day/index.vue @@ -48,6 +48,21 @@ > + + + + + { + this.reviewStatusOptions = response.data; + }); }, methods: { /** 查询业务提成比例列表 */ diff --git a/stdiet-ui/src/views/custom/customer/index.vue b/stdiet-ui/src/views/custom/customer/index.vue index 9d05de70d..5fb52682d 100644 --- a/stdiet-ui/src/views/custom/customer/index.vue +++ b/stdiet-ui/src/views/custom/customer/index.vue @@ -9,7 +9,7 @@ > - + - + diff --git a/stdiet-ui/src/views/custom/order/index.vue b/stdiet-ui/src/views/custom/order/index.vue index 997aeaecc..757d69d80 100644 --- a/stdiet-ui/src/views/custom/order/index.vue +++ b/stdiet-ui/src/views/custom/order/index.vue @@ -11,7 +11,7 @@ + + + + + 总计:{{ toThousands(this.totalAmount) }} 元总计收款(已除去二开售后提成金额):{{ toThousands(this.totalAmount) }} 元 @@ -459,7 +472,7 @@ import { delOrder, exportOrder, listOrder } from "@/api/custom/order"; import dayjs from "dayjs"; import orderPause from "./orderPause"; - +import * as orderTypeData from "@/utils/orderType"; import OrderDetail from "@/components/OrderDetail"; import OrderEdit from "@/components/OrderEdit"; import AutoHideMessage from "@/components/AutoHideMessage"; @@ -510,6 +523,9 @@ export default { conditioningProjectIdOption: [], // 审核状态 reviewStatusOptions: [], + //订单类型 + orderTypeOptions: orderTypeData["orderTypeArray"], + orderTypeProps: { multiple: true,expandTrigger: 'click' },//,checkStrictly:true // 查询参数 queryParams: { pageNum: 1, @@ -531,6 +547,8 @@ export default { reviewStatus: null, serveTimeId: null, }, + //查询时选择的订单类型数组 + searchOrderTypeArray: null }; }, computed: { @@ -578,6 +596,9 @@ export default { /** 查询销售订单列表 */ getList() { this.loading = true; + this.queryParams.orderType = this.searchOrderTypeArray != null ? encodeURIComponent(JSON.stringify(this.searchOrderTypeArray)) : null; + console.log(this.queryParams.searchOrderTypeArray); + //this.dealOrderTypeArray(); listOrder(this.addDateRange(this.queryParams, this.daterange)).then( (response) => { this.orderList = response.rows; @@ -586,7 +607,27 @@ export default { this.totalAmount = response.totalAmount; } ); - }, // 收款方式字典翻译 + }, + /*dealOrderTypeArray(){ + this.queryParams.orderType = ""; + this.queryParams.orderCountType = ""; + this.queryParams.orderMoneyType = ""; + if(this.searchOrderTypeArray == null){ + return; + } + this.searchOrderTypeArray.forEach((item,index) => { + if(this.queryParams.orderType.indexOf(item[0]+"") == -1){ + this.queryParams.orderType += this.queryParams.orderType != "" ? (","+item[0]) : item[0]; + } + if(this.queryParams.orderCountType.indexOf(item[1]+"") == -1){ + this.queryParams.orderCountType += this.queryParams.orderCountType != "" ? (","+item[1]) : item[1]; + } + if(this.queryParams.orderMoneyType.indexOf(item[2]+"") == -1){ + this.queryParams.orderMoneyType += this.queryParams.orderMoneyType != "" ? (","+item[2]) : item[2]; + } + }); + },*/ + // 收款方式字典翻译 payTypeIdFormat(row, column) { return this.selectDictLabel(this.payTypeIdOptions, row.payTypeId); }, @@ -711,7 +752,7 @@ export default { return "warning-row"; } return "success-row"; - }, + } }, watch: {}, }; From 3d20c30edc3277de1c6e125dfb9f03dff3b0ba49 Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Mon, 1 Mar 2021 19:04:01 +0800 Subject: [PATCH 10/35] =?UTF-8?q?=E9=A3=9F=E8=B0=B1=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/SysRecipesPlanModelController.java | 68 --- .../custom/SysRecipesTemplateController.java | 71 +++ ...PlanModel.java => SysRecipesTemplate.java} | 13 +- .../mapper/SysRecipesPlanModelMapper.java | 24 - .../mapper/SysRecipesTemplateMapper.java | 23 + .../service/ISysRecipesPlanModelService.java | 25 - .../service/ISysRecipesTemplateService.java | 24 + .../impl/SysRecipesPlanModelServiceImpl.java | 67 --- .../impl/SysRecipesTemplateServiceImpl.java | 70 +++ .../mapper/custom/SysRecipesPlanMapper.xml | 6 +- .../custom/SysRecipesPlanModelMapper.xml | 75 --- .../custom/SysRecipesTemplateMapper.xml | 96 ++++ stdiet-ui/src/api/custom/recipesPlanModel.js | 33 -- stdiet-ui/src/api/custom/recipesTemplate.js | 39 ++ stdiet-ui/src/store/modules/recipes.js | 19 +- .../RecipesView/RecipesAspectCom/index.vue | 6 + .../RecommendView/RecommendView/index.vue | 8 + .../RecommendView/TemplateView/index.vue | 97 ++++ .../recipesBuild/RecommendView/index.vue | 90 ++++ .../custom/recipesBuild/RecommondView.vue | 22 - .../recipesBuild/TemplateInfoView/index.vue | 89 ++++ .../src/views/custom/recipesBuild/index.vue | 18 +- .../src/views/custom/recipesModel/index.vue | 331 ------------- .../views/custom/recipesTemplate/index.vue | 458 ++++++++++++++++++ 24 files changed, 1118 insertions(+), 654 deletions(-) delete mode 100644 stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanModelController.java create mode 100644 stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java rename stdiet-custom/src/main/java/com/stdiet/custom/domain/{SysRecipesPlanModel.java => SysRecipesTemplate.java} (51%) delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanModelMapper.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesTemplateMapper.java delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanModelService.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesTemplateService.java delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanModelServiceImpl.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesTemplateServiceImpl.java delete mode 100644 stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanModelMapper.xml create mode 100644 stdiet-custom/src/main/resources/mapper/custom/SysRecipesTemplateMapper.xml delete mode 100644 stdiet-ui/src/api/custom/recipesPlanModel.js create mode 100644 stdiet-ui/src/api/custom/recipesTemplate.js create mode 100644 stdiet-ui/src/views/custom/recipesBuild/RecommendView/RecommendView/index.vue create mode 100644 stdiet-ui/src/views/custom/recipesBuild/RecommendView/TemplateView/index.vue create mode 100644 stdiet-ui/src/views/custom/recipesBuild/RecommendView/index.vue delete mode 100644 stdiet-ui/src/views/custom/recipesBuild/RecommondView.vue create mode 100644 stdiet-ui/src/views/custom/recipesBuild/TemplateInfoView/index.vue delete mode 100644 stdiet-ui/src/views/custom/recipesModel/index.vue create mode 100644 stdiet-ui/src/views/custom/recipesTemplate/index.vue diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanModelController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanModelController.java deleted file mode 100644 index 6ade85a44..000000000 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanModelController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.stdiet.web.controller.custom; - -import com.stdiet.common.core.controller.BaseController; -import com.stdiet.common.core.domain.AjaxResult; -import com.stdiet.common.core.page.TableDataInfo; -import com.stdiet.custom.domain.SysRecipesPlanModel; -import com.stdiet.custom.service.ISysRecipesPlanModelService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 食谱模板 - * - * @author wonder - * @date 2021-02-27 - */ -@RestController -@RequestMapping("/recipes/model") -public class SysRecipesPlanModelController extends BaseController { - @Autowired - private ISysRecipesPlanModelService iSysRecipesPlanModelService; - - /** - * 查询 - */ - @PreAuthorize("@ss.hasPermi('recipes:recipesModel:list')") - @GetMapping("/list") - public TableDataInfo list(SysRecipesPlanModel sysRecipesPlanModel) { - startPage(); - List list = iSysRecipesPlanModelService.selectRecipesModelListByCondition(sysRecipesPlanModel); - return getDataTable(list); - } - - /** - * 添加 - */ - @PreAuthorize("@ss.hasPermi('recipes:recipesModel:edit')") - @PostMapping("/add") - public AjaxResult add(SysRecipesPlanModel sysRecipesPlanModel) { - return toAjax(iSysRecipesPlanModelService.insertRecipsesModel(sysRecipesPlanModel)); - } - - /** - * 更新 - * - * @param sysRecipesPlanModel - * @return - */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:list')") - @PutMapping(value = "/update") - public AjaxResult update(SysRecipesPlanModel sysRecipesPlanModel) { - return toAjax(iSysRecipesPlanModelService.updateRecipesModel(sysRecipesPlanModel)); - } - - /** - * 删除 - */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:query')") - @DeleteMapping(value = "/delete/{id}") - public AjaxResult delete(@PathVariable("id") Long id) { - return AjaxResult.success(iSysRecipesPlanModelService.removeRecipesModel(id)); - } - - -} \ No newline at end of file diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java new file mode 100644 index 000000000..ffb0c8cca --- /dev/null +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java @@ -0,0 +1,71 @@ +package com.stdiet.web.controller.custom; + +import com.stdiet.common.core.controller.BaseController; +import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.core.page.TableDataInfo; +import com.stdiet.custom.domain.SysRecipesTemplate; +import com.stdiet.custom.service.ISysRecipesTemplateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 食谱模板 + * + * @author wonder + * @date 2021-02-27 + */ +@RestController +@RequestMapping("/recipes/template") +public class SysRecipesTemplateController extends BaseController { + @Autowired + private ISysRecipesTemplateService iSysRecipesTemplateService; + + /** + * 查询 + */ + @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:list')") + @GetMapping("/list") + public TableDataInfo list(SysRecipesTemplate sysRecipesTemplate) { + startPage(); + List list = iSysRecipesTemplateService.selectRecipesTemplateListByCondition(sysRecipesTemplate); + return getDataTable(list); + } + + @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:list')") + @GetMapping(value = "/{id}") + public AjaxResult detail(@PathVariable Long id) { + return AjaxResult.success(iSysRecipesTemplateService.getRecipesTemplateById(id)); + } + + /** + * 添加 + */ + @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:edit')") + @PostMapping("/add") + public AjaxResult add(@RequestBody SysRecipesTemplate sysRecipesTemplate) { + return toAjax(iSysRecipesTemplateService.insertRecipsesTemplate(sysRecipesTemplate)); + } + + /** + * 更新 + */ + @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:list')") + @PutMapping(value = "/update") + public AjaxResult update(@RequestBody SysRecipesTemplate sysRecipesTemplate) { + return toAjax(iSysRecipesTemplateService.updateRecipesTemplate(sysRecipesTemplate)); + } + + /** + * 删除 + */ + @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:query')") + @DeleteMapping(value = "/delete/{id}") + public AjaxResult delete(@PathVariable("id") Long id) { + return AjaxResult.success(iSysRecipesTemplateService.removeRecipesTemplate(id)); + } + + +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlanModel.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesTemplate.java similarity index 51% rename from stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlanModel.java rename to stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesTemplate.java index f491891cd..f09334a9a 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlanModel.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesTemplate.java @@ -1,23 +1,32 @@ package com.stdiet.custom.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data -public class SysRecipesPlanModel { +public class SysRecipesTemplate { Long id; + String name; + Long nutritionistId; + String nutritionist; + Long nutriAssisId; + String nutriAssis; + Long planId; String remark; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date updateTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date createTime; String updateBy; @@ -25,4 +34,6 @@ public class SysRecipesPlanModel { String createBy; Long recipesId; + + Integer reviewStatus; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanModelMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanModelMapper.java deleted file mode 100644 index 12909be6c..000000000 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanModelMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.stdiet.custom.mapper; - -import com.stdiet.custom.domain.SysRecipesPlan; -import com.stdiet.custom.domain.SysRecipesPlanListInfo; -import com.stdiet.custom.domain.SysRecipesPlanModel; - -import java.util.List; - -/** - * 食谱计划Mapper接口 - * - * @author wonder - * @date 2021-02-27 - */ -public interface SysRecipesPlanModelMapper -{ - List selectRecipesModelListByCondition(SysRecipesPlanModel sysRecipesPlanModel); - - int insertRecipsesModel(SysRecipesPlanModel sysRecipesPlanModel); - - int updateRecipesModel(SysRecipesPlanModel sysRecipesPlanModel); - - int removeRecipesModel(Long id); -} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesTemplateMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesTemplateMapper.java new file mode 100644 index 000000000..ca5613d15 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesTemplateMapper.java @@ -0,0 +1,23 @@ +package com.stdiet.custom.mapper; + +import com.stdiet.custom.domain.SysRecipesTemplate; + +import java.util.List; + +/** + * 食谱计划Mapper接口 + * + * @author wonder + * @date 2021-02-27 + */ +public interface SysRecipesTemplateMapper { + List selectRecipesTemplateListByCondition(SysRecipesTemplate sysRecipesTemplate); + + int insertRecipsesTemplate(SysRecipesTemplate sysRecipesTemplate); + + int updateRecipesTemplate(SysRecipesTemplate sysRecipesTemplate); + + int removeRecipesTemplate(Long id); + + SysRecipesTemplate getRecipesTemplateById(Long id); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanModelService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanModelService.java deleted file mode 100644 index f227cc3ce..000000000 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanModelService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.stdiet.custom.service; - -import com.stdiet.custom.domain.SysRecipesPlan; -import com.stdiet.custom.domain.SysRecipesPlanListInfo; -import com.stdiet.custom.domain.SysRecipesPlanModel; - -import java.util.List; - -/** - * 食谱计划Service接口 - * - * @author wonder - * @date 2021-02-27 - */ -public interface ISysRecipesPlanModelService -{ - - List selectRecipesModelListByCondition(SysRecipesPlanModel sysRecipesPlanModel); - - int insertRecipsesModel(SysRecipesPlanModel sysRecipesPlanModel); - - int updateRecipesModel(SysRecipesPlanModel sysRecipesPlanModel); - - int removeRecipesModel(Long id); -} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesTemplateService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesTemplateService.java new file mode 100644 index 000000000..c2ac9c22d --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesTemplateService.java @@ -0,0 +1,24 @@ +package com.stdiet.custom.service; + +import com.stdiet.custom.domain.SysRecipesTemplate; + +import java.util.List; + +/** + * 食谱计划Service接口 + * + * @author wonder + * @date 2021-02-27 + */ +public interface ISysRecipesTemplateService { + + List selectRecipesTemplateListByCondition(SysRecipesTemplate sysRecipesTemplate); + + int insertRecipsesTemplate(SysRecipesTemplate sysRecipesTemplate); + + int updateRecipesTemplate(SysRecipesTemplate sysRecipesTemplate); + + int removeRecipesTemplate(Long id); + + SysRecipesTemplate getRecipesTemplateById(Long id); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanModelServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanModelServiceImpl.java deleted file mode 100644 index f2e5876da..000000000 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanModelServiceImpl.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.stdiet.custom.service.impl; - -import com.stdiet.common.utils.DateUtils; -import com.stdiet.common.utils.SecurityUtils; -import com.stdiet.custom.domain.SysRecipesPlan; -import com.stdiet.custom.domain.SysRecipesPlanModel; -import com.stdiet.custom.mapper.SysRecipesPlanMapper; -import com.stdiet.custom.mapper.SysRecipesPlanModelMapper; -import com.stdiet.custom.service.ISysRecipesPlanModelService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; - -/** - * 食谱计划Service业务层处理 - * - * @author wonder - * @date 2021-02-27 - */ -@Service("sysRecipesPlanModelService") -@Transactional -public class SysRecipesPlanModelServiceImpl implements ISysRecipesPlanModelService { - - @Autowired - SysRecipesPlanModelMapper sysRecipesPlanModelMapper; - - @Autowired - SysRecipesPlanMapper sysRecipesPlanMapper; - - @Override - public List selectRecipesModelListByCondition(SysRecipesPlanModel sysRecipesPlanModel) { - return sysRecipesPlanModelMapper.selectRecipesModelListByCondition(sysRecipesPlanModel); - } - - @Override - public int insertRecipsesModel(SysRecipesPlanModel sysRecipesPlanModel) { - SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); - sysRecipesPlan.setStartNumDay(1); - sysRecipesPlan.setEndNumDay(7); - sysRecipesPlan.setType(1); - int rows = sysRecipesPlanMapper.insertSysRecipesPlan(sysRecipesPlan); - if (rows > 0) { - sysRecipesPlanModel.setCreateBy(SecurityUtils.getUsername()); - sysRecipesPlanModel.setCreateTime(DateUtils.getNowDate()); - sysRecipesPlanModel.setPlanId(sysRecipesPlan.getId()); - return sysRecipesPlanModelMapper.insertRecipsesModel(sysRecipesPlanModel); - } - return 0; - } - - @Override - public int updateRecipesModel(SysRecipesPlanModel sysRecipesPlanModel) { - sysRecipesPlanModel.setUpdateBy(SecurityUtils.getUsername()); - sysRecipesPlanModel.setUpdateTime(DateUtils.getNowDate()); - return sysRecipesPlanModelMapper.updateRecipesModel(sysRecipesPlanModel); - } - - @Override - public int removeRecipesModel(Long id) { - return sysRecipesPlanModelMapper.removeRecipesModel(id); - } - - -} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesTemplateServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesTemplateServiceImpl.java new file mode 100644 index 000000000..ad260731a --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesTemplateServiceImpl.java @@ -0,0 +1,70 @@ +package com.stdiet.custom.service.impl; + +import com.stdiet.common.utils.DateUtils; +import com.stdiet.common.utils.SecurityUtils; +import com.stdiet.common.utils.StringUtils; +import com.stdiet.custom.domain.SysRecipesPlan; +import com.stdiet.custom.domain.SysRecipesTemplate; +import com.stdiet.custom.mapper.SysRecipesPlanMapper; +import com.stdiet.custom.mapper.SysRecipesTemplateMapper; +import com.stdiet.custom.service.ISysRecipesTemplateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 食谱计划Service业务层处理 + * + * @author wonder + * @date 2021-02-27 + */ +@Service("sysRecipesPlanModelService") +@Transactional +public class SysRecipesTemplateServiceImpl implements ISysRecipesTemplateService { + + @Autowired + SysRecipesTemplateMapper sysRecipesTemplateMapper; + + @Autowired + SysRecipesPlanMapper sysRecipesPlanMapper; + + @Override + public List selectRecipesTemplateListByCondition(SysRecipesTemplate sysRecipesTemplate) { + return sysRecipesTemplateMapper.selectRecipesTemplateListByCondition(sysRecipesTemplate); + } + + @Override + public int insertRecipsesTemplate(SysRecipesTemplate sysRecipesTemplate) { + SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); + sysRecipesPlan.setStartNumDay(1); + sysRecipesPlan.setEndNumDay(7); + sysRecipesPlan.setType(1); + sysRecipesPlanMapper.insertSysRecipesPlan(sysRecipesPlan); + if (!StringUtils.isNull(sysRecipesPlan.getId())) { + sysRecipesTemplate.setCreateBy(SecurityUtils.getUsername()); + sysRecipesTemplate.setCreateTime(DateUtils.getNowDate()); + sysRecipesTemplate.setPlanId(sysRecipesPlan.getId()); + return sysRecipesTemplateMapper.insertRecipsesTemplate(sysRecipesTemplate); + } + return 0; + } + + @Override + public int updateRecipesTemplate(SysRecipesTemplate sysRecipesTemplate) { + sysRecipesTemplate.setUpdateBy(SecurityUtils.getUsername()); + sysRecipesTemplate.setUpdateTime(DateUtils.getNowDate()); + return sysRecipesTemplateMapper.updateRecipesTemplate(sysRecipesTemplate); + } + + @Override + public int removeRecipesTemplate(Long id) { + return sysRecipesTemplateMapper.removeRecipesTemplate(id); + } + + @Override + public SysRecipesTemplate getRecipesTemplateById(Long id) { + return sysRecipesTemplateMapper.getRecipesTemplateById(id); + } +} diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index 49e4a3da7..fcee81005 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -86,6 +86,7 @@ update_by, del_flag, review_status, + type, #{orderId}, @@ -104,6 +105,7 @@ #{updateBy}, #{delFlag}, #{reviewStatus}, + #{type}, @@ -163,7 +165,7 @@ select id, out_id, start_date, end_date, start_num_day, end_num_day, recipes_id, review_status from sys_recipes_plan - where cus_id=#{cusId} order by create_time desc + where cus_id=#{cusId} order by id desc - select srpm.id, srpm.nutritionist_id, srpm.nutri_assis_id, srpm.remark, srpm.update_time, - srpm.create_time, srpm.update_by, srpm.create_by, srpm.plan_id, srp.recipes_id, srp.review_status - from sys_recipes_plan_model srpm - left join sys_recipes_plan srp on srp.id = srpm.plan_id - where del_flag = 0 - and nutri_assis_id = #{nutriAssisId} - and nutritionist_id = #{nutritionistId} - and review_status = #{reviewStatus} - order by srpm.create_time desc - - - - insert into sys_recipes_plan_model - - nutri_assis_id, - nutritionist_id, - create_time, - create_by, - update_time, - update_by, - remark, - review_status, - - - #{nutriAssisId}, - #{nutritionistId}, - #{createTime}, - #{createBy}, - #{updateTime}, - #{updateBy}, - #{remark}, - #{reviewStatus}, - - - - - update sys_recipes_plan_model - - nutri_assis_id = #{nutriAssisId}, - nutritionist_id = #{nutritionistId}, - create_time = #{createTime}, - create_by = #{createBy}, - update_time = #{updateTime}, - update_by = #{updateBy}, - remark = #{remark}, - review_status = #{reviewStatus}, - - where id = #{id} - - - - update sys_recipes_plan_model set del_flag=1 where id = #{id} - - - \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesTemplateMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesTemplateMapper.xml new file mode 100644 index 000000000..6a212f21b --- /dev/null +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesTemplateMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into sys_recipes_template + + name, + plan_id, + nutri_assis_id, + nutritionist_id, + create_time, + create_by, + update_time, + update_by, + remark, + + + #{name}, + #{planId}, + #{nutriAssisId}, + #{nutritionistId}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + #{remark}, + + + + + update sys_recipes_template + + name = #{name}, + nutri_assis_id = #{nutriAssisId}, + nutritionist_id = #{nutritionistId}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + remark = #{remark}, + + where id = #{id} + + + + update sys_recipes_template set del_flag=1 where id = #{id} + + + \ No newline at end of file diff --git a/stdiet-ui/src/api/custom/recipesPlanModel.js b/stdiet-ui/src/api/custom/recipesPlanModel.js deleted file mode 100644 index dac431cb8..000000000 --- a/stdiet-ui/src/api/custom/recipesPlanModel.js +++ /dev/null @@ -1,33 +0,0 @@ -import request from "@/utils/request"; - -export function listRecipesModel(query) { - return request({ - url: "/recipes/model/list", - method: "get", - params: query - }); -} - -export function addRecipesModel(data){ - return request({ - url: "/recipes/model/add", - method: "post", - data: data - }); -} - -export function updateRecipesModel(data) { - return request({ - url: "/recipes/model/update", - method: "put", - data: data - }); -} - - -export function deleteRecipesModel(id) { - return request({ - url: "/recipes/model/delete/" + id, - method: "get" - }); -} diff --git a/stdiet-ui/src/api/custom/recipesTemplate.js b/stdiet-ui/src/api/custom/recipesTemplate.js new file mode 100644 index 000000000..4d8167140 --- /dev/null +++ b/stdiet-ui/src/api/custom/recipesTemplate.js @@ -0,0 +1,39 @@ +import request from "@/utils/request"; + +export function listRecipesTemplate(query) { + return request({ + url: "/recipes/template/list", + method: "get", + params: query + }); +} + +export function getRecipesTemplateDetail(id) { + return request({ + url: "/recipes/template/" + id, + method: "get" + }); +} + +export function addRecipesTemplate(data) { + return request({ + url: "/recipes/template/add", + method: "post", + data: data + }); +} + +export function updateRecipesTemplate(data) { + return request({ + url: "/recipes/template/update", + method: "put", + data: data + }); +} + +export function deleteRecipesTemplate(id) { + return request({ + url: "/recipes/template/delete/" + id, + method: "delete" + }); +} diff --git a/stdiet-ui/src/store/modules/recipes.js b/stdiet-ui/src/store/modules/recipes.js index 84ff42331..89c1fef86 100644 --- a/stdiet-ui/src/store/modules/recipes.js +++ b/stdiet-ui/src/store/modules/recipes.js @@ -7,12 +7,14 @@ import { deleteDishesApi, addRecipesApi } from "@/api/custom/recipes"; +import { getRecipesTemplateDetail } from "@/api/custom/recipesTemplate"; import { getRecipesPlan, updateRecipesPlan } from "@/api/custom/recipesPlan"; import { getDicts } from "@/api/system/dict/data"; const oriState = { cusId: undefined, planId: undefined, + temId: undefined, recipesId: undefined, healthyData: {}, healthDataLoading: false, @@ -25,7 +27,8 @@ const oriState = { currentDay: -1, startNum: 0, endNum: 0, - reviewStatus: 0 + reviewStatus: 0, + templateInfo: undefined }; const mutations = { @@ -87,6 +90,7 @@ const actions = { cusId, recipesId, reviewStatus, + temId: payload.temId, planId: payload.planId, startNum: startNumDay, endNum: endNumDay @@ -108,12 +112,25 @@ const actions = { dispatch("getHealthyData", { cusId }).catch(err => rej(err)); } + // 模板信息 + if (payload.temId) { + dispatch("getRecipesTemplate", payload).catch(err => rej(err)); + } + // 食谱数据 if (recipesId) { dispatch("getRecipesInfo", { recipesId }).catch(err => rej(err)); } }); }, + async getRecipesTemplate({ commit, state }, { temId }) { + const response = await getRecipesTemplateDetail(temId); + if (response.code === 200) { + commit("updateStateData", { + templateInfo: response.data + }); + } + }, async updateReviewStatus({ commit, state }, payload) { const response = await updateRecipesPlan({ id: state.planId, diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue index 26f66188a..2c9bdccca 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue @@ -4,6 +4,9 @@ :style="`height: ${collapse ? 30 : 200}px`" >
+ 返回 +
推荐列表
+ + diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecommendView/TemplateView/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecommendView/TemplateView/index.vue new file mode 100644 index 000000000..0a19d3dd4 --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesBuild/RecommendView/TemplateView/index.vue @@ -0,0 +1,97 @@ + + + diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecommendView/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecommendView/index.vue new file mode 100644 index 000000000..2bd6666ab --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesBuild/RecommendView/index.vue @@ -0,0 +1,90 @@ + + + + diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecommondView.vue b/stdiet-ui/src/views/custom/recipesBuild/RecommondView.vue deleted file mode 100644 index 78b706c81..000000000 --- a/stdiet-ui/src/views/custom/recipesBuild/RecommondView.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/stdiet-ui/src/views/custom/recipesBuild/TemplateInfoView/index.vue b/stdiet-ui/src/views/custom/recipesBuild/TemplateInfoView/index.vue new file mode 100644 index 000000000..a12c12f2b --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesBuild/TemplateInfoView/index.vue @@ -0,0 +1,89 @@ + + + diff --git a/stdiet-ui/src/views/custom/recipesBuild/index.vue b/stdiet-ui/src/views/custom/recipesBuild/index.vue index c8bdba22b..93a53752a 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/index.vue @@ -7,10 +7,11 @@ :name="healthyData.name" :analyseData="analyseData" /> - +
- + +
@@ -27,16 +28,21 @@ const { import HealthyView from "@/components/HealthyView"; import BodySignView from "@/components/BodySignView"; import RecipesView from "./RecipesView/index"; -import RecommondView from "./RecommondView"; +import RecommendView from "./RecommendView"; +import TemplateInfoView from "./TemplateInfoView"; export default { name: "BuildRecipies", data() { - return {}; + const { temId } = this.$route.query; + return { + temId, + }; }, mounted() { this.init({ planId: this.planId, + temId: this.temId, }).catch((err) => { this.$message.error(err.message); }); @@ -49,13 +55,15 @@ export default { HealthyView, BodySignView, RecipesView, - RecommondView, + RecommendView, + TemplateInfoView, }, props: ["name", "planId"], computed: { ...mapState([ "healthyData", "healthyDataType", + "templateInfo", "recipesData", "recipesDataLoading", "healthDataLoading", diff --git a/stdiet-ui/src/views/custom/recipesModel/index.vue b/stdiet-ui/src/views/custom/recipesModel/index.vue deleted file mode 100644 index 1a1b71554..000000000 --- a/stdiet-ui/src/views/custom/recipesModel/index.vue +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - diff --git a/stdiet-ui/src/views/custom/recipesTemplate/index.vue b/stdiet-ui/src/views/custom/recipesTemplate/index.vue new file mode 100644 index 000000000..2b0bd7f78 --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesTemplate/index.vue @@ -0,0 +1,458 @@ + + + + + + From ecbc4705a2c02964bef3af5be7c13394c09acab1 Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Tue, 2 Mar 2021 15:33:53 +0800 Subject: [PATCH 11/35] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/SysRecipesPlanController.java | 12 +- .../custom/SysRecipesTemplateController.java | 10 +- .../mapper/custom/SysDishesMapper.xml | 1 + .../custom/{orderPause.js => recipesPause.js} | 12 +- .../PlanPauseDrawer/index.vue | 367 ++++++++++++++++ .../components/RecipesPlanDrawer/index.vue | 36 +- stdiet-ui/src/router/index.js | 14 - stdiet-ui/src/views/custom/customer/index.vue | 2 +- stdiet-ui/src/views/custom/dishes/index.vue | 6 +- stdiet-ui/src/views/custom/order/index.vue | 22 +- .../src/views/custom/order/orderPause.vue | 415 ------------------ .../RecipesView/RecipesAspectCom/index.vue | 2 +- .../src/views/custom/recipesPlan/index.vue | 4 +- .../views/custom/recipesTemplate/index.vue | 2 +- 14 files changed, 403 insertions(+), 502 deletions(-) rename stdiet-ui/src/api/custom/{orderPause.js => recipesPause.js} (78%) create mode 100644 stdiet-ui/src/components/RecipesPlanDrawer/PlanPauseDrawer/index.vue delete mode 100644 stdiet-ui/src/views/custom/order/orderPause.vue diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java index 88f35a1f4..d3383d550 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java @@ -31,7 +31,7 @@ public class SysRecipesPlanController extends BaseController /** * 查询食谱计划列表 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:list')") + @PreAuthorize("@ss.hasPermi('recipes:plan:list')") @GetMapping("/list") public TableDataInfo list(SysRecipesPlan sysRecipesPlan) { @@ -48,7 +48,7 @@ public class SysRecipesPlanController extends BaseController /** * 根据订单查询完整食谱计划列表 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:list')") + @PreAuthorize("@ss.hasPermi('recipes:plan:list')") @GetMapping("/getAllPlanByOrderId") public TableDataInfo getAllPlanByOrderId(SysRecipesPlan sysRecipesPlan) { @@ -57,7 +57,7 @@ public class SysRecipesPlanController extends BaseController return getDataTable(list); } - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:list')") + @PreAuthorize("@ss.hasPermi('recipes:plan:list')") @GetMapping(value = "/list/{cusId}") public AjaxResult getAllPlanByCusId(@PathVariable Long cusId) { return AjaxResult.success(sysRecipesPlanService.selectPlanListByCusId(cusId)); @@ -66,7 +66,7 @@ public class SysRecipesPlanController extends BaseController /** * 获取食谱计划详细信息 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:query')") + @PreAuthorize("@ss.hasPermi('recipes:plan:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -76,7 +76,7 @@ public class SysRecipesPlanController extends BaseController /** * 修改食谱计划 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:edit')") + @PreAuthorize("@ss.hasPermi('recipes:plan:edit')") @Log(title = "食谱计划", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody SysRecipesPlan sysRecipesPlan) @@ -87,7 +87,7 @@ public class SysRecipesPlanController extends BaseController /** * 导出食谱计划列表 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:export')") + @PreAuthorize("@ss.hasPermi('recipes:plan:export')") @Log(title = "食谱计划", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(SysRecipesPlan sysRecipesPlan) diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java index ffb0c8cca..1185cb7bb 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java @@ -26,7 +26,7 @@ public class SysRecipesTemplateController extends BaseController { /** * 查询 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:list')") + @PreAuthorize("@ss.hasPermi('recipes:template:list')") @GetMapping("/list") public TableDataInfo list(SysRecipesTemplate sysRecipesTemplate) { startPage(); @@ -34,7 +34,7 @@ public class SysRecipesTemplateController extends BaseController { return getDataTable(list); } - @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:list')") + @PreAuthorize("@ss.hasPermi('recipes:template:list')") @GetMapping(value = "/{id}") public AjaxResult detail(@PathVariable Long id) { return AjaxResult.success(iSysRecipesTemplateService.getRecipesTemplateById(id)); @@ -43,7 +43,7 @@ public class SysRecipesTemplateController extends BaseController { /** * 添加 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:edit')") + @PreAuthorize("@ss.hasPermi('recipes:template:edit')") @PostMapping("/add") public AjaxResult add(@RequestBody SysRecipesTemplate sysRecipesTemplate) { return toAjax(iSysRecipesTemplateService.insertRecipsesTemplate(sysRecipesTemplate)); @@ -52,7 +52,7 @@ public class SysRecipesTemplateController extends BaseController { /** * 更新 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:list')") + @PreAuthorize("@ss.hasPermi('recipes:template:list')") @PutMapping(value = "/update") public AjaxResult update(@RequestBody SysRecipesTemplate sysRecipesTemplate) { return toAjax(iSysRecipesTemplateService.updateRecipesTemplate(sysRecipesTemplate)); @@ -61,7 +61,7 @@ public class SysRecipesTemplateController extends BaseController { /** * 删除 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesTemplate:query')") + @PreAuthorize("@ss.hasPermi('recipes:template:query')") @DeleteMapping(value = "/delete/{id}") public AjaxResult delete(@PathVariable("id") Long id) { return AjaxResult.success(iSysRecipesTemplateService.removeRecipesTemplate(id)); diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml index a79ab03a5..ad88bdcc1 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml @@ -44,6 +44,7 @@ and review_status = #{reviewStatus} and is_main = #{isMain} + order by id desc diff --git a/stdiet-ui/src/api/custom/orderPause.js b/stdiet-ui/src/api/custom/recipesPause.js similarity index 78% rename from stdiet-ui/src/api/custom/orderPause.js rename to stdiet-ui/src/api/custom/recipesPause.js index e968e755c..a37d648ba 100644 --- a/stdiet-ui/src/api/custom/orderPause.js +++ b/stdiet-ui/src/api/custom/recipesPause.js @@ -3,7 +3,7 @@ import request from '@/utils/request' // 查询订单服务暂停列表 export function listPause(query) { return request({ - url: '/orderPause/pause/list', + url: '/recipes/pause/list', method: 'get', params: query }) @@ -12,7 +12,7 @@ export function listPause(query) { // 查询订单服务暂停详细 export function getPause(id) { return request({ - url: '/orderPause/pause/' + id, + url: '/recipes/pause/' + id, method: 'get' }) } @@ -20,7 +20,7 @@ export function getPause(id) { // 新增订单服务暂停 export function addPause(data) { return request({ - url: '/orderPause/pause', + url: '/recipes/pause', method: 'post', data: data }) @@ -29,7 +29,7 @@ export function addPause(data) { // 修改订单服务暂停 export function updatePause(data) { return request({ - url: '/orderPause/pause', + url: '/recipes/pause', method: 'put', data: data }) @@ -38,7 +38,7 @@ export function updatePause(data) { // 删除订单服务暂停 export function delPause(id) { return request({ - url: '/orderPause/pause/' + id, + url: '/recipes/pause/' + id, method: 'delete' }) } @@ -46,7 +46,7 @@ export function delPause(id) { // 导出订单服务暂停 export function exportPause(query) { return request({ - url: '/orderPause/pause/export', + url: '/recipes/pause/export', method: 'get', params: query }) diff --git a/stdiet-ui/src/components/RecipesPlanDrawer/PlanPauseDrawer/index.vue b/stdiet-ui/src/components/RecipesPlanDrawer/PlanPauseDrawer/index.vue new file mode 100644 index 000000000..bf19309b1 --- /dev/null +++ b/stdiet-ui/src/components/RecipesPlanDrawer/PlanPauseDrawer/index.vue @@ -0,0 +1,367 @@ + + + + diff --git a/stdiet-ui/src/components/RecipesPlanDrawer/index.vue b/stdiet-ui/src/components/RecipesPlanDrawer/index.vue index 5ef6b8b44..db51810f0 100644 --- a/stdiet-ui/src/components/RecipesPlanDrawer/index.vue +++ b/stdiet-ui/src/components/RecipesPlanDrawer/index.vue @@ -4,7 +4,7 @@ :close-on-press-escape="false" :visible.sync="visible" @closed="handleOnClosed" - size="40%" + size="45%" >
@@ -26,7 +26,7 @@ - + diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue index 2c9bdccca..a4c37f955 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue @@ -12,7 +12,7 @@ trigger="click" title="修改审核状态" style="margin-right: 12px" - v-hasPermi="['recipes:recipesPlan:review']" + v-hasPermi="['recipes:plan:review']" >
导出 @@ -164,7 +164,7 @@ Date: Tue, 2 Mar 2021 17:39:25 +0800 Subject: [PATCH 12/35] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E3=80=81=E5=81=A5=E5=BA=B7=E8=AF=84=E4=BC=B0?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- running/pdf/healthyReport.pdf | Bin 288298 -> 986830 bytes .../stdiet/custom/utils/NutritionalUtils.java | 3 +- .../mapper/custom/SysOrderMapper.xml | 48 ++++++++++-------- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/running/pdf/healthyReport.pdf b/running/pdf/healthyReport.pdf index bd2295f149c1d7bc7af0d87931296d84c6323b55..c453e40d50a497907cc366d6fadafe0d4f531ffe 100644 GIT binary patch delta 39762 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 delta 25407 zcmce;byQr4VD8-3rg|v3GqX~vJieLSwUVt5U-%L zm=U+4v!#`f!JqC6LjKgOUEtm1fy>e4ere@w<7rF70|s%cyIXnx(^oLJri+Uw9EX<% z>kpC^TumBYULn}emq1#mr751Nsky1CFA`lEP?Dj5B6Ts0hU{t;Z!SjXR}jHZi!vFy z7OE~T4uk|p-tGfG5Gx|nWjDjD9FuBI)iaupLWINF*u*&)bcviH3>zM-H3}lSjT8!x z+-(D0y@OrNqz5P{{rEDEHl{CI0eGeeLBX`_*ckBP^6+%GGIL5?1cW8x0nrJuF?e|e z|20@5@Ii<03BlG10fbOR8i)Y@zf|Mr1;eLB0Ir}G4KIkFTN^$B0%BtSFvG^MU52Y- zijuE|<%osFv5X~!g+_x!XklY&wwj8#F1qFk0^>QFqT2}i28ZN%^-mD@N)I*I z*xF%g^zI|s+NA@_bxn5b&8HW1x(W(FHeOVhn+_T-;kLyh0Z`gQ}zR!2A zEH`_X+g9E9rKPq$)9dx%r|kio^WBD@3fopnMII>CXvW6^kbaKqqg}r?Au;jcBSWwd zbAyQK?PIe=r?{Av(%W_dy@++Bs}CPg7`##IC=G zrpxu{3Jw4_B3(-=P|Xx6DK$tJbixCI1e5&+p*%;7L2N}!HA5s2s?iL|3j4(`9gVnv zC_pSH8Bv26iaEOlYPYHpDX#V1LWzjQ+CpCuL*QHk^i2U!5K)ZrHURMe;+8Jco|<@* z6#z%y*DgsBboRzKlZb6O7BOjDwe!P68H9lxiQ@^!;{7fcbW=8H{ zkurt7mG<)LPS{}RTJ6ntR$_Xs(hs@~Q%z;mobU)~DMS|cL{i<~X*9%OCcy41l$3B$ z^-czfU;siEv_m&>9ET95X9>inuyA*gb8&Z~0SiI?nv9B-rq%K_Qrg6_61T%+H_bhE0OX z!z0AS3kRB{2v0Kd|)i{(}cGJ~=9w=dTQS2eJ~!@ySpjyj&mw zIQd_hF$CnOLIPYuLSV>00NH2csDgZ4AVCQDAHdTyauhfT1k4LF`wbtYRzf%hgiC-A z@?WFiNd%{Wi-52B|4?uflcPfTxOm}!zd{d)$^IqdPaOym{5$l5aBXL3a0oCYxzxn760s?jbGjW3sm!V+A>R?U?o`PX>NH1BH0;O(Hb*rCg|yvA?|WnpSp(ine< zAuSrA_{%ogYC4=oOp!ix)Orh*q64iL`HZxeyvs{S(SoT zizv@gT$ckObGinq)Fclx>UZ7jzdh%a>T2UcBEt&S++4xu=Jl=O4DfTfSn5(Mj0~z=m&zB`}IiKktLYM9C9lMY~TIZ;@ z{mSp>()sX@i5@oGs zgVLy9kw2@Ub-gLZ9AA7+S(Dk%&5B|`_^1doUG^{eaJ7@K@9}52gRaZJpcpFeE5CsB zoW;}=Yf2)d>BgL=WFYUWND93~x+;9QeU4bO4uLF`i$RGks?jQHXGBa364!FwdSMGo z$Bj>-(C4wbxoN@n=8PMj$|Fd;l-Fg;u6U=EXN=xAO}9RqGja08b}{s#W13BPuHS?e zoExq<&1{g{*`8Bw|2kc3xIgS@yI7leoN(R6R^oY{t&b%VX#@DBg^=ErSoh1io1&BJ zdsA-U)#SnvSBFHfDuO1Wx^Ik%0OG2h#xL&32k0_$-v(U{itkO%`SIc7#`X$I4=UP+ z```s*mu-_E2QmG6w1&>2_#`$bmMA{kN|#$b+w+35>sB2j$9yoyr?KqL`lr77FE;+? z-E)0TvJ9b|G0gEOS=zH{^&f(by}%;n)Y&AzG+Y9fa@)ASn>_kH#l$U>J)ED5BVRwT z`9oX#=Cu5ThyoP=yaj4J6nj)|#W4#-xk5w{h1>OC)stZ*A~K-Xl7eymuIeYRvk?Qy zOU&>xNgcIZebE;*{HWgpY7!F}vtlMWX(|(xK5H@nrA~=E@;8WiqL$HyeUF67zsF;2 z2KHR9S$#aO7jJ(Yw;5D)@d$54wiNMkmW6)UAkWozRq}PlZt&xMFCqTW9|!e+k%T!I z#%KP)vrLk#erlmWgf*r=cl*on{=(X;7&imO!RCC_#eS#LW`|DTHmZ&9bDLd`(LS~J z9nT$CGU|Q$6CSxy_{j6CgxxI2dz@ZJ(aJl7Ie#$~nfo>hb!dqW zted2W%L^;b_I{lyX2Dbzr+}YX2kAN2KNHEHl0yy@85}@XXQW zPzv|03Kql_ToebLb-2@wJq$d{hW17$%rpyxb0tV+lV34g2P3bIWJ|WAl zp^|?6LWt$O+b0Rux4M&`eNjT09lKXk|7c6;%=QvZL~muTneA+0%{O8ZdX>J2chpgN z_3&xm34J`wU^v$Udx8i7a{9&m%kIvtvDkOi_5Rt?-S~8ysh0ap6CSovspdkhxT-fS z1;Rc_R@%1Kyv)cRf?o=2s77T1wWOk6I*h)**tx!}#7ROkqFN(ef_3SKlZ6BK2KbtR zBii7}QY+Q4hT`jWmf9Y3=sm?gp0oOlAmZ*>RBuR}%yj0td93;h;;8;u*&2VJs8v2Ni`K-S0|_Nt>n2p z^URZYYh##G#7bK-9xo?qIVKT55lc0J&|!_dPN-c_I2lgCZKvhEQy^}HG?tnDJWx(w zqC*;nu!AVRG@pli0li4b;ozb~Wtz!T23(lsRH#1R+oc!PGZf58xHR4UAffpDmm*i| zChcI|4T-U(rIC+hB$xjfGEQA_u&UX}2L>A^%+(w&uR+(D!7=0y6^+@)3OkxoGgC}P z2^k*`G|xDEqRV+uj^AY$eny{G{ft$`l{~0$J&RwyEIrCiuqK{Y ztsM!7A4B~XdaO<{5uc*)EIg@U!*+wU1XEmK=NVCC&MRKdQdG7xOEpeu#*v0IT_AdU zsNbFqmfitU!S)aH;;vE#rS%!${AQWR9Q(8<~UGgn3l%XF(y3nHzSJSwf|NYB_?_Yz*jBJGI z@syfNIlAn8(~wJsdezme0OYD_7M@G}$Uq$eK=`lvIFE?208g+bVYUvJRxlaQeU-07 z;Ezwg`#q@jp7!>hkVp~Y=A&Hx?Ev7<$w^`t4@zP)17p1toiZ>{gN?C%iNO;&@e2nd zlwUybe|Gl@(G@8M4hs@^Z&$8$hCL)Q(&n-{BtQxY&(JRNVsmkeF7lj!d0exBJ1fT( z49fPqBaNVsUPATt+X2)1{?fsBrQdbVEO`SK)7)k2bRovV0Rk@7tNSjWRc40paYi?~ zGyKB@Ttkn$PL!HRmZ-Z7SD@l_B2eC$rr&_>Hms#YvmKmZ;v()t+*F_pP71GN6YsGz z$a3zLIj?my?U&d|bS3w5Dmz;-#Y4j|uL{U=x zR$lTerMb@;Ycv^tJHA;aB0!65(SiEY5}}M~ zg!3BtOhi(1%-Rj?_GnWKGw%#b<6I@siSEW%!sB0@E3kN z*-a73Gp6G7-&d_Od}noapoG9ax0U30)8`#8IHx*cXzm}}w~3-lZx6-T)y(uC17mey z*wDp#?SCCq59N{aoMP2<+Id6+>ZV$0#d2(oMdqB zECw(u-g;_*?GFC)D*H2eqWWTqSF65W^U4dY-h8c@GrAt_ znXYI>Lo%sqbQOJW3cFZgi6xwqWNbs!gvNp3jMk9y`=wMrhDMOvqt`g=yv+sAcfJI(JYOBB{3 z5fBk{9cM}sYk7zg(YP3)U>@Fof1?hPMRC5;V9C8vUBm3{!4dc-|)$Y_;=%9HUyNl@<)@tY-Wld z$c-niBj-|~EhAD*@u^l+ZdTdBT}!dGTH|QUbmez^(Nn3)H6GBr20^C~Jzq-TE|6x51iE4kWr|J)lU25_eH!Imn(M`n(m8{#o!|#0dcI13I7dg<=OAN+1 zd;CJ{gEtDJ(EHXvo&`l4MZcS-XG6VSwPbF*($p}PQGH%dP+l(q$ zSYV*QbN#!BX^Y0CL;&gpbO%Dlv3-y)zi>D_L*%OLg{-RC$WHU6ioK(Qx$W$F;-!gs z*d(qswH4vFI1|B;mvx&98WH;fQ*leo^}EBzrPwvm7XGfu`7s-wRZkW*v!LJ+Odrbj-sTd?I7N% zU3x8}e5#OCBFHV1sXCaEYR^58`r-x3Lt2&*!s1xTpol z-I*RQ{yZ`O4Nx&f-Cc9wz3v;K+*(v5ZCQlPGxDhy%3>46liS~H(Tfr`Ng67pe-f~? z6l29qy*{7g#AGE1+OgO>VajGYqhD5G_wu=pa=&LCWT#2#w?*TKMoVJAWP0t$M6!Q8 zihdTiek@vu@hpp0$-TG3`e=2JEDT6;Nfl~c8i3I0+^f~`h3R*d`fV%Mb{jdPz%Hdm zdO{;M^lsXsT%9%U{HO!W_%KMs%8G=lNgzs@kYK7+GN6zLiBDKvFS<*LM_kYfm22wn zXJ-7EU*R-ZI^FzpZ!@7(Rn0|C)(@jQ)R%? zLgX58S(>h-FFNY!>nzUHss>cye5vGehvpK{OyF}8Dl%>U*C_jV;YP_1`i})jt4)<& z5^s2$U0BY2a_Kw;4={^|zgSDKhKv@ECl`u&bY1P=-c<3c57Q!xva6c_3Fkj z2w#C_=ZK0{md2p5l<1iPjxL?2!y7tfbhLLkl@XSWS;UM?Qt~2sZ=segD3w1qwZpsbK;LbX3&MCoFrHyVsF<;s7~UMng1N(vTDW+Vp-BOk*(q$Nzhvjb!GycPNz8=X=0_P* z=G5tgIJO@jzUEFUQwO{oY+3V4rS4x5=e|@2{sx4wKZx|Keq)&C0$HH92D;CLRpI<( z_Mh>`J?@T2CPt~e#TJeqP~Tu)I+W+cA|{NCzQ2#sKW44W@tv{n<#QK~mCBj2lUnD* z)QlBIacA|Gxz}LRfuti27pGf~s1%6VtAZ^1;~g!S{{dF*7ZVV-inc zAnRAP&#xGuNVoR;c_3rn?t3}20-1Q^b;LZL68fQ&iZa*m*1`s@JB}i}&!R$pI^wyl z&?%a?xevLLb|eegSrs`$wJizD3ND3^iF*>i%rj#JTwH8{qOc3qS2|-a_}*kM$F~^! z$(Ko;@Q@$ArQT01e7#hH-{|1w;joOxAzPw@!S7x_j+M_Rt$MH*>z9^ae_apck3`er z^X6d>Wpc12h;O4Zn2%@fHf5&QH+5e94qY7i(ei!i`@1t7ivy;HlCAogJB_8Edy0YE z!D!tY8Jv}_gfneLhmn5SU9b}R-L6$VW5jr`XwCbHD*~anzt|eoNa*HgPkeRhDxihd@660X;NOwp|5ybZUa7!6Az}NzPP<3f!gcL)eU`U_bsl?p zv3Ud3O3%>Ta(DBfUtDy`lV2Jx)Eb2|(vFCX41Z`^;6vN>33L?WxP1XM2p^FSLoo_U zaM7(m$J)$VQ>d8}cy85l6${`w+|b?Z}~Ej?%hCA(qz^l*NbC;_dekw$oDN5$(PT= zsJ~Mlae|ZsnZIt^P_vjUC-{!pw>%}Z{P@gx-k>uzEWJ~ec)fFZ(H=A7uvIy-?zf&G7{#i*-JCkn@4>om4Y{X6;Sj{hQ-M(oe+7C76n3=`Z<*LO^aX7d-m__9X zkt4I5#g*>QSVh{}u6}bD&-oh=F?#18%ElHuyO*LQ2hj`P-s=3(=cuexYI{R6j8|^{ zwjU(P?u(-mpcvyt+NdC?nkY&nT``Zz*u>aAUZ!!EHubTl*sx$b zATfX!7I=k4MgayxczD2k{DSNtL1qw$ne|_hNIo7|?G+XifDbl%g~bC86a7Pg{@(;J zu4^n+IGi5_y~g4|0nxmAiQxt-yT+mgXe5T95+(9yGC_HH`Tk?YNM2F;3L@-3J}2Bp zPTAZvF(5_s+Dp!Tb<+Al=$-eZK6ilsWT}VVB!f>82!ocg)8p>+QeI6FuQ~8Qu_z=O zltj-#K0$J?WoyqTlHkrP!&N$VMgD5et#5lct77#Py1$2|Nu`-a+2{6Lz2R9IXkOr3 zzzfxbH0jck?-55>vQ%1u3zJnHPUVT2NqjF}I_I7-!01N`mfQ1RIW&?%H!33Yq6W5J zGY)Jaa`i2uxmGpNxQ@?8bYb)PcUj4=e&~AOUtN51A#L7qJ^{e$DCB}YI*>zRj!QGvsT0YSEliT=TX85n8|`!U2r+2AStuf9Fav9KZkt3;u^Iw$$iW{R+Z* zNM^bAszk7hYwqVjEMvb88}^3Glp zQKXQFYy9zV?|*zG{4Awzi!3!O?!U9MWVE)FFniXu+V{ZEZp^$nMdo4<0=WWf;J3)F@LuywvU7GEo zYO;6Z5CPm-34KBe1HZd|Ll!q{TT~T6EoOOa9DQ$muob^bLoH@CG~*%}aK~=o{F56> z!zbr%L0$z z)Q%#TzjZ4)k|&!iE(dhJD$5hI8;}jHj|E(v?H?wPMOzulqHA#U8*5-N7p(OxwK=pMJqD9#e*|YJl`zk z2d1$F!!yaDG3_`50|{rUUUPX=M&mp~+0nSNq8Gc&EZgRRuZ{}S6^{u2z*)^HnUeIhv`R1ge?bIqTCR?m}I0;;xiE5f_jG6lzQM)FeG>m^1 z417A}$7Z8{#8+z1o3RC;+-TA^rsjH7uRToyQ=h*71SCd`&rd?k}QS}ZKJKd;3A zbMU_4u*Ws~hHURw zWU6oovIqI^IhUG%o=yJ9=d)*O(0)t zUn9U;0J9kp@ZD)UbHt!-Sdn;(nM~}3J3rd#5(3GydVdVi{i!jgW;~T`{S4~%f+m0E=Wt6T}VQH&|8FRkd5ha(xGm=?? z+a{U!-ak4rr?Z=(r9|DIkX5Zpf8Gkaww{LYLR3;WPxRg@I?+yVG%swfu(=BJwL|d` z?|Fqh-CMTyeCa=}QyB`_Et>Pa1%U9!HZJjp$yiu*LYezOTpt< zANHpLF^J6DjhhPYSIw7xco?S|HC<+MOyot24Y&Q!nDp|5mM*70J{M>+&RT!f@`E<# zb@c#?8g5;hXM9KK9(Ae?$mTnnlf_h#Y1^b{huc{MsU$0im(is&c53lkM#^yP%Vng? z!%ZV%T&82LgMhQG*Ad+*b8+MgVEn+yosyuceDgZQ%{vW?ZyJ|)^)~s}9@C#a=6&}g z-1V!yETlF)pwpkfWi>fR8P2rUqM!A(lI%aKO?TVw4{LdYz6&?^2$MQ3;kAhEvkiiw zKJ5=a=Z_i{+Cxpyr@Ncuoaen~OCuYRk!=}~D}872D4kz!J^i8QKKH+jD`qm5vjioyRP0z z`?7;I$px*b`_2OJXG=^;*pfI7cn0H+g1ZgDcmOU;GwT1vZ4guZx1;#qUgLjVe}U0P z1DK$Y|LruK95w~;9*<1&MnhO8Y~|``klL?=)dhEqh>xUM<^5E8id3q;6;VE1Q+>PY zZ}T=kp4U10UUz^wPj>4|J(599z)AS!!&jYm`hKUUTH9|xi6jFs3qthL)J?(RW(y(6&C4z8xht7QfImm1treQfLMZgG@i zEP#^Uz4V-XmPdT34>#Ed`uOh-wXMpkUS>&h8D+zygCw>GJrsk)HsuSJElSI0`)1tp zVwJTs!)_$&?2lKFtTNZ^-;P4jSAjRVH-h-av<5xt^)ifk2LAg zwd3iu4P;?l%E`ArV`aUD`-~w>l_Y8D0ki4P3$MfuR}Zblorg@+6J5{>`YNanb;}4e zk3V5bR9rs-U8VMJkyp zm6jGO!h%)daJB=rYQ?-=J*4-=Vl?GC%gx3V0nhccct3sxD%a;OTC(8+PreGW_Li-_ zRQ!wqzj`U@=vm6P?qjs~P8VG(x!1R_RLR^R9mas}R>z3Rlc3y-Qs z-YYJT$fBHOIiEIdin-g9xrNc7n;kbJc8VThSz?-uwHk+>dune>ktZ`351hy$EsN6H znn~QWgK%YN0_`=nv#jmX-G?qq*w30I-?h;kgUiKV`fox)9mo@N zUXmy0xROXzc6J*f@K+rJTS3O#ncv^Cno5>_i%QyP>1XSF=A)@6#Mt3L9-%+-{utuS zjQ_qegUr9jkd9QIfF1izFcMP8wH=&lJj$aYZRfWI9d&3!i$DAI8NX}H5d%Tt{vA-a zSt*)~kOu3rfw(J`3YjLn)g5W&mJne(r~WA!Db=i`G}?7c6ymL%2RO(ND`>4Zs9?;L zMOg*Ry=GJYMq7=oxqH!*{2KA(p5*DfHYU^RdsiBM8IRq;sH^QZ4`U=k6XYn!?@l6z zGqcDxC{hb!J&V%sG{cIfUy=IMgA_>IdT&2bqbj407RS0QfSWUD#>%w^y0LmXGsTH0 zOjke43mW|rmT0+h@LO(LQ6gvmF!#}uLh{$Vz|_2#t9PZ(3zNeZ0YqHD0YY<7dF|?~ zKiZtzj-%~Y@gF$RXITo{z5!&fs%C6C__UV}5TV1$;w<{r%R z6S#Eu_yvdYC8)bN6R{t00#mC76b4d)5aFU3jAraT{bzfw-2F)bl?&AUfPE+2g)U=9 zT#I0@g|E7nqKA1g2XC)HD0)qzp0Vk+^x4mF$GxK(k6GtC;~HH_191zEY3Fgqub}T6 zq0iknMHSw}AANy+kXRSoodqvR=(OM{&U_~4ULtPRDWm{Y(HqTJiVnEZlQS;mY9Rht zsAOK?>6v@*qTnNsu2AE@|7e?wD$8qKXzSRF&gq8}J5>So2OzJI_ za>?*IG<6DV9iA4jJe;d8&-wU^%{N0tHEy4 z!IOcni`EZcdlyS*1sW2LXXoF_s2ON1P>og%@j4 zffY@XFUPD(mCoY1@sz(H)kIZsgmoocR}E+Qn4vgk(Wo+mLCI7>}=#xmFqLPmvC zVpBmYwx+#&t^Ya^QSpnAkj%_T?=>ym)V_8{+9=)id;W~oyUPC1u&E)E+APaBwVWz$ zak1#h$;6m1Q2)E_YIe7?$FtqN)1$LfT(`P+nBpeO0j-i>0`4wujWe@2-x>A}Zg@=f z<42_01yNmd0{1O6!GmhZsG02ATJHb^sL42zUYg6S8Ub5@Fc+WuKSvUgd0fnYouhXg zfD;H2fPs{OluCRf-Ppl2crxSKjp0UVl1^XC^PU7~?u0txIiPGrWG<{EYOkINh}3Sp z?Wc${Av%IkjT2p4kKSi@?z}UqwRybX|G?UXAS^}42g8pCFvDJI!1rqM@&9L>E^z|f z=?eU3yy*buwNI3 zvwYF0HI#x~k%4zZ3-(<<9)0odw_z^ep>6Pa!Z_3URn?#lL$udO(fymgeVZ+d(-sBW zf>a3@*v5`ff!{r!O9Eyh2!;OINTAmjK?T2{FxW)-%xMP7 zPP&CAC_XV~Ag&Z-3ZdDs+Ju^wX9`u78D7*=b|n&6q-I*83U2!)H5~+gI4iyxI*WJ@ zBv6K6GJ@jn>6Q01mNO&klOR{^Y%bVfKlB5JEBOzd@^;XnA26d~C$z zT|rz35rA?wHlpn!>>TVH>?JL!A|5t``UibXk0R^0m=T{drY3O_W|=ddj)CNG%;}q$ zp*Cs@21Y

<2RkP|5MEYr7*ReKkK%9~x19)`?4F_fxs~p2 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 T6zFf+iGfN_FQfVa1NDCZtx>Ih diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java index b253bcf45..25ece5aaf 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java @@ -1,6 +1,7 @@ package com.stdiet.custom.utils; import com.stdiet.common.utils.HealthyUtils; +import com.stdiet.common.utils.NumberUtils; import com.stdiet.custom.domain.SysCustomerHealthy; import com.stdiet.custom.dto.response.NutritionalCalories; @@ -19,7 +20,7 @@ public class NutritionalUtils { nutritionalCalories.setTall(sysCustomerHealthy.getTall()); nutritionalCalories.setWeight(sysCustomerHealthy.getWeight().doubleValue()); nutritionalCalories.setStandardWeight(HealthyUtils.calculateStandardWeight(nutritionalCalories.getTall())); - double overHeight = nutritionalCalories.getWeight() - nutritionalCalories.getStandardWeight(); + double overHeight = NumberUtils.getNumberByRoundHalfUp(nutritionalCalories.getWeight() - nutritionalCalories.getStandardWeight(),1).doubleValue(); overHeight = overHeight > 0 ? overHeight : 0; nutritionalCalories.setOverWeight(overHeight); nutritionalCalories.setMetabolizeHeat(HealthyUtils.calculateMetabolizeHeat(nutritionalCalories.getAge(), nutritionalCalories.getTall(), nutritionalCalories.getWeight()).intValue()); diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml index e2c08582a..6cd8b80df 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml @@ -69,6 +69,28 @@ LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'conditioning_project') AS cp ON cp.dict_value = o.conditioning_project_id + + + + + ( + + + order_type = #{type} + + + order_count_type = #{type} + + + order_money_type = #{type} + + + ) + + + + + where sop.del_flag = 0 - and sop.order_id = #{orderId} - and sop.pause_start_date = #{pauseStartDate} - and sop.pause_end_date = #{pauseEndDate} - and sop.reason = #{reason} - and sop.remarks = #{remarks} + and sop.order_id = #{orderId} + and sop.cus_id = #{cusId} + and sop.pause_start_date = #{pauseStartDate} + and sop.pause_end_date = #{pauseEndDate} + and sop.reason = #{reason} + and sop.remarks = #{remarks} - insert into sys_order_pause + insert into sys_recipes_pause order_id, + cus_id, pause_start_date, pause_end_date, reason, @@ -61,6 +64,7 @@ #{orderId}, + #{cusId}, #{pauseStartDate}, #{pauseEndDate}, #{reason}, @@ -74,9 +78,10 @@ - update sys_order_pause + update sys_recipes_pause order_id = #{orderId}, + cus_id = #{cusId}, pause_start_date = #{pauseStartDate}, pause_end_date = #{pauseEndDate}, reason = #{reason}, @@ -91,11 +96,11 @@ - update sys_order_pause set del_flag = 1 where id = #{id} + update sys_recipes_pause set del_flag = 1 where id = #{id} - update sys_order_pause set del_flag = 1 where id in + update sys_recipes_pause set del_flag = 1 where id in #{id} @@ -103,7 +108,7 @@ + SELECT order_id + FROM sys_order + WHERE cus_id=#{cusId} AND del_flag = 0 AND order_type IN(0, 1) AND after_sale_commiss_order = 0 + AND order_money_type IN(0, 2) AND main_order_id=0 AND server_end_time > NOW() + ORDER BY server_end_time ASC LIMIT 1 + + \ No newline at end of file From 14f7113765ea5077ab23267dd68472207c4d5c4f Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Tue, 2 Mar 2021 18:56:31 +0800 Subject: [PATCH 14/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9A=82=E5=81=9C?= =?UTF-8?q?=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/stdiet/custom/mapper/SysOrderPauseMapper.java | 2 ++ .../com/stdiet/custom/service/ISysOrderPauseService.java | 2 ++ .../stdiet/custom/service/impl/SysOrderPauseServiceImpl.java | 5 +++++ .../main/resources/mapper/custom/SysRecipesPlanMapper.xml | 2 +- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java index 6805e9e5f..5d6d4aad3 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java @@ -73,4 +73,6 @@ public interface SysOrderPauseMapper * @return */ int deletePauseByOrderId(Long[] orderIds); + + long selectNearMainOrderIdByCusId(Long cusId); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java index 0f98bdc97..5f1276ad2 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java @@ -72,4 +72,6 @@ public interface ISysOrderPauseService * @return */ int deletePauseByOrderId(Long[] orderIds); + + long selectNearMainOrderIdByCusId(Long cusId); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java index 70228dd13..4aa8cd37d 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java @@ -139,4 +139,9 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService public int deletePauseByOrderId(Long[] orderIds){ return sysOrderPauseMapper.deletePauseByOrderId(orderIds); } + + @Override + public long selectNearMainOrderIdByCusId(Long cusId) { + return sysOrderPauseMapper.selectNearMainOrderIdByCusId(cusId); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index fcee81005..150ae32b1 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -217,7 +217,7 @@ + + where sop.del_flag = 0 and sop.order_id = #{orderId} order by sop.pause_start_date asc + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index fcee81005..1d429715e 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -132,16 +132,16 @@ where id = #{id} and del_flag = 0 - - delete from sys_recipes_plan where id = #{id} - + + update sys_recipes_plan set del_flag = 1 where id = #{id} + - - delete from sys_recipes_plan where id in + + update sys_recipes_plan set del_flag = 1 where id in #{id} - + @@ -156,7 +156,7 @@ - delete from sys_recipes_plan where order_id in + update sys_recipes_plan set del_flag = 1 where order_id in #{orderId} @@ -217,7 +217,7 @@ - select id, start_date, end_date, start_num_day, end_num_day, recipes_id from sys_recipes_plan where out_id=#{outId} + select id, start_date, end_date, start_num_day, end_num_day, recipes_id from sys_recipes_plan where out_id=#{outId} and del_flag = 0 @@ -244,7 +244,7 @@ From b8fad6218f769b52967b58fc1fb6feb439d283d6 Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Wed, 3 Mar 2021 16:43:58 +0800 Subject: [PATCH 20/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PlanPauseDrawer/index.vue | 8 +- stdiet-ui/src/views/custom/dishes/index.vue | 43 +- .../src/views/custom/ingredient/index.vue | 495 +++++++++--------- 3 files changed, 283 insertions(+), 263 deletions(-) diff --git a/stdiet-ui/src/components/RecipesPlanDrawer/PlanPauseDrawer/index.vue b/stdiet-ui/src/components/RecipesPlanDrawer/PlanPauseDrawer/index.vue index bf19309b1..21f35b212 100644 --- a/stdiet-ui/src/components/RecipesPlanDrawer/PlanPauseDrawer/index.vue +++ b/stdiet-ui/src/components/RecipesPlanDrawer/PlanPauseDrawer/index.vue @@ -14,7 +14,7 @@ icon="el-icon-plus" size="mini" @click="handleAdd" - v-hasPermi="['orderPause:pause:add']" + v-hasPermi="['recipes:pause:add']" >新增 @@ -24,7 +24,7 @@ icon="el-icon-download" size="mini" @click="handleExport" - v-hasPermi="['orderPause:pause:export']" + v-hasPermi="['recipes:pause:export']" >导出 @@ -96,7 +96,7 @@ type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" - v-hasPermi="['orderPause:pause:edit']" + v-hasPermi="['recipes:pause:edit']" >修改 删除 diff --git a/stdiet-ui/src/views/custom/dishes/index.vue b/stdiet-ui/src/views/custom/dishes/index.vue index 2293142c8..d64acc459 100644 --- a/stdiet-ui/src/views/custom/dishes/index.vue +++ b/stdiet-ui/src/views/custom/dishes/index.vue @@ -247,17 +247,10 @@ :summary-method="getSummaries" style="width: 100%" > - - + + - + - - - - - + + + + + diff --git a/stdiet-ui/src/views/custom/ingredient/index.vue b/stdiet-ui/src/views/custom/ingredient/index.vue index b44ef216f..61fbff02c 100644 --- a/stdiet-ui/src/views/custom/ingredient/index.vue +++ b/stdiet-ui/src/views/custom/ingredient/index.vue @@ -96,13 +96,11 @@ icon="el-icon-search" size="mini" @click="handleQuery" - >搜索 - + >搜索 + 重置 - + >重置 + @@ -114,7 +112,7 @@ size="mini" @click="handleAdd" v-hasPermi="['custom:ingredient:add']" - >新增 + >新增 @@ -124,7 +122,7 @@ size="mini" @click="handleExport" v-hasPermi="['custom:ingredient:export']" - >导出 + >导出 + + + - + 修改 + >修改 删除 + >删除 @@ -241,7 +250,7 @@ - + @@ -376,244 +385,242 @@ From a20ef83dc49c79e57553da034e39c21964e00b60 Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Wed, 3 Mar 2021 18:17:03 +0800 Subject: [PATCH 21/35] =?UTF-8?q?=E9=A3=9F=E8=B0=B1=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/stdiet/custom/domain/SysRecipesPlan.java | 4 ++++ .../service/impl/SysRecipesPlanServiceImpl.java | 3 +++ .../resources/mapper/custom/SysRecipesPlanMapper.xml | 12 ++++++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java index d9e435ead..8e5c4bfc5 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java @@ -116,6 +116,10 @@ public class SysRecipesPlan { */ private Integer reviewStatus; + /** 该食谱计划中暂停日期,使用 | 隔开 */ + //@Excel(name = "该食谱计划中暂停日期,使用 | 隔开") + private String pauseDate; + /** * 创建者 */ diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java index b55065f17..7f5469544 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java @@ -185,6 +185,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { || plan.getEndDate().compareTo(newRecipesPlanList.get(index).getEndDate()) != 0){ plan.setStartDate(newRecipesPlanList.get(index).getStartDate()); plan.setEndDate(newRecipesPlanList.get(index).getEndDate()); + plan.setPauseDate(newRecipesPlanList.get(index).getPauseDate()); updateList.add(plan); } }else{ @@ -260,6 +261,8 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { sysRecipesPlan.setStartNumDay(oldStartNumDay); oldStartNumDay += 6; sysRecipesPlan.setEndNumDay(oldStartNumDay); + //暂停日期 + sysRecipesPlan.setPauseDate(pauseResult[3]); //添加暂停范围内的日期 planList.add(sysRecipesPlan); }while (breakFlag); diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index c8b694550..7dab14631 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -14,6 +14,7 @@ + @@ -36,7 +37,7 @@ - select id, order_id, cus_id, start_date, end_date, start_num_day, end_num_day, recipes_id, send_flag, send_time, create_time, create_by, update_time, update_by, del_flag, review_status from sys_recipes_plan + select id, order_id, cus_id, start_date, end_date, start_num_day, end_num_day, recipes_id, send_flag, send_time, pause_date, create_time, create_by, update_time, update_by, del_flag, review_status from sys_recipes_plan