Quellcode durchsuchen

【英唐-CATL条码对接】【CATL容量字段调整->内箱容量与盘容量不一致时,内箱DC取箱内最小DC】

wuyx vor 3 Monaten
Ursprung
Commit
fc3f4cb6b0

+ 39 - 7
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -480,6 +480,11 @@ public class ERPServiceImpl implements ERPService {
                             List<Map<String,Object>> panIdList = outdata.stream().filter(od->{
                                 return (Double.valueOf(od.get("levels").toString().trim()) == 2);
                             }).collect(Collectors.toList());
+                            // 根据标签ID排序
+                            panIdList.sort(Comparator.comparing(
+                                    pm -> (String) pm.get("zalt_id"),
+                                    Comparator.nullsFirst(String::compareTo)
+                            ));
                             String zeivr = StringUtil.nvl(outdata.get(0).get("zeivr"),"");
                             String zeiar = StringUtil.nvl(outdata.get(0).get("zeiar"),"");
                             //更新箱ID、袋ID
@@ -487,6 +492,7 @@ public class ERPServiceImpl implements ERPService {
                             SqlRowList updateList = baseDao.queryForRowSet("select cd_id,cd_lotno,cd_dc,nvl(cd_ed,to_char(to_date(cd_dc,'yyyymmdd')+365,'yyyymmdd')) cd_ed from CatlDocDetail " +
                                     " where cd_caid = "+id+" and CD_PANID is null and CD_id in ("+cd_ids+") order by cd_detno");
                             List<Map<String,Object>> updateStickerList = new ArrayList<>();
+                            Map<String,Map<String,Object>> updateBoxStickers = new HashMap<>();
                             if(panIdList.size() == updateList.getResultList().size()){
                                 for (int i = 0; i < updateList.getResultList().size(); i++) {
                                     Map<String,Object> updateMap = updateList.getResultList().get(i);
@@ -514,19 +520,45 @@ public class ERPServiceImpl implements ERPService {
                                         updatePanMap.put("atlyx",updateMap.get("cd_ed"));//有效日期
                                         updateStickerList.add(updatePanMap);
                                         Map<String,Object> updateBoxMap = new HashMap<>();
-                                        updateBoxMap.put("matnr",matnr);//物料号
-                                        updateBoxMap.put("zalt_id",boxId);//贴纸ID
-                                        updateBoxMap.put("prtbatchid",updateMap.get("cd_lotno"));//供应商批次
-                                        updateBoxMap.put("manufacturing_date",updateMap.get("cd_dc"));//生产日期
-                                        updateBoxMap.put("atlyx",updateMap.get("cd_ed"));//有效日期
-                                        updateStickerList.add(updateBoxMap);
+                                        if(docMap.get("zzxsmount").equals(docMap.get("zbzsmount"))){//箱容量 = 盘容量 一起更
+                                            updateBoxMap.put("matnr",matnr);//物料号
+                                            updateBoxMap.put("zalt_id",boxId);//贴纸ID
+                                            updateBoxMap.put("prtbatchid",updateMap.get("cd_lotno"));//供应商批次
+                                            updateBoxMap.put("manufacturing_date",updateMap.get("cd_dc"));//生产日期
+                                            updateBoxMap.put("atlyx",updateMap.get("cd_ed"));//有效日期
+                                            updateStickerList.add(updateBoxMap);
+                                        }else {
+                                            if(!updateBoxStickers.containsKey(boxId)) {
+                                                updateBoxMap.put("matnr",matnr);//物料号
+                                                updateBoxMap.put("zalt_id",boxId);//贴纸ID
+                                                updateBoxMap.put("prtbatchid",updateMap.get("cd_lotno"));//供应商批次
+                                                updateBoxMap.put("manufacturing_date",updateMap.get("cd_dc"));//生产日期
+                                                updateBoxMap.put("atlyx",updateMap.get("cd_ed"));//有效日期
+                                                updateBoxStickers.put(boxId,updateBoxMap);
+                                            }else{
+                                                updateBoxMap = updateBoxStickers.get(boxId);
+                                                if(DateUtil.compare(updateBoxMap.get("manufacturing_date").toString(),updateMap.get("cd_dc").toString(),Constant.YMD2)>0){//取最小DC
+                                                    updateBoxMap.put("prtbatchid",updateMap.get("cd_lotno"));//供应商批次
+                                                    updateBoxMap.put("manufacturing_date",updateMap.get("cd_dc"));//生产日期
+                                                    updateBoxMap.put("atlyx",updateMap.get("cd_ed"));//有效日期
+                                                    updateBoxStickers.put(boxId,updateBoxMap);
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                                if(!docMap.get("zzxsmount").equals(docMap.get("zbzsmount"))){
+                                    logger.info("updateSticker-begin: boxcode {}", docMap.get("cd_newboxcode"));
+                                    for(String boxId:updateBoxStickers.keySet()){
+                                        updateStickerList.add(updateBoxStickers.get(boxId));
+//                                        logger.info("updateSticker-begin: boxId {} LOTNO {} DC {}", boxId,updateBoxStickers.get(boxId).get("prtbatchid"), updateBoxStickers.get(boxId).get("manufacturing_date"));
                                     }
                                 }
                                 // 更新栈ID、箱ID、袋ID
                                 if(sqls.size()>0){
                                     baseDao.execute(sqls);
                                     //第二个接口 更新供应商批次
-                                    logger.info("updateSticker-begin: cd_ids {}", cd_ids);
+//                                    logger.info("updateSticker-begin: cd_ids {}", cd_ids);
                                     Map<String,Object> updateStickerMap = updateStickerByList(master, id,map,updateStickerList);
                                     if(!(boolean) updateStickerMap.get("success")){
                                         errMsg.append("更新供应商批次失败:客户料号:"+matnr).append(updateStickerMap.get("message")).append("</br>");

+ 1 - 1
src/main/java/com/uas/eis/utils/Constant.java

@@ -27,7 +27,7 @@ public class Constant {
 	public static final String REGEXP_MOBILE = "^[1|8][3-8]\\d{9}$|^([6|9])\\d{7}$|^[0][9]\\d{8}$|^[6]([8|6])\\d{5}$|^(886|0)[9]\\d{8}$";
 
 	public static final String REGEXP_EMAIL = "^([\\w-])+(\\.\\w+)*@([\\w-])+((\\.\\w{2,3}){1,3})$";
-
+	public final static String YMD2 = "yyyyMMdd";
 	/**
 	 * 求和
 	 * */

+ 20 - 1
src/main/java/com/uas/eis/utils/DateUtil.java

@@ -13,7 +13,6 @@ public class DateUtil {
 	static final SimpleDateFormat YM = new SimpleDateFormat("yyyy-MM");
 	static final SimpleDateFormat YMD = new SimpleDateFormat("yyyy-MM-dd");
 	static final SimpleDateFormat YMD_HMS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
 	public static String format(Date date, String f) {
 		if (date == null) {
 			date = new Date();
@@ -285,6 +284,26 @@ public class DateUtil {
 		}
 		return 0;
 	}
+	public static int compare(String date1, String date2,String f) {
+		try {
+			if(f==null){
+				return compare(date1,date2);
+			}
+			SimpleDateFormat sf = new SimpleDateFormat(f);
+			Date dt1 = sf.parse(date1);
+			Date dt2 = sf.parse(date2);
+			if (dt1.getTime() > dt2.getTime()) {
+				return 1;
+			} else if (dt1.getTime() < dt2.getTime()) {
+				return -1;
+			} else {
+				return 0;
+			}
+		} catch (Exception exception) {
+			exception.printStackTrace();
+		}
+		return 0;
+	}
 
 	/**
 	 * 获取特定日期是星期几

+ 34 - 1
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -26,7 +26,40 @@ public class UasEisApplicationTests {
 	private BaseDao baseDao;
 	@Autowired
 	private ERPService erpService;
+	@Test
+	public void testSortList() {
+		List<Map<String,Object>> panIdList = new ArrayList<>();
+		//ZALT_ID, BATCH_ID, ZALT_ID_UPPER
+		SqlRowList pList = baseDao.queryForRowSet("select zalt_id, batch_id, zalt_id_upper from N_HUASL_SZ.CATLDOC_OUTDATA WHERE CDO_CAID = 1003  and ZREMARKS= 5 and LEVELS_ = 2" +
+				"    order by CDO_ID");
+		panIdList = pList.getResultList();
+		// 根据标签ID排序
+		panIdList.sort(Comparator.comparing(
+				pm -> (String) pm.get("zalt_id"),
+				Comparator.nullsFirst(String::compareTo)
+		));
+		//zalt_id_upper
+		List<String> boxCodes = new ArrayList<>();
+		for (Map<String,Object> od:panIdList){
+			if(!boxCodes.contains(od.get("zalt_id_upper").toString())){
+				boxCodes.add(od.get("zalt_id_upper").toString());
+			}
+		}
+		for (int j = 0; j < boxCodes.size(); j++) {
+			String boxCode = boxCodes.get(j);
+			System.out.println(j+":" + boxCode);
+		}
+		// 打印排序后的结果
+		for (int i = 0; i < 4; i++) {
+			Map<String, Object> map = panIdList.get(i);
+			System.out.println(i+":" + map.get("zalt_id") + " " + map.get("batch_id") + " " + map.get("zalt_id_upper"));
+		}
 
+	}
+	@Test
+	public void TestDate(){//DateUtil.compare(updateBoxMap2.get("manufacturing_date").toString(),updateMap.get("cd_dc").toString(),Constant.YMD2)
+		System.out.println(DateUtil.compare("20240325","20240326",Constant.YMD2));
+	}
 	@Test
 	public void TestUrl11(){
 		try {
@@ -124,7 +157,7 @@ public class UasEisApplicationTests {
 	}
 	@Test
 	public void TestCreateSticker(){
-		Map<String, Object> resMap = erpService.createSticker2("N_HUASL_SZ", 361);
+		Map<String, Object> resMap = erpService.createSticker2("N_HUASL_SZ", 1003);
 		System.out.println("resMap:"+resMap.toString());
 	}