diff --git a/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java b/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java index f36ed096..7fc3e284 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java +++ b/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java @@ -49,6 +49,9 @@ public interface CoDelMapper { void changeEcssDelStatus(EcssCoDelNotifyHeaderData data); void updateEcssDelDetailForModify(EcssCoDelNotifyHeaderData data); + + void updateEcssDelDetailSurplusQty(EcssCoDelNotifyHeaderData data); + void updateEcssDelDetailStatus(EcssCoDelNotifyHeaderData data); void recoverEcssDelDetailStatus(EcssCoDelNotifyHeaderData data); diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java index 13d55ce9..52a2ebae 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java @@ -3189,6 +3189,23 @@ public class CoDelServiceImpl implements CoDelService { List checkList = coDelMapper.selectPalletDetailList(boxData); // 记录当前箱子对应的exportList起始索引 int boxStartIndex = exportList.size(); + + // 判断当前箱子所有明细的rolls是否全部为空或0 + boolean allDetailRollsEmptyOrZero = true; + for (int j = 0; j < checkList.size(); j++) { + Object rollsObj = checkList.get(j).get("rolls"); + if (rollsObj != null) { + BigDecimal rollsValue = (BigDecimal) rollsObj; + if (rollsValue.compareTo(BigDecimal.ZERO) != 0) { + allDetailRollsEmptyOrZero = false; + break; + } + } + } + // 获取box的rolls + BigDecimal boxRolls = list.get(m).get("rolls") != null ? + ((BigDecimal) list.get(m).get("rolls")).setScale(0, RoundingMode.HALF_UP) : BigDecimal.ZERO; + for (int i = 0; i < checkList.size(); i++) { Map eorder = checkList.get(i); String partNo = (String) eorder.get("part_no"); @@ -3201,9 +3218,21 @@ public class CoDelServiceImpl implements CoDelService { eorder.put("noCartons", isFirstRow ? noCartons.setScale(0, RoundingMode.HALF_UP) : ""); eorder.put("gross_weight", isFirstRow ? ((BigDecimal) list.get(m).get("gross_weight")).setScale(2, RoundingMode.HALF_UP) : ""); eorder.put("net_weight", isFirstRow ? ((BigDecimal) list.get(m).get("net_weight")).setScale(2, RoundingMode.HALF_UP) : ""); - BigDecimal cuRolls = eorder.get("rolls") !=null?((BigDecimal)eorder.get("rolls")).setScale(0, RoundingMode.HALF_UP):BigDecimal.valueOf(0.0); - eorder.put("rolls", cuRolls); - rolls = rolls.add(cuRolls); + + // rolls处理:如果明细的rolls全部为空或0,则取box的rolls;合箱时合并居中显示 + if (allDetailRollsEmptyOrZero) { + // 使用box的rolls,合箱时只在第一行显示(用于合并单元格居中) + eorder.put("rolls", isFirstRow ? boxRolls : ""); + if (isFirstRow) { + rolls = rolls.add(boxRolls); + } + } else { + // 使用明细的rolls + BigDecimal cuRolls = eorder.get("rolls") != null ? + ((BigDecimal) eorder.get("rolls")).setScale(0, RoundingMode.HALF_UP) : BigDecimal.ZERO; + eorder.put("rolls", cuRolls); + rolls = rolls.add(cuRolls); + } EcssCoDelNotifyDetailData nodifyData = notifyDetailMap.get(partNo); // 只有RFID需要 String lossratio=""; @@ -3238,6 +3267,10 @@ public class CoDelServiceImpl implements CoDelService { template.addMergeRegion(boxStartIndex, boxEndIndex, 6); // 合并毛重列(第7列,索引7) template.addMergeRegion(boxStartIndex, boxEndIndex, 7); + // 如果明细rolls全为空/0,使用box的rolls时需要合并居中显示(第5列,索引5) + if (allDetailRollsEmptyOrZero) { + template.addMergeRegion(boxStartIndex, boxEndIndex, 8); + } } totalCartons = totalCartons.add(list.get(m).get("box_qty") !=null? new BigDecimal(list.get(m).get("box_qty").toString()) : BigDecimal.valueOf(0.0)); grossWeight = grossWeight.add(list.get(m).get("gross_weight") !=null?new BigDecimal(list.get(m).get("gross_weight").toString()):BigDecimal.valueOf(0.0)); @@ -3894,7 +3927,7 @@ public class CoDelServiceImpl implements CoDelService { } //notifyHeader.setModifyFlag(false); coDelMapper.updateEcssDelHeaderForModify(notifyHeader); - coDelMapper.updateEcssDelDetailForModify(notifyHeader); + coDelMapper.updateEcssDelDetailSurplusQty(notifyHeader); // 如果状态为已报关,发送邮件通知创建人 if (isCustomsCleared) { diff --git a/src/main/resources/mapper/ecss/CoDelMapper.xml b/src/main/resources/mapper/ecss/CoDelMapper.xml index 006500bc..73e5f613 100644 --- a/src/main/resources/mapper/ecss/CoDelMapper.xml +++ b/src/main/resources/mapper/ecss/CoDelMapper.xml @@ -230,6 +230,10 @@ update ecss_CoDelNotifyDetail set modifyFlag=#{modifyFlag},modifyQtyFlag=#{modifyFlag},surplus_qty=0 where site=#{site} and delNo=#{delNo} + + update ecss_CoDelNotifyDetail set surplus_qty=0 where site=#{site} and delNo=#{delNo} + + update ecss_CoDelNotifyHeader set notify_status=#{notifyStatus},walMartOrderFlag=#{walMartOrderFlag} where site=#{site} and delNo=#{delNo}