diff --git a/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java b/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java index 891da5078..87fdda38f 100644 --- a/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java +++ b/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java @@ -9,6 +9,8 @@ import com.stdiet.common.annotation.Excel.ColumnType; import com.stdiet.common.constant.UserConstants; import com.stdiet.common.core.domain.BaseEntity; +import java.util.List; + /** * 字典数据表 sys_dict_data * @@ -34,8 +36,10 @@ public class SysDictData extends BaseEntity @Excel(name = "字典键值") private String dictValue; - /** 字典类型 */ - @Excel(name = "字典类型") + private List dictValueList; + + /** 字典类型 */ + @Excel(name = "字典类型") private String dictType; /** 样式属性(其他样式扩展) */ @@ -153,7 +157,15 @@ public class SysDictData extends BaseEntity { this.status = status; } - + + public List getDictValueList() { + return dictValueList; + } + + public void setDictValueList(List dictValueList) { + this.dictValueList = dictValueList; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/reflect/ReflectUtils.java b/stdiet-common/src/main/java/com/stdiet/common/utils/reflect/ReflectUtils.java index 26c685838..b8cd10e16 100644 --- a/stdiet-common/src/main/java/com/stdiet/common/utils/reflect/ReflectUtils.java +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/reflect/ReflectUtils.java @@ -416,7 +416,7 @@ public class ReflectUtils Field field = object.getClass().getDeclaredField(fieldName); //设置对象的访问权限,保证对private的属性的访问 field.setAccessible(true); - return field.get(object).toString(); + return field.get(object) == null ? "" : field.get(object).toString(); } catch (Exception e) { return ""; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerHealthy.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerHealthy.java index 21052d9f8..1b2bb182e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerHealthy.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerHealthy.java @@ -433,6 +433,9 @@ public class SysCustomerHealthy extends BaseEntity //备注 private String remark; + /** 减脂指导 */ + private String guidance; + /** 湿气数据 */ @Excel(name = "湿气数据") private String moistureDate; diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/HealthyDetailRequest.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/HealthyDetailRequest.java index dbb870225..afab4aba9 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/HealthyDetailRequest.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/HealthyDetailRequest.java @@ -281,6 +281,8 @@ public class HealthyDetailRequest implements Serializable { /** 其他运动项目,使用,隔开 */ private String otherMotionClassify; + private String motion; + /** 运动场地,使用,隔开 */ private String motionField; @@ -372,8 +374,8 @@ public class HealthyDetailRequest implements Serializable { /** 饮食习惯 */ private String makeFoodType; - /** 客户病史体征id,使用,隔开 */ - private String physicalSignsId; + /** 客户病史体征,使用,隔开 */ + private String physicalSigns; /** 其他病史体征 **/ private String otherPhysicalSigns; @@ -387,4 +389,8 @@ public class HealthyDetailRequest implements Serializable { /** 湿气数据 */ private String moistureDate; + + /** 减脂指导 **/ + private String guidance; + } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerHealthyMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerHealthyMapper.java index c60456991..29acf80b2 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerHealthyMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerHealthyMapper.java @@ -2,6 +2,7 @@ package com.stdiet.custom.mapper; import java.util.List; +import com.stdiet.common.core.domain.entity.SysDictData; import com.stdiet.custom.domain.SysCustomer; import com.stdiet.custom.domain.SysCustomerHealthy; import org.apache.ibatis.annotations.Param; @@ -79,4 +80,12 @@ public interface SysCustomerHealthyMapper * @return */ int deleteCustomerHealthyByCustomerId(@Param("customerId")Long customerId); + + + /** + * 根据类型、键值集合查询字典类型 + * @param sysDictData + * @return + */ + public List selectDictDataByTypeAndValue(SysDictData sysDictData); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerHealthyService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerHealthyService.java index 1888bb531..65ded44e9 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerHealthyService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerHealthyService.java @@ -3,6 +3,7 @@ package com.stdiet.custom.service; import java.util.List; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.core.domain.entity.SysDictData; import com.stdiet.custom.domain.SysCustomerHealthy; import com.stdiet.custom.dto.request.HealthyDetailRequest; import org.apache.ibatis.annotations.Param; @@ -85,4 +86,12 @@ public interface ISysCustomerHealthyService * @return */ AjaxResult generateHealthyReport(HealthyDetailRequest healthyDetailRequest); + + + /** + * 根据类型、键值集合查询字典类型 + * @param sysDictData + * @return + */ + public List selectDictDataByTypeAndValue(SysDictData sysDictData); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java index 2ecd67782..52c1b052f 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java @@ -1,11 +1,11 @@ package com.stdiet.custom.service.impl; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import com.stdiet.common.config.RuoYiConfig; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.core.domain.entity.SysDictData; +import com.stdiet.common.utils.DateUtils; import com.stdiet.common.utils.StringUtils; import com.stdiet.common.utils.bean.ObjectUtils; import com.stdiet.common.utils.reflect.ReflectUtils; @@ -157,14 +157,13 @@ public class SysCustomerHealthyServiceImpl implements ISysCustomerHealthyService @Override public AjaxResult generateHealthyReport(HealthyDetailRequest healthyDetailRequest){ AjaxResult ajaxResult = AjaxResult.error(); - String templatePath = "/home/workspace/ShengTangManage/running/pdf/healthyReport.pdf"; - //String templatePath = "D:\\contract\\healthyReport.pdf"; + //String templatePath = "/home/workspace/ShengTangManage/running/pdf/healthyReport.pdf"; + String templatePath = "D:\\contract\\healthyReport.pdf"; String fileName = "healthyReport" + healthyDetailRequest.getCustomerId() + System.currentTimeMillis() + ".pdf"; String filePath = RuoYiConfig.getDownloadPath() + fileName; //查询客户健康信息 SysCustomerHealthy sysCustomerHealthy = selectSysCustomerHealthyById(healthyDetailRequest.getId()); if(sysCustomerHealthy != null){ - ajaxResult = PdfUtils.generatePdfFile(templatePath, filePath, getReportData(sysCustomerHealthy, healthyDetailRequest)); ajaxResult.put("path", fileName); } @@ -192,10 +191,35 @@ public class SysCustomerHealthyServiceImpl implements ISysCustomerHealthyService }; private Map getReportData(SysCustomerHealthy sysCustomerHealthy, HealthyDetailRequest healthyDetailRequest){ + if(StringUtils.isNotEmpty(sysCustomerHealthy.getBloodData())){ + SysDictData param = new SysDictData(); + param.setDictType("sys_moisture_data"); + param.setDictValueList(Arrays.asList(sysCustomerHealthy.getBloodData().split(","))); + List bloodData = selectDictDataByTypeAndValue(param); + String bloodString = ""; + for (SysDictData blood : bloodData) { + bloodString += blood.getDictValue() + "、" +blood.getDictLabel() + "\n"; + } + healthyDetailRequest.setBloodData(bloodString); + } + if(StringUtils.isNotEmpty(sysCustomerHealthy.getMoistureDate())){ + SysDictData param = new SysDictData(); + param.setDictType("sys_blood_data"); + param.setDictValueList(Arrays.asList(sysCustomerHealthy.getBloodData().split(","))); + List moistureData = selectDictDataByTypeAndValue(param); + String moistureString = ""; + for (SysDictData moisture : moistureData) { + moistureString += moisture.getDictValue() + "、" + moisture.getDictLabel() + "\n"; + } + healthyDetailRequest.setMoistureDate(moistureString); + } Map data = new HashMap<>(); for (String key : healthyAttrNameAray) { data.put(key, ReflectUtils.getFieldValueByFieldName(key, healthyDetailRequest)); } + //减脂指导 + data.put("guidance", sysCustomerHealthy.getGuidance()); + //营养热量分析数据 NutritionalCalories nutritionalCalories = NutritionalUtils.getNutritionalCaloriesData(sysCustomerHealthy); nutritionalCalories.setNutritionalHeat_one(nutritionalCalories.getNutritionalHeat()[0].toString()); nutritionalCalories.setNutritionalHeat_two(nutritionalCalories.getNutritionalHeat()[1].toString()); @@ -208,13 +232,28 @@ public class SysCustomerHealthyServiceImpl implements ISysCustomerHealthyService 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()); + data.put(key, nutritionalCalories.getTargetEveryWeightHeat()[0].intValue()+"-"+nutritionalCalories.getTargetEveryWeightHeat()[1].intValue()); + continue; } if("standardEveryWeightHeat".equals(key)){ - data.put(key, nutritionalCalories.getStandardEveryWeightHeat()[0].toString()+"-"+nutritionalCalories.getStandardEveryWeightHeat()[1].toString()); + data.put(key, nutritionalCalories.getStandardEveryWeightHeat()[0].intValue()+"-"+nutritionalCalories.getStandardEveryWeightHeat()[1].intValue()); + continue; } data.put(key, ReflectUtils.getFieldValueByFieldName(key, nutritionalCalories)); } + data.put("company","深圳胜唐体控有限公司"); + data.put("date", DateUtils.getDate()); return data; } + + + /** + * 根据类型、键值集合查询字典类型 + * @param sysDictData + * @return + */ + @Override + public List selectDictDataByTypeAndValue(SysDictData sysDictData){ + return sysCustomerHealthyMapper.selectDictDataByTypeAndValue(sysDictData); + } } \ 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 6b334a05e..fbdf3ffff 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 @@ -29,6 +29,7 @@ import java.util.List; @Service("sysRecipesPlanService") @Transactional public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { + public static final String generateRecipesPlanLockKey = "generateRecipesPlanLock::%s"; @Autowired private SysRecipesPlanMapper sysRecipesPlanMapper; @@ -137,6 +138,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { //判断是否提成单,拆分单中的副单,体验单 if(sysOrder.getAfterSaleCommissOrder().intValue() == 1 || ("1".equals(sysOrder.getOrderType()) && sysOrder.getMainOrderId().intValue() == 1) || "2".equals(sysOrder.getOrderType())){ + System.out.println("---------------------不生成食谱------------------------"); return; } try { @@ -144,7 +146,6 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { if (synchrolockUtil.lock(String.format(generateRecipesPlanLockKey, orderId))) { SysRecipesPlan queryParam = new SysRecipesPlan(); queryParam.setOrderId(orderId); - List oldRecipesPlanList = sysRecipesPlanMapper.selectSysRecipesPlanList(queryParam); //判断是否已存在食谱 /*if (oldRecipesPlanList != null && oldRecipesPlanList.size() > 0) { Long[] orderIdArray = new Long[1]; @@ -156,10 +157,15 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { pauseParam.setOrderId(sysOrder.getOrderId()); //暂停记录列表 List pauseList = sysOrderPauseService.selectSysOrderPauseList(pauseParam); - List planList = generatePlan(sysOrder, oldRecipesPlanList, - DateUtils.dateToLocalDate(sysOrder.getStartTime()), DateUtils.dateToLocalDate(sysOrder.getServerEndTime()), pauseList); - if (planList != null && planList.size() > 0) { - sysRecipesPlanMapper.insertBatch(planList); + List planList = generatePlan(sysOrder, DateUtils.dateToLocalDate(sysOrder.getStartTime()), DateUtils.dateToLocalDate(sysOrder.getServerEndTime()), pauseList); + //判断是否已存在食谱计划 + List oldRecipesPlanList = sysRecipesPlanMapper.selectSysRecipesPlanList(queryParam); + if(oldRecipesPlanList != null && oldRecipesPlanList.size() > 0){ + + }else{ + if (planList != null && planList.size() > 0) { + sysRecipesPlanMapper.insertBatch(planList); + } } } } catch (Exception e) { @@ -174,14 +180,12 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { * 根据订单ID、订单开始服务时间、结束时间、暂停列表生成食谱计划列表 * * @param sysOrder 订单对象 - * @param oldRecipesPlanList 旧的食谱计划 * @param serverStartDate 服务开始时间 * @param serverEndDate 服务结束时间 * @param pauseList 暂停列表 * @return */ - public List generatePlan(SysOrder sysOrder, List oldRecipesPlanList, - LocalDate serverStartDate, LocalDate serverEndDate, List pauseList) { + public List generatePlan(SysOrder sysOrder, LocalDate serverStartDate, LocalDate serverEndDate, List pauseList) { List planList = new ArrayList<>(); boolean breakFlag = false; LocalDate planStartDate = serverStartDate; @@ -200,17 +204,12 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { sysRecipesPlan.setEndDate(DateUtils.localDateToDate(planEndDate)); sysRecipesPlan.setOrderId(sysOrder.getOrderId()); sysRecipesPlan.setCusId(sysOrder.getCusId()); - /*//当开始时间小于等于当前时间,默认为已发送,发送时间为前一天 - if(ChronoUnit.DAYS.between(planStartDate, LocalDate.now()) >= 0){ - sysRecipesPlan.setSendFlag(1); - sysRecipesPlan.setSendTime(DateUtils.localDateToDate(LocalDate.now().minusDays(1))); - }*/ + sysRecipesPlan.setEndNumDay(); //将旧食谱计划中的发送状态、发送时间、食谱复制到新食谱计划中 - boolean existFlag = oldRecipesPlanList.size() >= planList.size() + 1; + /*boolean existFlag = oldRecipesPlanList.size() >= planList.size() + 1; sysRecipesPlan.setSendFlag(existFlag ? oldRecipesPlanList.get(planList.size()).getSendFlag() : 0); sysRecipesPlan.setSendTime(existFlag ? oldRecipesPlanList.get(planList.size()).getSendTime() : null); - sysRecipesPlan.setRecipesId(existFlag ? oldRecipesPlanList.get(planList.size()).getRecipesId() : null); - + sysRecipesPlan.setRecipesId(existFlag ? oldRecipesPlanList.get(planList.size()).getRecipesId() : null);*/ planList.add(sysRecipesPlan); planStartDate = planEndDate.plusDays(1); diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerHealthyMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerHealthyMapper.xml index 7f32de28e..437aedd3f 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerHealthyMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerHealthyMapper.xml @@ -112,6 +112,7 @@ + @@ -123,7 +124,7 @@ select sch.id, customer_id, conditioning_project_id, sex, age, weight, tall, condiment, other_condiment, cooking_style, cooking_style_rate, wash_vegetables_style, other_wash_vegetables_style, breakfast_type, breakfast_food, lunch_type, dinner, vegetable_rate, common_meat, dinner_time, supper_num, supper_food, diet_hot_and_cold, diet_flavor, vegetables_num, vegetables_rate_type, fruits_num, fruits_time, fruits_rate, rice_num, rice_full, eating_speed, snacks, other_snacks, health_products_flag, health_products_brand, health_products_name, health_products_week_rate, health_products_day_rate, water_num, water_type, water_habit, drinks_num, drink_wine_flag, drink_wine_classify, other_wine_classify, drink_wine_amount, smoke_flag, smoke_rate, second_smoke, work_industry, work_type, defecation_num, other_defecation_num, defecation_time, defecation_shape, defecation_smell, defecation_speed, defecation_color, motion_num, motion_duration, motion_time, aerobic_motion_classify, anaerobic_motion_classify, anaerobic_aerobic_motion_classify, other_motion_classify, motion_field, other_motion_field, sleep_time, sleep_quality, sleep_drug_flag, sleep_drug, stayup_late_flag, stayup_late_week_num, family_illness_history, other_family_illness_history, operation_history, other_operation_history, near_operation_flag, recoverye_situation, long_eat_drug_flag, long_eat_drug_classify, other_long_eat_drug_classify, allergy_flag, allergy_situation, allergen, other_allergen, medical_report, medical_report_name, - position,experience,rebound,difficulty,crux,dishes_ingredient,make_food_type,physical_signs_id,other_physical_signs,blood_data,moisture_date,sch.remark, + position,experience,rebound,difficulty,crux,dishes_ingredient,make_food_type,physical_signs_id,other_physical_signs,blood_data,moisture_date,sch.remark,sch.guidance, sch.create_time, sch.create_by,sch. update_time, sch.update_by, sch.del_flag @@ -261,6 +262,7 @@ blood_data, moisture_date, remark, + guidance, create_time, create_by, update_time, @@ -369,6 +371,7 @@ #{bloodData}, #{moistureDate}, #{remark}, + #{guidance}, #{createTime}, #{createBy}, #{updateTime}, @@ -480,6 +483,7 @@ blood_data = #{bloodData}, moisture_date = #{moistureDate}, remark = #{remark}, + guidance = #{guidance}, create_time = #{createTime}, create_by = #{createBy}, update_time = #{updateTime}, @@ -517,4 +521,20 @@ update sys_customer_healthy set del_flag = 1 where customer_id = #{customerId} + + + + + + + + + + \ No newline at end of file diff --git a/stdiet-ui/src/components/PhysicalSignsDialog/index.vue b/stdiet-ui/src/components/PhysicalSignsDialog/index.vue index 7f39b74b6..d7702d4dd 100644 --- a/stdiet-ui/src/components/PhysicalSignsDialog/index.vue +++ b/stdiet-ui/src/components/PhysicalSignsDialog/index.vue @@ -3,7 +3,8 @@
- 生成报告 + 下载报告 + 减脂指导 修改备注 修改信息 删除信息 @@ -25,6 +26,15 @@ + + + + + + + +
@@ -72,6 +82,8 @@ + + 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 @@ + + + +