From e9f2a48f3e8df3af26a270341e9ed1e5b79eda68 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期日, 11 五月 2025 18:15:06 +0800 Subject: [PATCH] 添加检验生成失败的补偿机制 --- src/main/java/com/gs/xky/task/ScheduledTasks.java | 16 ++++- src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java | 4 + src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java | 3 + src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java | 8 ++ src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java | 7 ++ src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java | 36 +++++++++++- src/test/java/com/gs/xky/XkyApplicationTests.java | 28 +++++---- src/main/resources/mapper/DeliveryNoticeMapper.xml | 12 ++++ src/main/java/com/gs/xky/service/DeliveryNoticeService.java | 7 ++ src/main/resources/mapper/MesInvItemArnMapper.xml | 13 ++++ src/main/java/com/gs/xky/service/MesInvItemArnService.java | 3 + src/main/resources/mapper/MesInvItemArnDetailMapper.xml | 6 ++ src/main/resources/application.yml | 2 13 files changed, 126 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java b/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java index 0028e2a..6d6a002 100644 --- a/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java +++ b/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java @@ -21,6 +21,14 @@ * @param result 杈撳嚭鍙傛暟 */ void callPdaReceiptBtn(@Param("C_IN_STR") String inStr, @Param("C_RESULT") String result); + + //PRC_MES_INV_ITEM_ARN_STATUS22 + void callPrcMesInvItemArnStatus22(@Param("PI_FACTORY") String factory, + @Param("PI_COMPANY") String company, + @Param("P_USERCODE") String userCode, + @Param("P_ID") Long id, + @Param("PO_RESULT") Integer poResult, + @Param("PO_TEXT") String poText); } diff --git a/src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java b/src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java index fa58444..09a6676 100644 --- a/src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java +++ b/src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java @@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.MesInvItemArnDetail; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author 28567 @@ -11,6 +14,7 @@ */ public interface MesInvItemArnDetailMapper extends BaseMapper<MesInvItemArnDetail> { + List<MesInvItemArnDetail> selectListByMid(@Param("mid") String mid); } diff --git a/src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java b/src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java index 14cd385..a75e635 100644 --- a/src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java +++ b/src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.MesInvItemArn; +import java.util.List; + /** * @author 28567 * @description 閽堝琛ㄣ�怣ES_INV_ITEM_ARN(鐗╂枡鍏ュ簱涓昏〃)銆戠殑鏁版嵁搴撴搷浣淢apper @@ -11,6 +13,7 @@ */ public interface MesInvItemArnMapper extends BaseMapper<MesInvItemArn> { + List<MesInvItemArn> selectItemArnMinus(); } diff --git a/src/main/java/com/gs/xky/service/DeliveryNoticeService.java b/src/main/java/com/gs/xky/service/DeliveryNoticeService.java index e123ddc..e14b875 100644 --- a/src/main/java/com/gs/xky/service/DeliveryNoticeService.java +++ b/src/main/java/com/gs/xky/service/DeliveryNoticeService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.dto.XkyDetail; import com.gs.xky.entity.DeliveryNotice; +import com.gs.xky.entity.MesInvItemArn; + +import java.util.List; /** * @author 28567 @@ -15,4 +18,8 @@ void callPdaReceiptBtn(String inStr, String result); + + Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id); + + void processMesInvItemArnStatusAsync(List<MesInvItemArn> itemArnMinus); } diff --git a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java index 22fd36d..01c0d13 100644 --- a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java +++ b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java @@ -10,9 +10,11 @@ import com.gs.xky.dto.XkyDetail; import com.gs.xky.entity.DeliveryNotice; import com.gs.xky.entity.DeliveryNoticeDetail; +import com.gs.xky.entity.MesInvItemArn; import com.gs.xky.mapper.DeliveryNoticeMapper; import com.gs.xky.service.DeliveryNoticeDetailService; import com.gs.xky.service.DeliveryNoticeService; +import com.gs.xky.service.MesInvItemArnService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -33,6 +35,8 @@ implements DeliveryNoticeService { private final DeliveryNoticeDetailService detailService; + + private final MesInvItemArnService invItemArnService; @Override @@ -92,8 +96,34 @@ public void callPdaReceiptBtn(String inStr, String result) { baseMapper.callPdaReceiptBtn(inStr, result); } -} + + @Override + public Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id) { + Integer poResult = 1; + String poText = ""; + + // 璋冪敤瀛樺偍杩囩▼ + baseMapper.callPrcMesInvItemArnStatus22(factory, company, userCode, id, poResult, poText); + + // 杩斿洖缁撴灉 + return poResult; + } + + // - - + @Override + public void processMesInvItemArnStatusAsync(List<MesInvItemArn> itemArnMinus) { + // 閬嶅巻姣忎釜 itemArn + itemArnMinus.forEach(itemArn -> { + try { + // 澶勭悊姣忎釜 itemArn + processMesInvItemArnStatus("1000", "1000", "PL017", itemArn.getId()); + } catch (Exception e) { + // 澶勭悊寮傚父锛屼緥濡傝褰曟棩蹇� + System.err.println("Error processing itemArn: " + itemArn.getId()); + e.printStackTrace(); + } + }); + } +} \ No newline at end of file diff --git a/src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java index f323c3f..bb0b0c0 100644 --- a/src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java +++ b/src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java @@ -6,6 +6,8 @@ import com.gs.xky.service.MesInvItemArnService; import org.springframework.stereotype.Service; +import java.util.List; + /** * @author 28567 * @description 閽堝琛ㄣ�怣ES_INV_ITEM_ARN(鐗╂枡鍏ュ簱涓昏〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇 @@ -15,6 +17,11 @@ public class MesInvItemArnServiceImpl extends ServiceImpl<MesInvItemArnMapper, MesInvItemArn> implements MesInvItemArnService { + + @Override + public List<MesInvItemArn> getItemArnMinus() { + return baseMapper.selectItemArnMinus(); + } } diff --git a/src/main/java/com/gs/xky/service/MesInvItemArnService.java b/src/main/java/com/gs/xky/service/MesInvItemArnService.java index e0f2b64..71fa207 100644 --- a/src/main/java/com/gs/xky/service/MesInvItemArnService.java +++ b/src/main/java/com/gs/xky/service/MesInvItemArnService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.entity.MesInvItemArn; +import java.util.List; + /** * @author 28567 * @description 閽堝琛ㄣ�怣ES_INV_ITEM_ARN(鐗╂枡鍏ュ簱涓昏〃)銆戠殑鏁版嵁搴撴搷浣淪ervice @@ -10,4 +12,5 @@ */ public interface MesInvItemArnService extends IService<MesInvItemArn> { + List<MesInvItemArn> getItemArnMinus(); } diff --git a/src/main/java/com/gs/xky/task/ScheduledTasks.java b/src/main/java/com/gs/xky/task/ScheduledTasks.java index 410dee3..60e53f9 100644 --- a/src/main/java/com/gs/xky/task/ScheduledTasks.java +++ b/src/main/java/com/gs/xky/task/ScheduledTasks.java @@ -5,9 +5,8 @@ import com.gs.xky.config.DingTalkParam; import com.gs.xky.config.DingTalkResponse; import com.gs.xky.dto.EmployeeInfo; -import com.gs.xky.service.ApiService; -import com.gs.xky.service.MesStaffService; -import com.gs.xky.service.XkyService; +import com.gs.xky.entity.MesInvItemArn; +import com.gs.xky.service.*; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -26,6 +25,10 @@ private final MesStaffService staffService; + private final DeliveryNoticeService deliveryNoticeService; + + private final MesInvItemArnService invItemArnService; + /** * 姣忎簲鍒嗛挓鎵ц涓�娆� * 鑾峰彇璁惧鏈�杩戠殑涓�鏉¤褰� @@ -40,6 +43,13 @@ xkyService.GetSaveDetail(); } + @Scheduled(cron = "10 3,8,13,18,23,28,33,38,43,48,53,58 * * * ?") + public void compensateMethod() throws IOException { + // 琛ュ伩閫昏緫 + List<MesInvItemArn> itemArnMinus = invItemArnService.getItemArnMinus(); + deliveryNoticeService.processMesInvItemArnStatusAsync(itemArnMinus); + } + @Scheduled(cron = "0 0/53 * * * ?") public void getDinTalkData() throws IOException { DingTalkParam dingTalkParam = new DingTalkParam(1); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 23d7f85..25dad16 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,7 +5,7 @@ datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: oracle.jdbc.OracleDriver - url: jdbc:oracle:thin:@122.226.249.238:5936/ORCL + url: jdbc:oracle:thin:@192.168.1.104:1521/ORCL username: zmz_prd password: zmzprd druid: diff --git a/src/main/resources/mapper/DeliveryNoticeMapper.xml b/src/main/resources/mapper/DeliveryNoticeMapper.xml index a4c2215..9628047 100644 --- a/src/main/resources/mapper/DeliveryNoticeMapper.xml +++ b/src/main/resources/mapper/DeliveryNoticeMapper.xml @@ -4,6 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.DeliveryNoticeMapper"> + <select id="getNextVal" resultType="java.lang.Long"> SELECT SEQ_XKY.NEXTVAL FROM DUAL @@ -16,4 +17,15 @@ #{C_RESULT, mode=OUT, jdbcType=VARCHAR} )} </select> + + <select id="callPrcMesInvItemArnStatus22" statementType="CALLABLE" resultType="java.lang.String"> + {call PRC_MES_INV_ITEM_ARN_STATUS22( + #{PI_FACTORY, mode=IN, jdbcType=VARCHAR}, + #{PI_COMPANY, mode=IN, jdbcType=VARCHAR}, + #{P_USERCODE, mode=IN, jdbcType=VARCHAR}, + #{P_ID, mode=IN, jdbcType=NUMERIC}, + #{PO_RESULT, mode=OUT, jdbcType=NUMERIC}, + #{PO_TEXT, mode=OUT, jdbcType=VARCHAR} + )} + </select> </mapper> diff --git a/src/main/resources/mapper/MesInvItemArnDetailMapper.xml b/src/main/resources/mapper/MesInvItemArnDetailMapper.xml index bad7565..48ea5e1 100644 --- a/src/main/resources/mapper/MesInvItemArnDetailMapper.xml +++ b/src/main/resources/mapper/MesInvItemArnDetailMapper.xml @@ -4,4 +4,10 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.MesInvItemArnDetailMapper"> + <select id="selectListByMid" resultType="com.gs.xky.entity.MesInvItemArnDetail"> + SELECT EBELN, WORK_LINE, ITEM_NO, ITEM_ID, ID + FROM mes_inv_item_arn_detail + WHERE MID = #{mid} + GROUP BY EBELN, WORK_LINE, ITEM_NO, ITEM_ID, ID + </select> </mapper> diff --git a/src/main/resources/mapper/MesInvItemArnMapper.xml b/src/main/resources/mapper/MesInvItemArnMapper.xml index 43a618c..5c29da2 100644 --- a/src/main/resources/mapper/MesInvItemArnMapper.xml +++ b/src/main/resources/mapper/MesInvItemArnMapper.xml @@ -4,4 +4,17 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.MesInvItemArnMapper"> + <select id="selectItemArnMinus" resultType="com.gs.xky.entity.MesInvItemArn"> + select * + from mes_inv_item_arn + where BILL_NO in (select BILL_NO + from (select b.BILL_NO + from mes_inv_item_arn_detail a + left join mes_inv_item_arn b on a.mid = b.id + where a.check_states = '寰呮') + minus + select LOT_NO + from MES_QA_ITEMS_DETECT_01) + and FSTATUS = 1 + </select> </mapper> diff --git a/src/test/java/com/gs/xky/XkyApplicationTests.java b/src/test/java/com/gs/xky/XkyApplicationTests.java index 5b77922..35d4455 100644 --- a/src/test/java/com/gs/xky/XkyApplicationTests.java +++ b/src/test/java/com/gs/xky/XkyApplicationTests.java @@ -1,13 +1,12 @@ package com.gs.xky; -import com.alibaba.fastjson2.JSON; import com.gs.xky.config.ApiResponse; import com.gs.xky.config.BodyParam; import com.gs.xky.config.DataAcquisitionConfiguration; import com.gs.xky.config.XkyCommonParam; import com.gs.xky.dto.BarcodeDeliveryNo; -import com.gs.xky.dto.LineList; import com.gs.xky.dto.XkyDetail; +import com.gs.xky.entity.MesInvItemArn; import com.gs.xky.service.*; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -15,7 +14,6 @@ import java.io.IOException; import java.util.List; -import java.util.stream.Collectors; @SpringBootTest class XkyApplicationTests { @@ -36,10 +34,16 @@ @Autowired private TblBarcodeInformationService barcodeInformationService; + @Autowired + private MesInvItemArnService invItemArnService; + @Test void contextLoads() throws IOException { -// xkyService.GetSaveDetail(); + List<MesInvItemArn> itemArnMinus = invItemArnService.getItemArnMinus(); + + deliveryNoticeService.processMesInvItemArnStatusAsync(itemArnMinus); + } @Test @@ -50,7 +54,7 @@ BodyParam bodyParam = new BodyParam(); bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); - bodyParam.setDeliveryNo("222504146397"); + bodyParam.setDeliveryNo("222504279H65"); bodyParam.setStatus(new int[]{1, 6}); param.setBody(bodyParam); @@ -58,13 +62,13 @@ ApiResponse<XkyDetail> detail = apiService.sendListRequest(param, XkyDetail.class, "https://openapi.xiekeyun.com/delivery/getDetail.json"); XkyDetail deliveryNo = detail.getData(); - List<LineList> collect = deliveryNo.getLineList().stream().filter(s -> "1".equals(s.getStatus())).collect(Collectors.toList()); - System.out.println(JSON.toJSONString(collect)); -// deliveryNoticeService.saveDeliveryNotice(deliveryNo); -// List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo()); -// barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo()); -// -// deliveryNoticeService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + deliveryNo.getDeliveryNo(), ""); +// List<LineList> collect = deliveryNo.getLineList().stream().filter(s -> "1".equals(s.getStatus())).collect(Collectors.toList()); +// System.out.println(JSON.toJSONString(collect)); + deliveryNoticeService.saveDeliveryNotice(deliveryNo); + List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo()); + barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo()); + + deliveryNoticeService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + deliveryNo.getDeliveryNo(), ""); } private List<BarcodeDeliveryNo> GetBarcodeInformation(String deliveryNo) throws IOException { -- Gitblit v1.9.3