From f6abc8c724eed706487b7616bc6c816e5db5c939 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期二, 09 十二月 2025 20:13:48 +0800
Subject: [PATCH] 数量检测页面提交
---
fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/grain/GrainManager.java | 498 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 498 insertions(+), 0 deletions(-)
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/grain/GrainManager.java b/fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/grain/GrainManager.java
new file mode 100644
index 0000000..77972e0
--- /dev/null
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/grain/GrainManager.java
@@ -0,0 +1,498 @@
+package com.fzzy.sys.manager.grain;
+
+import com.fzzy.igds.constant.OrderRespEnum;
+import com.fzzy.igds.constant.RespCodeEnum;
+import com.fzzy.igds.data.*;
+import com.fzzy.igds.domain.Depot;
+import com.fzzy.igds.domain.DepotConf;
+import com.fzzy.igds.domain.DeviceSer;
+import com.fzzy.igds.domain.Grain;
+import com.fzzy.igds.io.manager.RemoteManager;
+import com.fzzy.igds.io.order.ExeOrderService;
+import com.fzzy.igds.io.service.RemoteGrainService;
+import com.fzzy.igds.request.ExeBaseRequest;
+import com.fzzy.igds.request.GrainReqData;
+import com.fzzy.igds.request.ReqStatus;
+import com.fzzy.igds.response.GrainResponse;
+import com.fzzy.igds.service.DepotConfService;
+import com.fzzy.igds.service.DepotService;
+import com.fzzy.igds.service.DeviceSerService;
+import com.fzzy.igds.service.GrainService;
+import com.fzzy.igds.utils.ContextUtil;
+import com.fzzy.igds.utils.DateUtil;
+import com.fzzy.igds.utils.GrainDataBuilder;
+import com.fzzy.igds.utils.GrainPrintBuilder;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import java.text.Collator;
+import java.util.*;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/12/9 9:56
+ */
+@Slf4j
+@Component
+public class GrainManager {
+
+ @Resource
+ private DepotService depotService;
+ @Resource
+ private DepotConfService depotConfService;
+ @Resource
+ private GrainService grainService;
+ @Resource
+ private DeviceSerService deviceSerService;
+ @Resource
+ private RemoteManager remoteManager;
+ @Resource
+ private ExeOrderService exeOrderService;
+ @Resource
+ private GrainExportBuilder grainExportBuilder;
+
+ public PageResponse<List<GrainData>> queryListGrainData(GrainParam param) {
+ if (StringUtils.isEmpty(param.getDepotId())) {
+ return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(),
+ "娌℃湁鑾峰彇鍒颁粨搴撳弬鏁般��");
+ }
+ if (StringUtils.isEmpty(param.getCompanyId())) {
+ param.setCompanyId(ContextUtil.getCompanyId());
+ }
+
+ if (null != param.getCheckDate()) {
+ param.setStart(DateUtil.getCurZero(param.getCheckDate()));
+ param.setEnd(DateUtil.getNextZero(param.getCheckDate()));
+ param.setCheckDate(null);
+ }
+
+ if (null != param.getCheckMonth()) {
+ param.setStart(DateUtil.getMonthFirst(param.getCheckMonth()));
+ param.setEnd(DateUtil.getNextMonthFirst(param.getCheckMonth()));
+ param.setCheckMonth(null);
+ }
+
+ List<Grain> list = grainService.listData(param);
+ if (null == list || list.isEmpty()) {
+ return null;
+ }
+
+ // 娣诲姞浠撳簱淇℃伅
+ Depot depotData = depotService.getCacheDepot(param.getCompanyId(), param.getDepotId());
+ if (null == depotData) {
+ log.error("鏈幏鍙栧埌浠撳簱淇℃伅");
+ }
+
+ List<GrainData> result = new ArrayList<>();
+ DepotConf depotConf;
+ GrainData data;
+ for (Grain grain : list) {
+ depotConf = depotConfService.getCacheDepotConfByDepotId(grain.getCompanyId(), grain.getDepotId());
+ data = new GrainData();
+ BeanUtils.copyProperties(grain, data);
+ GrainDataBuilder.updateGrainData(data, depotConf, depotData.getDepotType());
+ data.setDepotData(depotData);
+ result.add(data);
+ }
+
+
+ for (GrainData grainData : result) {
+ grainData.setDepotData(depotData);
+ }
+ return new PageResponse<>(RespCodeEnum.CODE_0000, result);
+ }
+
+ /**
+ * 鍗曚粨閲囬泦
+ *
+ * @param param
+ * @return
+ */
+ public GrainResponse checkSingle(GrainParam param) {
+ if (StringUtils.isEmpty(param.getCompanyId())) {
+ param.setCompanyId(ContextUtil.getCompanyId());
+ }
+
+ if (StringUtils.isEmpty(param.getDeptId())) {
+ param.setDeptId(ContextUtil.subDeptId(null));
+ }
+
+ if (StringUtils.isEmpty(param.getDepotId())) {
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+ "娌℃湁鑾峰彇鍒颁粨搴撳弬鏁帮紝璇烽噸鏂伴�夋嫨浠撳簱骞舵墽琛岋紒");
+ }
+
+ try {
+ // 缂撳瓨鑾蜂粨搴撻厤缃俊鎭�
+ DepotConf depotConf = depotConfService.getCacheDepotConfByDepotId(param.getCompanyId(), param.getDepotId());
+
+ if (null == depotConf) {
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+ "褰撳墠浠撳簱娌℃湁閰嶇疆绮儏鍙傛暟锛屾墽琛岃鎷掔粷锛�");
+ }
+
+ // 鑾峰彇鍒嗘満淇℃伅
+ DeviceSer deviceSer = deviceSerService.getCacheSer(param.getCompanyId(), depotConf.getGrainSer());
+
+ if (null == deviceSer) {
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+ "褰撳墠浠撳簱娌℃湁閰嶇疆绮儏鍒嗘満锛屾墽琛岃鎷掔粷锛�");
+ }
+
+ Depot depot = depotService.getCacheDepot(depotConf.getCompanyId(), depotConf.getDepotId());
+
+ //鏁版嵁灏佽
+ ExeBaseRequest request = new ExeBaseRequest<GrainReqData>();
+ request.setDepotId(param.getDepotId());
+ request.setCompanyId(param.getCompanyId());
+ request.setBizType("grain");
+ request.setExeUser(ContextUtil.getLoginUserName());
+ request.setDepotName(depot.getName());
+ request.setDeptId(ContextUtil.subDeptId(null));
+ request.setProtocol(deviceSer.getProtocol());
+ request.setAddLogTag(true);
+ request.setIp(deviceSer.getIp());
+ request.setPort(deviceSer.getPort());
+ request.setSerId(deviceSer.getId());
+ request.setSerName(deviceSer.getName());
+ request.setSn(deviceSer.getSn());
+
+ request.setExeMsg("绮儏閲囬泦锛屼粨搴�=" + request.getDepotName());
+
+ GrainReqData reqData = new GrainReqData();
+ reqData.setCableStart(depotConf.getCableStart());
+ reqData.setCableEnd(depotConf.getCableEnd());
+ reqData.setCableRule(depotConf.getCableRule());
+ // 鏂板娓╂箍搴︿俊鎭�
+ reqData.setThSerId(depotConf.getThSer());
+ reqData.setThConf(depotConf.getThConf());
+ //澶氫粨骞跺彂鏍囧織
+ reqData.setIsMoreDepot(deviceSer.getIsMoreDepot());
+
+ request.setReqData(reqData);
+
+ RemoteGrainService remoteGrainService = remoteManager.getRemoteGrainService(deviceSer.getProtocol());
+
+ if (null == remoteGrainService) {
+ String msg = "绯荤粺娌℃湁" + request.getProtocol() + "鐨勫崗璁疄鐜帮紝鎵ц琚嫆缁濓紒";
+ request.setErrorMsg(msg);
+ request.setStatus(ReqStatus.SEND_ERROR.getCode());
+ exeOrderService.addLogAndCache(request);
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(), msg);
+ }
+
+ GrainResponse result = remoteGrainService.checkGrain(request);
+
+ if (!OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) {
+ String msg = request.getDepotName() + "璇锋眰澶辫触:" + result.getMsg();
+ request.setErrorMsg(msg);
+ request.setStatus(ReqStatus.SEND_ERROR.getCode());
+ }
+
+ exeOrderService.addLogAndCache(request);
+ return result;
+
+ } catch (Exception e) {
+ log.error("绮儏鎵ц寮傚父锛歿}", e.getLocalizedMessage());
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+ "绯荤粺寮傚父锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 鎵归噺閲囬泦
+ *
+ * @param param
+ * @return
+ */
+ public GrainResponse checkBatch(GrainParam param) {
+ if (null == param.getDepotIds()) {
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+ "娌℃湁鑾峰彇鍒颁粨搴撳弬鏁帮紝璇烽噸鏂伴�夋嫨浠撳簱骞舵墽琛岋紒");
+ }
+ if (StringUtils.isEmpty(param.getCompanyId())) {
+ param.setCompanyId(ContextUtil.getCompanyId());
+ }
+
+ if (StringUtils.isEmpty(param.getDeptId())) {
+ param.setDeptId(ContextUtil.subDeptId(null));
+ }
+
+ try {
+ String[] attr = param.getDepotIds().split(",");
+
+ // 缂撳瓨鑾蜂粨搴撻厤缃俊鎭�
+ DepotConf depotConf;
+ // 鑾峰彇鍒嗘満淇℃伅
+ DeviceSer deviceSer;
+ ExeBaseRequest request;
+ GrainReqData reqData;
+ //鎵ц鍙戦�佸懡浠�
+ RemoteGrainService remoteGrainService;
+ GrainResponse result;
+ Depot depot;
+ for (String depotId : attr) {
+ param.setDepotId(depotId);
+
+ //鏁版嵁灏佽
+ request = new ExeBaseRequest<GrainReqData>();
+ request.setDepotId(param.getDepotId());
+ request.setCompanyId(param.getCompanyId());
+ request.setBizType("grain");
+ request.setExeUser(ContextUtil.getLoginUserName());
+
+ request.setDeptId(ContextUtil.subDeptId(null));
+ request.setAddLogTag(true);
+
+ reqData = new GrainReqData();
+
+ depotConf = depotConfService.getCacheDepotConfByDepotId(param.getCompanyId(), param.getDepotId());
+
+ depot = depotService.getCacheDepot(depotConf.getCompanyId(), depotConf.getDepotId());
+
+ if (null == depotConf) {
+ request.setErrorMsg("鎵ц澶辫触锛屾病鏈夎幏鍙栫伯鎯呭弬鏁伴厤缃�");
+ request.setReqData(reqData);
+ request.setStatus(ReqStatus.SEND_ERROR.getCode());
+ exeOrderService.addLogAndCache(request);
+ continue;
+ }
+ request.setDepotName(depot.getName());
+
+ deviceSer = deviceSerService.getCacheSer(param.getCompanyId(), depotConf.getGrainSer());
+
+ if (null == deviceSer) {
+ request.setErrorMsg("鎵ц澶辫触锛屾病鏈夎幏鍙栧埌鍒嗘満淇℃伅");
+ request.setReqData(reqData);
+ request.setStatus(ReqStatus.SEND_ERROR.getCode());
+ exeOrderService.addLogAndCache(request);
+ continue;
+ }
+
+ request.setProtocol(deviceSer.getProtocol());
+ request.setIp(deviceSer.getIp());
+ request.setPort(deviceSer.getPort());
+ request.setSerId(deviceSer.getId());
+ request.setSerName(deviceSer.getName());
+ request.setSn(deviceSer.getSn());
+
+ request.setExeMsg("绮儏閲囬泦锛屼粨搴�=" + request.getDepotName());
+
+ reqData.setCableStart(depotConf.getCableStart());
+ reqData.setCableEnd(depotConf.getCableEnd());
+ reqData.setCableRule(depotConf.getCableRule());
+
+ // 鏂板娓╂箍搴︿俊鎭�
+ reqData.setThSerId(depotConf.getThSer());
+ reqData.setThConf(depotConf.getThConf());
+ //澶氫粨骞跺彂
+ reqData.setIsMoreDepot(deviceSer.getIsMoreDepot());
+ request.setReqData(reqData);
+
+ //鎵ц鍛戒护
+ remoteGrainService = remoteManager.getRemoteGrainService(deviceSer.getProtocol());
+ if (null == remoteGrainService) {
+ //鍙戦�佸紓甯�
+ request.setErrorMsg("绯荤粺娌℃湁" + request.getProtocol() + "鐨勫崗璁疄鐜帮紝鎵ц琚嫆缁濓紒");
+ request.setStatus(ReqStatus.SEND_ERROR.getCode());
+ exeOrderService.addLogAndCache(request);
+ continue;
+ }
+
+ result = remoteGrainService.checkGrain(request);
+ if (!OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) {
+ request.setErrorMsg(request.getDepotName() + "璇锋眰澶辫触:" + result.getMsg());
+ request.setStatus(ReqStatus.SEND_ERROR.getCode());
+ }
+
+ exeOrderService.addLogAndCache(request);
+
+ Thread.sleep(200);
+ }
+ } catch (Exception e) {
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+ "鍚庡彴鎵ц寮傚父锛�" + e.getMessage());
+ }
+ return new GrainResponse(OrderRespEnum.ORDER_SUCCESS.getCode(),
+ "鎵归噺鎵ц绮儏妫�娴嬪懡浠ゅ彂閫佹垚鍔燂紝璇风瓑寰呯粓绔搷搴斺�︹��");
+ }
+
+ /**
+ *
+ * @param param
+ * @return
+ */
+ public PageResponse<List<GrainData>> pageListGrainData(GrainParam param) {
+ if (StringUtils.isEmpty(param.getCompanyId())) {
+ param.setCompanyId(ContextUtil.getCompanyId());
+ }
+ if (StringUtils.isEmpty(param.getDepotId())) {
+ return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(),
+ "娌℃湁鑾峰彇鍒颁粨搴撳弬鏁帮紝鎵ц澶辫触锛�");
+ }
+
+ param.setTagUpdate(false);
+ List<Grain> list = grainService.listData(param);
+
+ DepotConf depotConf;
+ GrainData data;
+ Depot depotData;
+ List<GrainData> result = new ArrayList<>();
+ for (Grain grain : list) {
+ depotConf = depotConfService.getCacheDepotConfByDepotId(grain.getCompanyId(), grain.getDepotId());
+ data = new GrainData();
+ BeanUtils.copyProperties(grain, data);
+ // 娣诲姞浠撳簱淇℃伅
+ depotData = depotService.getCacheDepot(param.getCompanyId(), param.getDepotId());
+ GrainDataBuilder.updateGrainData(data, depotConf, depotData.getDepotType());
+ result.add(data);
+ }
+
+ if (null == result) {
+ return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "褰撳墠鏉′欢涓嬫病鏈夎幏鍙栧埌绮儏淇℃伅锛侊紒");
+ }
+
+ return new PageResponse<List<GrainData>>(RespCodeEnum.CODE_0000, result);
+ }
+
+ /**
+ * 鏍规嵁鍙傛暟鑾峰彇褰撳墠鎵撳嵃闇�瑕佺殑妯℃澘
+ *
+ * @param param
+ * @return
+ */
+ public PageResponse<PrintModeData> buildPrintModel(GrainParam param) {
+ if (null == param.getCompanyId()) {
+ param.setCompanyId(ContextUtil.getCompanyId());
+ }
+ if (StringUtils.isEmpty(param.getDepotType())) {
+ return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+ "娌℃湁鑾峰彇鍒板綋鍓嶄粨搴撶殑浠撳簱绫诲瀷");
+ }
+ if (StringUtils.isEmpty(param.getCableRule()) && StringUtils.isEmpty(param.getCableCir())) {
+ return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+ "娌℃湁鑾峰彇褰撳墠浠撳簱鐨勫竷绾胯鍒�");
+ }
+ PrintModeData result = GrainPrintBuilder.buildPrintModel(param);
+
+ if (null == result) {
+ return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+ "绯荤粺娌℃湁鑾峰彇褰撳墠浠撳簱鐨勮〃鍗曟ā鏉�");
+ }
+
+ if (StringUtils.isNotEmpty(result.getMsg())) {
+ return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+ result.getMsg());
+ }
+
+ return new PageResponse<>(RespCodeEnum.CODE_0000, result);
+ }
+
+ /**
+ *
+ * @param param
+ * @return
+ */
+ public PageResponse<Map<String, PrintModeData>> buildPrintModelAll(GrainParam param) {
+
+ Map<String, PrintModeData> result = new HashMap<>();
+
+ List<DepotConf> depotConfList = depotConfService.getCacheDepotConfList(param.getCompanyId());
+ PrintModeData modeData;
+ String key;
+ Depot cacheDepot;
+ for (DepotConf conf : depotConfList) {
+ cacheDepot = depotService.getCacheDepot(param.getCompanyId(), conf.getDepotId());
+ param.setCableRule(conf.getCableRule());
+ param.setDepotId(conf.getDepotId());
+ param.setCableCir(conf.getCableCir());
+ param.setDepotType(cacheDepot.getDepotType());
+
+ if (StringUtils.isNotEmpty(param.getCableCir())) {
+ key = param.getDepotType() + "_" + param.getCableRule() + "_" + param.getCableCir();
+ } else {
+ key = param.getDepotType() + "_" + param.getCableRule();
+ }
+ if (null == result.get(key)) {
+ modeData = GrainPrintBuilder.buildPrintModel(param);
+ result.put(key, modeData);
+ }
+ }
+ return new PageResponse<>(RespCodeEnum.CODE_0000, result);
+ }
+
+ /**
+ *
+ * @param param
+ * @return
+ */
+ public GrainResponse exportBatch(GrainParam param) {
+
+ //鏍规嵁鏉′欢鑾峰彇闇�瑕佹墦鍗扮殑绮儏淇℃伅
+
+ if (null != param.getCheckDate()) {
+ param.setStart(DateUtil.getCurZero(param.getCheckDate()));
+ param.setEnd(DateUtil.getNextZero(param.getCheckDate()));
+ param.setCheckDate(null);
+ }
+
+ //鑾峰彇宸茬粡绮儏鏍煎紡鍖栧畬鎴愮殑绮儏鏁版嵁
+ param.setTagUpdate(true);
+ PageResponse<List<GrainData>> listPageResponse = this.pageListGrainData(param);
+ List<GrainData> list = listPageResponse.getData();
+
+ if (null == list || list.isEmpty()) {
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+ "褰撳墠鏉′欢涓嬫病鏈夋煡璇㈠埌绮儏妫�娴嬭褰曪紝鍙栨秷瀵煎嚭");
+ }
+
+ //鎸夌収浠撳簱缂栫爜浠庢柊鎺掑簭
+ Collator sortChina = Collator.getInstance(Locale.CHINA);
+ Collections.sort(list, (a, b) -> sortChina.compare(a.getDepotId(), b.getDepotId()));
+
+ //鑾峰彇缂撳瓨鐨勪粨搴撳垪琛紝鐢ㄤ簬鑾峰彇浠撳簱鍚嶇О
+ List<Depot> listDepot = depotService.getCacheDepotList(param.getCompanyId(), param.getDeptId());
+
+ //鍘婚櫎閲嶅鐨勭伯鎯呮暟鎹�
+ LinkedHashMap<String, GrainData> dataMap = new LinkedHashMap<>();
+ for (GrainData data : list) {
+ if (null != dataMap.get(data.getDepotId())) continue;
+
+ dataMap.put(data.getDepotId(), data);
+ }
+
+
+ String fileName = grainExportBuilder.exportByMapData(dataMap, listDepot);
+
+ if (fileName.startsWith("ERROR")) {
+ return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+ "鎵ц瀵煎嚭鍑虹幇閿欒锛�" + fileName);
+ }
+
+ return new GrainResponse(OrderRespEnum.ORDER_SUCCESS.getCode(),
+ fileName);
+ }
+
+ /**
+ *
+ * @param deptId
+ * @return
+ */
+ public List<ExeBaseRequest> orderList(String deptId) {
+ return exeOrderService.getAllOrderByDeptId("grain","BIZ", deptId, 2 * 60 * 8);
+ }
+
+ /**
+ *
+ * @param param
+ * @return
+ */
+ public PageResponse<String> cleanOrderList(IgdsBaseParam param) {
+ exeOrderService.clean(param.getCompanyId(), "grain", param.getDeptId());
+
+ return new PageResponse<>(RespCodeEnum.CODE_0000, "鎵ц鎴愬姛");
+ }
+}
--
Gitblit v1.9.3