diff --git a/stdiet-admin/src/main/filters/dev/application.yml b/stdiet-admin/src/main/filters/dev/application.yml index 6536928b3..91d0fbcdd 100644 --- a/stdiet-admin/src/main/filters/dev/application.yml +++ b/stdiet-admin/src/main/filters/dev/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/filters/local/application.yml b/stdiet-admin/src/main/filters/local/application.yml index 057dee4c1..d135b20ca 100644 --- a/stdiet-admin/src/main/filters/local/application.yml +++ b/stdiet-admin/src/main/filters/local/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/filters/prod/application.yml b/stdiet-admin/src/main/filters/prod/application.yml index 4044c157a..dab9fc36e 100644 --- a/stdiet-admin/src/main/filters/prod/application.yml +++ b/stdiet-admin/src/main/filters/prod/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java index 0ba05c017..a6f196231 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java @@ -1,16 +1,16 @@ package com.stdiet.web.controller.custom; +import com.stdiet.common.annotation.Log; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.enums.BusinessType; +import com.stdiet.custom.domain.SysDishes; import com.stdiet.custom.service.ISysRecipesService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController -@RequestMapping("/recipes") +@RequestMapping("/custom/recipes") public class SysRecipesController extends BaseController { @Autowired @@ -20,4 +20,32 @@ public class SysRecipesController extends BaseController { public AjaxResult getInfo(@PathVariable("resipesId") Long resipesId) { return AjaxResult.success(sysRecipesService.selectSysRecipesByRecipesId(resipesId)); } + + /** + * 修改食谱菜品 + * + * @return + */ + @Log(title = "食谱", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysDishes sysDishes) { + return toAjax(sysRecipesService.updateDishesDetail(sysDishes)); + } + + @Log(title = "食谱", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysDishes sysDishes) { + int rows = sysRecipesService.insertDishes(sysDishes); + if (rows > 0) { + return AjaxResult.success(sysDishes.getId()); + } else { + return AjaxResult.error(); + } + } + + @Log(title = "销售订单", businessType = BusinessType.DELETE) + @DeleteMapping("/dishes/{cId}") + public AjaxResult delete(@PathVariable Long cId) { + return toAjax(sysRecipesService.deleteDishes(cId)); + } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java index 61bd86838..d831bce8c 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java @@ -1,5 +1,6 @@ package com.stdiet.custom.domain; +import com.alibaba.fastjson.JSONArray; import com.fasterxml.jackson.annotation.JsonFormat; import com.stdiet.common.annotation.Excel; import lombok.Data; @@ -22,6 +23,10 @@ public class SysDishes { */ private Long id; + private Long cId; + + private Long menuId; + /** * 菜品名称 */ @@ -74,6 +79,6 @@ public class SysDishes { private List igdList; - private List detail; + private JSONArray detail; } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java index b4fb4200b..092dce023 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java @@ -1,8 +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 java.math.BigDecimal; @@ -27,4 +25,11 @@ public class SysDishesIngredient extends SysIngredient { private String remark; + private Long id; + + private String cus_unit; + + private String cus_weight; + + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java index e0bfdcc0a..182589b86 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java @@ -1,5 +1,6 @@ package com.stdiet.custom.mapper; +import com.stdiet.custom.domain.SysDishes; import com.stdiet.custom.domain.SysRecipes; import java.util.List; @@ -7,4 +8,10 @@ import java.util.List; public interface SysRecipesMapper { public List selectSysRecipesByRecipesId(Long id); + + public int updateDishesDetail(SysDishes sysDishes); + + public int insertDishes(SysDishes sysDishes); + + public int deleteDishes(Long cId); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java index 5bf1c4a39..8b85509a2 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java @@ -1,9 +1,16 @@ package com.stdiet.custom.service; +import com.stdiet.custom.domain.SysDishes; import com.stdiet.custom.domain.SysRecipes; import java.util.List; public interface ISysRecipesService { public List selectSysRecipesByRecipesId(Long id); + + public int updateDishesDetail(SysDishes sysDishes); + + public int insertDishes(SysDishes sysDishes); + + public int deleteDishes(Long cId); } 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 a899e98c4..b9315178a 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 @@ -1,5 +1,6 @@ package com.stdiet.custom.service.impl; +import com.stdiet.custom.domain.SysDishes; import com.stdiet.custom.domain.SysRecipes; import com.stdiet.custom.mapper.SysRecipesMapper; import com.stdiet.custom.service.ISysRecipesService; @@ -20,4 +21,19 @@ public class SysRecipesServiceImpl implements ISysRecipesService { public List selectSysRecipesByRecipesId(Long id) { return sysRecipesMapper.selectSysRecipesByRecipesId(id); } + + @Override + public int updateDishesDetail(SysDishes sysDishes) { + return sysRecipesMapper.updateDishesDetail(sysDishes); + } + + @Override + public int insertDishes(SysDishes sysDishes) { + return sysRecipesMapper.insertDishes(sysDishes); + } + + @Override + public int deleteDishes(Long cId) { + return sysRecipesMapper.deleteDishes(cId); + } } diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml index f8cfc64a0..8c4a648bb 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml @@ -17,12 +17,13 @@ + + javaType="com.stdiet.custom.domain.SysDishesIngredient"/> @@ -76,4 +77,35 @@ ) ing USING(id) + + + update sys_customer_menu_dishes + + detail = #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, + + where id = #{cId} + + + + + insert into sys_customer_menu_dishes + + menu_id, + dishes_id, + type, + detail, + + + #{menuId}, + #{id}, + #{type}, + #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, + + + + + + delete from sys_customer_menu_dishes where id = #{cId} + + \ No newline at end of file diff --git a/stdiet-ui/src/api/custom/recipes.js b/stdiet-ui/src/api/custom/recipes.js index 0c598a8b3..9a8c0260e 100644 --- a/stdiet-ui/src/api/custom/recipes.js +++ b/stdiet-ui/src/api/custom/recipes.js @@ -1,8 +1,31 @@ import request from "@/utils/request"; -export function getRecipes(id) { +export function getRecipesApi(id) { return request({ - url: "/recipes/" + id, + url: "/custom/recipes/" + id, method: "get" }); } + +export function updateDishesDetailApi(data) { + return request({ + url: "/custom/recipes", + method: "put", + data + }); +} + +export function addDishesApi(data) { + return request({ + url: "/custom/recipes", + method: "post", + data + }); +} + +export function deleteDishesApi(cid) { + return request({ + url: "/custom/recipes/dishes/" + cid, + method: "delete" + }); +} diff --git a/stdiet-ui/src/store/modules/recipes.js b/stdiet-ui/src/store/modules/recipes.js index ce6983729..05d5a2f52 100644 --- a/stdiet-ui/src/store/modules/recipes.js +++ b/stdiet-ui/src/store/modules/recipes.js @@ -2,11 +2,18 @@ import { getOrder } from "@/api/custom/order"; import { getCustomerPhysicalSignsByCusId } from "@/api/custom/customer"; import { dealHealthy } from "@/utils/healthyData"; import { getRecipesPlan } from "@/api/custom/recipesPlan"; -import { getRecipes } from "@/api/custom/recipes"; +import { + getRecipesApi, + updateDishesDetailApi, + addDishesApi, + deleteDishesApi +} from "@/api/custom/recipes"; import { getDicts } from "@/api/system/dict/data"; import produce from "immer"; +import { updateDishes } from "@/api/custom/dishes"; const oriState = { + recipesId: undefined, healthyData: {}, healthyDataType: 0, recipesData: [], @@ -18,6 +25,9 @@ const oriState = { }; const mutations = { + setRecipiesId(state, payload) { + state.recipesId = payload.recipesId; + }, setHealtyData(state, payload) { state.healthyDataType = payload.healthyDataType; state.healthyData = payload.healthyData; @@ -40,7 +50,6 @@ const mutations = { } }, addRecipesDishes(state, payload) { - state.recipesData[payload.num].dishes.push(payload.data); }, updateOptions(state, payload) { @@ -104,7 +113,7 @@ const actions = { // 食谱数据 if (payload.recipesId) { - const recipesDataResult = await getRecipes(payload.recipesId); + const recipesDataResult = await getRecipesApi(payload.recipesId); if (recipesDataResult.code === 200) { commit("setRecipesData", { recipesData: recipesDataResult.data.map(dayData => { @@ -120,6 +129,7 @@ const actions = { ) { arr.push({ id: cur.id, + cid: cur.cid, name: cur.name, methods: cur.methods, type: cur.type, @@ -162,7 +172,89 @@ const actions = { throw new Error(recipesDataResult.msg); } } - } + }, + async saveRecipes({ commit, state }, payload) { + const { recipesData } = state; + const params = recipesData.map(menu => { + return menu.dishes.map(dObj => { + return { + dishesId: dObj.id, + type: dObj.type, + detail: dObj.igdList.map(igd => ({ + id: igd.id, + weight: igd.weight, + cus_unit: igd.cusUnit, + cus_weight: igd.cusWeight + })) + }; + }); + }); + console.log(params); + }, + async addDishes({ commit, state }, payload) { + const tarRecipesObj = state.recipesData[payload.num]; + if (tarRecipesObj && payload.data) { + const { id, type, igdList } = payload.data; + const params = { + menuId: tarRecipesObj.id, + id: id, + type: type, + detail: igdList.map(igd => ({ + id: igd.id, + weight: igd.weight, + cus_unit: igd.cusUnit, + cus_weight: igd.cusWeight + })) + }; + const result = await addDishesApi(params); + if (result.code === 200) { + payload.data.cid = result.data; + commit("addRecipesDishes", payload); + } + console.log(result); + } + }, + async updateDishes({ commit, state }, payload) { + const tarDishes = state.recipesData[payload.num].dishes.find( + obj => obj.id === payload.dishesId + ); + if (tarDishes) { + const mTarDishes = JSON.parse(JSON.stringify(tarDishes)); + const tarIgd = mTarDishes.igdList.find(obj => obj.id === payload.igdId); + if (tarIgd) { + payload.weight && (tarIgd.weight = payload.weight); + payload.cusWeight && (tarIgd.cusWeight = payload.cusWeight); + payload.cusUnit && (tarIgd.cusUnit = payload.cusUnit); + + const params = { + cid: mTarDishes.cid, + detail: mTarDishes.igdList.map(igd => ({ + id: igd.id, + weight: igd.weight, + cus_unit: igd.cusUnit, + cus_weight: igd.cusWeight + })) + }; + const result = await updateDishesDetailApi(params); + if (result.code === 200) { + commit("updateRecipesDishesDetail", payload); + } + } + } + }, + async deleteDishes({ commit, state }, payload) { + const tarDishes = state.recipesData[payload.num].dishes.find( + obj => obj.id === payload.dishesId + ); + if (tarDishes) { + const result = await deleteDishesApi(tarDishes.cid); + if (result.code === 200) { + commit("deleteSomeDayDishes", payload); + } + // console.log(params); + } + }, + async deleteMenu({ commit }, payload) {} }; const getters = { 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 a8cd827c1..90d3ec624 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`" >
+ 保存 {{ `${collapse ? "展开分析" : "收起分析"}` }} @@ -25,6 +28,8 @@ diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue index 925ab22c0..a9297d2d3 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue @@ -18,7 +18,9 @@ }} @@ -270,11 +272,11 @@ export default { }, handleOnDelete(data) { // console.log(data); - this.deleteSomeDayDishes({ num: this.num - 1, dishesId: data.id }); + this.deleteDishes({ num: this.num - 1, dishesId: data.id }); }, handleOnWeightChange(data, weight) { // console.log({ data, weight }); - this.updateRecipesDishesDetail({ + this.updateDishes({ num: this.num - 1, dishesId: data.id, igdId: data.igdId, @@ -282,7 +284,7 @@ export default { }); }, handleOnCustomUnitChange(data, { cusWeight, cusUnit }) { - this.updateRecipesDishesDetail({ + this.updateDishes({ num: this.num - 1, dishesId: data.id, igdId: data.igdId, @@ -291,17 +293,13 @@ export default { }); }, handleOnDishesConfirm(data) { - this.addRecipesDishes({ + this.addDishes({ num: this.num - 1, data, }); }, - ...mapMutations([ - "setCurrentDay", - "deleteSomeDayDishes", - "updateRecipesDishesDetail", - "addRecipesDishes", - ]), + ...mapActions(["updateDishes", "addDishes", "deleteDishes"]), + ...mapMutations(["setCurrentDay",]), }, };