diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedListController.java b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedListController.java index 895f061..db39029 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedListController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedListController.java @@ -1,6 +1,8 @@ package com.zhyc.module.feed.controller; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -63,19 +65,19 @@ public class SgFeedListController extends BaseController { List list = sgFeedListService.selectSgFeedListList(sgFeedList); // 用 map 中已有的数据替换 list 中的元素 List replacedList = new ArrayList<>(); - for (SgFeedList item : list) { - String key = item.getFormulaId() + "_" + item.getFormulaBatchId(); - // 从缓存中取出完整对象 - SgFeedList itemInCache = SgFeedListServiceImpl.getSgFeedListMap().getOrDefault(key, item); - // 将数据库查询的基本信息替换掉缓存中去除的内容 - 前端展示与修改需要 - itemInCache.setId(item.getId()); - itemInCache.setFormulaBatchId(item.getFormulaBatchId()); - itemInCache.setFormulaId(item.getFormulaId()); - itemInCache.setZookeeper(item.getZookeeper()); - itemInCache.setDeployDate(item.getDeployDate()); - // 替换为 map 中的对象 - replacedList.add(itemInCache); - } + for (SgFeedList item : list) { + String key = item.getFormulaId() + "_" + item.getFormulaBatchId() + "_" + item.getDeployDate(); + // 从缓存中取出完整对象 + SgFeedList itemInCache = SgFeedListServiceImpl.getSgFeedListMap().getOrDefault(key, item); + // 将数据库查询的基本信息替换掉缓存中去除的内容 - 前端展示与修改需要 + itemInCache.setId(item.getId()); + itemInCache.setFormulaBatchId(item.getFormulaBatchId()); + itemInCache.setFormulaId(item.getFormulaId()); + itemInCache.setZookeeper(item.getZookeeper()); + itemInCache.setDeployDate(item.getDeployDate()); + // 替换为 map 中的对象 + replacedList.add(itemInCache); + } return getDataTable(replacedList); } @@ -117,6 +119,7 @@ public class SgFeedListController extends BaseController { @Log(title = "配料清单", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody SgFeedList sgFeedList) { + return toAjax(sgFeedListService.updateSgFeedList(sgFeedList)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedList.java b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedList.java index 0b3c61b..41ca828 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedList.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedList.java @@ -53,6 +53,8 @@ public class SgFeedList extends BaseEntity private List formulaList; + private List planList; + @Override public String toString() { diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/mapper/SgFeedListMapper.java b/zhyc-module/src/main/java/com/zhyc/module/feed/mapper/SgFeedListMapper.java index 47e837c..b80e580 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/mapper/SgFeedListMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/mapper/SgFeedListMapper.java @@ -60,4 +60,7 @@ public interface SgFeedListMapper * @return 结果 */ int deleteSgFeedListByIds(Long[] ids); + + // 清空所有 + int deleteAll(); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedListServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedListServiceImpl.java index 225d851..894ff47 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedListServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedListServiceImpl.java @@ -1,8 +1,6 @@ package com.zhyc.module.feed.service.impl; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import com.zhyc.module.feed.domain.SgFeedPlan; import com.zhyc.module.feed.domain.SgFormulaManagement; @@ -32,6 +30,12 @@ public class SgFeedListServiceImpl implements ISgFeedListService { this.sgFeedListMapper = sgFeedListMapper; this.sgFormulaManagementService = sgFormulaManagementService; this.sgFeedPlanService = sgFeedPlanService; + // 构造时将数据库初始数据写入缓存 + List feedListsFromDataBase = this.selectSgFeedListList(new SgFeedList()); + for (SgFeedList sgFeedListItem : feedListsFromDataBase) { + String key = sgFeedListItem.getFormulaId() + "_" + sgFeedListItem.getFormulaBatchId() + "_" + sgFeedListItem.getDeployDate(); + sgFeedListMap.put(key, sgFeedListItem); + } } /** @@ -100,7 +104,7 @@ public class SgFeedListServiceImpl implements ISgFeedListService { return sgFeedListMapper.deleteSgFeedListById(id); } - public void SyncFeedList() { + public void SyncFeedList_old() { // 清空旧缓存 sgFeedListMap.clear(); // 获取配方管理和现有配料清单内容 @@ -153,6 +157,74 @@ public class SgFeedListServiceImpl implements ISgFeedListService { } } + public void SyncFeedList() { + HashMap cacheTemp = new HashMap<>(sgFeedListMap); + // 清空旧缓存 + sgFeedListMap.clear(); + List sgFeedPlans = sgFeedPlanService.selectSgFeedPlanList(new SgFeedPlan()); + List> planGroups = new ArrayList<>(); + List currentFeedPlan = new ArrayList<>(); + if (!sgFeedPlans.isEmpty()) { + String currentFormulaId = sgFeedPlans.get(0).getFormulaId(); + String currentBatchId = sgFeedPlans.get(0).getBatchId(); + Date currentDate = sgFeedPlans.get(0).getPlanDate(); + // 对饲喂计划进行分组 + for (SgFeedPlan sgFeedPlan : sgFeedPlans) { + if (sgFeedPlan.getBatchId() != null && !sgFeedPlan.getBatchId().equals("0")) { + if (sgFeedPlan.getFormulaId().equals(currentFormulaId) && sgFeedPlan.getBatchId().equals(currentBatchId) && sgFeedPlan.getPlanDate().equals(currentDate)) { + currentFeedPlan.add(sgFeedPlan); + } else { + currentDate = sgFeedPlan.getPlanDate(); + currentBatchId = sgFeedPlan.getBatchId(); + currentFormulaId = sgFeedPlan.getFormulaId(); + planGroups.add(currentFeedPlan); + currentFeedPlan = new ArrayList<>(); + // 立即插入否则会丢失该元素 + currentFeedPlan.add(sgFeedPlan); + } + } + } + // 插入最后一个列表 - 否则该列表会丢失 + planGroups.add(currentFeedPlan); + // 注册数据 - 每一个List为一个清单 + for (List sgFeedPlanList : planGroups) { + SgFeedList sgFeedList = new SgFeedList(); + // 计算饲喂总和 + SgFeedPlan rootPlan = computePlanTotal(sgFeedPlanList); + sgFeedList.setRootPlan(rootPlan); + sgFeedList.setPlanList(sgFeedPlanList); + // 写入信息 + sgFeedList.setFormulaId(sgFeedPlanList.get(0).getFormulaId()); + sgFeedList.setFormulaBatchId(sgFeedPlanList.get(0).getBatchId()); + sgFeedList.setDeployDate(sgFeedPlanList.get(0).getPlanDate()); + // 写入配方管理信息 + SgFormulaManagement formulaManagementQuery = new SgFormulaManagement(); + formulaManagementQuery.setFormulaId(sgFeedList.getFormulaId()); + formulaManagementQuery.setBatchId(sgFeedList.getFormulaBatchId()); + List formulaManagements = sgFormulaManagementService.selectSgFormulaManagementList(formulaManagementQuery); + if (!formulaManagements.isEmpty()) { + sgFeedList.setRootFormula(formulaManagements.get(0)); + sgFeedList.setFormulaList(formulaManagements.get(0).getSgFormulaList()); + } + String cacheKey = sgFeedList.getFormulaId() + "_" + sgFeedList.getFormulaBatchId() + "_" + sgFeedList.getDeployDate(); + // 从就缓存中查找,如果存在则更新可修改的值 + if (cacheTemp.containsKey(cacheKey)) { + SgFeedList cacheItem = cacheTemp.get(cacheKey); + sgFeedList.setZookeeper(cacheItem.getZookeeper()); + } + sgFeedListMap.put(cacheKey, sgFeedList); + } + + List toDataBase = new ArrayList<>(sgFeedListMap.values()); + // 清空再写入 + this.sgFeedListMapper.deleteAll(); + // 处理结果写入数据库 + for (SgFeedList recordItem : toDataBase) { + this.insertSgFeedList(recordItem); + } + } + } + /** * 计算某个配方某个批次的总和值 * @@ -176,7 +248,8 @@ public class SgFeedListServiceImpl implements ISgFeedListService { planFeedAfternoonSize += sgFeedPlan.getPlanAfternoonSize(); planFeedTotalSize += sgFeedPlan.getPlanFeedTotal(); } - + rootPlan.setFormulaId(sgFeedPlans.get(0).getFormulaId()); + rootPlan.setBatchId(sgFeedPlans.get(0).getBatchId()); rootPlan.setSheepCount(sheepCountTotal); rootPlan.setPlanDailySize(sheepDailySize); rootPlan.setPlanMorningSize(planFeedMorningSize); diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedStatisticServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedStatisticServiceImpl.java index b1766bd..b82d0b4 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedStatisticServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedStatisticServiceImpl.java @@ -119,7 +119,7 @@ public class SgFeedStatisticServiceImpl implements ISgFeedStatisticService { sgFeedListService.SyncFeedList(); // 从缓存获取完整配方清单 - String cacheKey = sgFeedStatistic.getFormulaId() + "_" + sgFeedStatistic.getFormulaBatchId(); + String cacheKey = sgFeedStatistic.getFormulaId() + "_" + sgFeedStatistic.getFormulaBatchId() + "_" + sgFeedStatistic.getFeedDate(); SgFeedList sgFeedList = SgFeedListServiceImpl.getSgFeedListMap().get(cacheKey); if (sgFeedList != null && sgFeedList.getFormulaList() != null) { @@ -148,7 +148,7 @@ public class SgFeedStatisticServiceImpl implements ISgFeedStatisticService { SgFeedPlan sgFeedPlanQuery = new SgFeedPlan(); sgFeedPlanQuery.setFormulaId(sgFeedStatistic.getFormulaId()); sgFeedPlanQuery.setBatchId(sgFeedStatistic.getFormulaBatchId()); - + sgFeedPlanQuery.setPlanDate(sgFeedStatistic.getFeedDate()); List sgFeedPlans = sgFeedPlanService.selectSgFeedPlanList(sgFeedPlanQuery); if (!sgFeedPlans.isEmpty()) { diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBreastRating.java b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBreastRating.java index 872bf26..4eda878 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBreastRating.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBreastRating.java @@ -31,7 +31,7 @@ public class ScBreastRating extends BaseEntity { */ private String sheepId; - @Excel(name = "羊只id") + @Excel(name = "管理耳号") private String manageTags; /** diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeComment.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeComment.java index 8e1b0cb..5db6214 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeComment.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeComment.java @@ -27,7 +27,7 @@ public class ScChangeComment extends BaseEntity { * 羊只id */ private String sheepId; - + @Excel(name = "管理耳号") private String manageTags; /** 羊舍 */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzStockInController.java b/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzStockInController.java index 6705202..4eef0ae 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzStockInController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzStockInController.java @@ -47,6 +47,7 @@ public class WzStockInController extends BaseController { startPage(); List list = wzStockInService.selectWzStockInList(wzStockIn); + logger.debug(wzStockIn.toString()); return getDataTable(list); } diff --git a/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml index 1371396..9efa115 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml @@ -35,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and sheep_id = #{sheepId} + and bs.manage_tags like concat('%',#{sheepNo},'%') and datetime between #{params.beginDatetime} and #{params.endDatetime} and technical = #{technical} diff --git a/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml index 3de1d50..09684ab 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml @@ -34,9 +34,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + select s.id, datetime, sheep_id, usage_id, variety, sheep_type, s.gender, month_age, s.parity, breed, technical, + s.comment, s.update_by, s.update_time, s.create_by, s.create_time, + bs.manage_tags sheep_no + from sw_immunity s + left join bas_sheep bs on s.sheep_id = bs.id and sheep_id = #{sheepId} and sheep_type = #{sheepType} + and bs.manage_tags like concat('%',#{sheepNo},'%') and datetime between #{params.beginDatetime} and #{params.endDatetime} and technical = #{technical} diff --git a/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml index 5e07a30..2ee56a2 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml @@ -44,9 +44,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/zhyc-module/src/main/resources/mapper/stock/WzStockInMapper.xml b/zhyc-module/src/main/resources/mapper/stock/WzStockInMapper.xml index 55c5c1e..d472047 100644 --- a/zhyc-module/src/main/resources/mapper/stock/WzStockInMapper.xml +++ b/zhyc-module/src/main/resources/mapper/stock/WzStockInMapper.xml @@ -41,6 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and business_type = #{businessType} and repository_name like concat('%', #{repositoryName}, '%') and material_name like concat('%', #{materialName}, '%') + and doc_date = #{docDate}