From f58830d3d2cf26588005dd4f27b5714a60d0ac72 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Thu, 21 Mar 2024 11:50:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A4=E7=90=86=E8=AE=B0=E5=BD=95=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=83=BD=E9=87=8F=E5=9B=BE=E8=B0=B1=E6=8B=BC=E6=8E=A5?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/WxNursingLogMapper.xml | 2 +- .../controller/WxNursingLogController.java | 4 +- .../service/impl/WxNursingLogServiceImpl.java | 74 +++++++++++++++---- 3 files changed, 61 insertions(+), 19 deletions(-) diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxNursingLogMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxNursingLogMapper.xml index c994c05..afd5547 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxNursingLogMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxNursingLogMapper.xml @@ -176,7 +176,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" nursing_days_week = #{nursingDaysWeek}, nursing_days_month = #{nursingDaysMonth}, nursing_days_year = #{nursingDaysYear}, - nursing_days_year = #{nursingData}, + nursing_data = #{nursingData}, where id = #{id} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxNursingLogController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxNursingLogController.java index 9e48123..d9b77cd 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxNursingLogController.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxNursingLogController.java @@ -29,9 +29,9 @@ public class WxNursingLogController extends BaseController { /** * 查询用户护理记录 - * @param instrumentId 当在护理报告中,查询某个仪器的列表使用 - * @param queryDate 当在护理报告中,查询某个历史之前的仪器的列表使用 * + * @param instrumentId 当在护理报告中,查询某个仪器的列表使用 + * @param queryDate 当在护理报告中,查询某个历史之前的仪器的列表使用 */ @GetMapping("/record") public TableDataInfo record(@RequestParam(value = "instrumentId", required = false) Long instrumentId, diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxNursingLogServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxNursingLogServiceImpl.java index 4c99c77..faa7fad 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxNursingLogServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxNursingLogServiceImpl.java @@ -7,7 +7,9 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.flossom.common.core.domain.entity.*; import com.flossom.common.core.domain.req.WxNursingLogReq; import com.flossom.common.core.domain.ret.WxNursingStatisticsRet; @@ -175,25 +177,65 @@ public class WxNursingLogServiceImpl implements IWxNursingLogService { throw new ServiceException("请求数据有误"); } String modeType = wxMode.getModeType(); - // 水分测试 - if (StringUtils.equals(modeType, "moistureTest")) { - updateNursingLog.setNursingData(wxNursingLogReq.getNursingData()); + // 判断当前模式是否设置了能量图谱 + int maxEnergySize = 0;// 能量图谱最大值 + Boolean isEnergyAtlas = false;//是否设置了最大值 + List fr200EnergyAtlas = DictUtils.getDictCache("fr200_energy_atlas"); + for (SysDictData energyAtlas : fr200EnergyAtlas) { + if (StringUtils.equals(modeType, energyAtlas.getDictType())) { + maxEnergySize = Integer.valueOf(energyAtlas.getDictValue()); + isEnergyAtlas = true; + } } - // 能量图谱 - if (StringUtils.equals(modeType, "face") || StringUtils.equals(modeType, "eyes") - || StringUtils.equals(modeType, "nasolabialFold") || StringUtils.equals(modeType, "mandibularLine") - || StringUtils.equals(modeType, "headLiftingPro")) { - String nursingData = wxNursingLog.getNursingData(); - if (StringUtils.isBlank(nursingData)) { - updateNursingLog.setNursingData(wxNursingLogReq.getNursingData()); + if (isEnergyAtlas) { + String oldNursingData = wxNursingLog.getNursingData(); // 旧的能量图谱 + if (StringUtils.isBlank(oldNursingData)) { + // 第一次上传仪器护理记录,需要判断能量图片是否超过规定 + String newNursingData = wxNursingLogReq.getNursingData(); + if (StringUtils.isNotBlank(newNursingData)) { + JSONObject newJsonObject = JSON.parseObject(newNursingData); + String newGearData = newJsonObject.get("GearData").toString(); + if (StringUtils.isNotBlank(newGearData)) { + JSONArray newGearDataJsonArray = JSON.parseArray(newGearData); + newJsonObject.put("GearData", newGearDataJsonArray.subList(0, Math.min(maxEnergySize, newGearDataJsonArray.size()))); + updateNursingLog.setNursingData(newJsonObject.toJSONString()); + } + } } else { - JSONObject nursingDatajsonObject = JSONObject.parseObject(nursingData); - Object o = (Object[])nursingDatajsonObject.get("GearData"); - if (nursingDatajsonObject.get("GearData") != null) { - - + String newNursingData = wxNursingLogReq.getNursingData(); + JSONObject newJsonObject = JSON.parseObject(newNursingData); + String newGearData = newJsonObject.get("GearData").toString(); + JSONObject oldNursingDataJsonObject = JSON.parseObject(oldNursingData); + String oldGearData = oldNursingDataJsonObject.get("GearData").toString(); + if (StringUtils.isBlank(newGearData)) { + if (StringUtils.isBlank(oldGearData)) { + // 1、两个都是空的,直接保存最新的 + updateNursingLog.setNursingData(wxNursingLog.getNursingData()); + } else { + // 2、新的是空的,旧的不是空的,将旧的补充过来 + JSONArray oldGearDataJsonArray = JSON.parseArray(oldGearData); + newJsonObject.put("GearData", oldGearDataJsonArray.subList(0, Math.min(maxEnergySize, oldGearDataJsonArray.size()))); + updateNursingLog.setNursingData(newJsonObject.toJSONString()); + } + } else { + if (StringUtils.isBlank(oldGearData)) { + // 4、新的不是空的,旧的是空的,直接保存新的(判断新的是否符合规定) + JSONArray newGearDataJsonArray = JSON.parseArray(newGearData); + newJsonObject.put("GearData", newGearDataJsonArray.subList(0, Math.min(maxEnergySize, newGearDataJsonArray.size()))); + updateNursingLog.setNursingData(newJsonObject.toJSONString()); + } else { + // 3、新的不是空的,旧的不是空的,将旧的补充过来 + JSONArray newGearDataJsonArray = JSON.parseArray(newGearData); + JSONArray oldGearDataJsonArray = JSON.parseArray(oldGearData); + oldGearDataJsonArray.addAll(newGearDataJsonArray.subList(0, Math.min(maxEnergySize - oldGearDataJsonArray.size(), newGearDataJsonArray.size()))); + newJsonObject.put("GearData", oldGearDataJsonArray); + updateNursingLog.setNursingData(newJsonObject.toJSONString()); + } } } + } else { + // 其他模式取最新的 + updateNursingLog.setNursingData(wxNursingLogReq.getNursingData()); } }