diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchMissController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchMissController.java index f5befff16..f033c1628 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchMissController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchMissController.java @@ -1,8 +1,8 @@ package com.xdadan.erp.web.emis; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import com.xdadan.erp.emis.domain.exception.EmisBizError; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -14,7 +14,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.xdadan.erp.common.annotation.Log; -import com.xdadan.erp.common.core.controller.BaseController; import com.xdadan.erp.common.core.domain.AjaxResult; import com.xdadan.erp.common.enums.BusinessType; import com.xdadan.erp.emis.domain.EmisTmsSiteBatchMiss; @@ -24,7 +23,7 @@ import com.xdadan.erp.common.core.page.TableDataInfo; /** * TMS漏组批次信息Controller - * + * * @author heyu */ @RestController @@ -126,4 +125,51 @@ public class EmisTmsSiteBatchMissController extends EmisBaseController { public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(emisTmsSiteBatchMissService.deleteEmisTmsSiteBatchMissByIds(ids)); } -} \ No newline at end of file + + /** + * 批量确认组批次:参数通过 params.billCodeList 传入 + */ + @PreAuthorize("@ss.hasPermi('emis:emisTmsSiteBatchMiss:confirm')") + @Log(title = "TMS漏组批次信息", businessType = BusinessType.UPDATE) + @PostMapping("/confirmBatch") + public AjaxResult confirmBatch(@RequestBody EmisTmsSiteBatchMiss req) throws EmisBizError { + Object listObj = req.getParams() != null ? req.getParams().get("billCodeList") : null; + if (listObj == null) { + return AjaxResult.error("参数缺失:billCodeList"); + } + String remark = req.getManualRemark(); + List billCodes; + if (listObj instanceof List) { + List tmp = (List) listObj; + billCodes = new java.util.ArrayList<>(); + for (Object o : tmp) { + if (o != null) { + String s = String.valueOf(o).trim(); + if (!s.isEmpty()) { + billCodes.add(s); + } + } + } + } else if (listObj instanceof String) { + String str = ((String) listObj).trim(); + if (str.isEmpty()) { + billCodes = java.util.Collections.emptyList(); + } else { + String[] arr = str.split(","); + billCodes = new java.util.ArrayList<>(arr.length); + for (String a : arr) { + if (a != null) { + String s = a.trim(); + if (!s.isEmpty()) { + billCodes.add(s); + } + } + } + } + } else { + return AjaxResult.error("参数格式错误:billCodeList"); + } + emisTmsSiteBatchMissService.confirmBatch(billCodes, remark, req.getBlManual()); + return AjaxResult.success("确认成功"); + } +} diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchMiss.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchMiss.java index c964994d8..947fc6b9e 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchMiss.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchMiss.java @@ -134,4 +134,10 @@ public class EmisTmsSiteBatchMiss extends BaseEntity { @TableField(exist = false) @DataAuditField(fieldComment = "目的网点名称") private String dispatchUnderlingSiteName; + + /** 人工审核备注 */ + private String manualRemark; + + /* 完成状态 1:系统审核完成,2:人工审核完成,3:无需组批次 默认为1*/ + private String blManual; } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybillBatchStatus.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybillBatchStatus.java index 42ac867b3..676849385 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybillBatchStatus.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybillBatchStatus.java @@ -45,7 +45,11 @@ public class EmisWaybillBatchStatus extends BaseEntity { @DataAuditField(fieldComment = "批次状态,1:组批次成功") private String siteBatchStatus; + /* 完成状态 */ + @DataAuditField(fieldComment = "1:系统审核完成,2:人工审核完成,3:无需组批次 默认为1") + private String blManual; + /* 备注 */ @DataAuditField(fieldComment = "备注") private String remark; -} \ No newline at end of file +} diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchMissService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchMissService.java index 941ea4cc8..5deeebb6d 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchMissService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchMissService.java @@ -2,16 +2,17 @@ package com.xdadan.erp.emis.service; import java.util.List; import com.xdadan.erp.emis.domain.EmisTmsSiteBatchMiss; +import com.xdadan.erp.emis.domain.exception.EmisBizError; /** * TMS漏组批次信息Service接口 - * + * * @author heyu */ public interface IEmisTmsSiteBatchMissService { /** * 查询TMS漏组批次信息 - * + * * @param id TMS漏组批次信息主键 * @return TMS漏组批次信息 */ @@ -19,7 +20,7 @@ public interface IEmisTmsSiteBatchMissService { /** * 查询TMS漏组批次信息列表 - * + * * @param emisTmsSiteBatchMiss TMS漏组批次信息 * @return TMS漏组批次信息集合 */ @@ -27,7 +28,7 @@ public interface IEmisTmsSiteBatchMissService { /** * 新增TMS漏组批次信息 - * + * * @param emisTmsSiteBatchMiss TMS漏组批次信息 * @return 结果 */ @@ -35,7 +36,7 @@ public interface IEmisTmsSiteBatchMissService { /** * 修改TMS漏组批次信息 - * + * * @param emisTmsSiteBatchMiss TMS漏组批次信息 * @return 结果 */ @@ -43,7 +44,7 @@ public interface IEmisTmsSiteBatchMissService { /** * 批量删除TMS漏组批次信息 - * + * * @param ids 需要删除的TMS漏组批次信息主键集合 * @return 结果 */ @@ -51,7 +52,7 @@ public interface IEmisTmsSiteBatchMissService { /** * 删除TMS漏组批次信息信息 - * + * * @param id TMS漏组批次信息主键 * @return 结果 */ @@ -70,4 +71,14 @@ public interface IEmisTmsSiteBatchMissService { * @return TMS漏组批次信息列表 */ public List selectByBillCodeCount(Integer count); -} \ No newline at end of file + + /** + * 批量确认组批次: + * 1) 根据运单号列表删除漏组批次数据 + * 2) 新增运单组批次状态,site_batch_status=1 + * + * @param billCodes 运单号列表 + * @param blManual + */ + void confirmBatch(List billCodes, String remark, String blManual) throws EmisBizError; +} diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java index 6e09c3ff4..de1dc8065 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java @@ -1,7 +1,6 @@ package com.xdadan.erp.emis.service.impl; import java.util.*; -import java.util.function.Function; import java.util.stream.Collectors; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; @@ -9,6 +8,8 @@ import java.util.concurrent.Executors; import cn.hutool.core.collection.CollectionUtil; import com.xdadan.erp.emis.domain.*; +import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType; +import com.xdadan.erp.emis.domain.exception.EmisBizError; import com.xdadan.erp.emis.mapper.*; import com.xdadan.erp.emis.service.EmisBaseService; import com.xdadan.erp.emis.utils.WaybillHelper; @@ -18,11 +19,12 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import com.xdadan.erp.emis.service.IEmisTmsSiteBatchMissService; /** * TMS漏组批次信息Service业务层处理 - * + * * @author heyu */ @Service @@ -52,7 +54,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements /** * 查询TMS漏组批次信息 - * + * * @param id TMS漏组批次信息主键 * @return TMS漏组批次信息 */ @@ -64,7 +66,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements /** * 查询TMS漏组批次信息列表 - * + * * @param emisTmsSiteBatchMiss TMS漏组批次信息 * @return TMS漏组批次信息 */ @@ -84,49 +86,53 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements list = emisTmsSiteBatchMissMapper.selectEmisTmsSiteBatchMissList(emisTmsSiteBatchMiss); } -// // 收集所有virtualRemark中的单号 -// Set relatedBillCodes = new HashSet<>(); -// for (EmisTmsSiteBatchMiss miss : list) { -// String virtualRemark = miss.getVirtualRemark(); -// if (virtualRemark != null && !virtualRemark.trim().isEmpty()) { -// String[] codes = virtualRemark.split(","); -// for (String code : codes) { -// relatedBillCodes.add(code.trim()); -// } -// } -// } -// if (CollectionUtil.isEmpty(relatedBillCodes)) { -// return list; -// } -// // 批量查找相关单号 -// List relatedList = relatedBillCodes.isEmpty() ? Collections.emptyList() -// : emisTmsSiteBatchMissMapper.selectByBillCodes(new ArrayList<>(relatedBillCodes)); -// Map relatedMap = relatedList.stream() -// .collect(Collectors.toMap(EmisWaybill::getBillCode, Function.identity(), (a, b) -> a)); -// // 过滤逻辑 -// list = list.stream() -// .filter(wb -> { -// String virtualRemark = wb.getVirtualRemark(); -// if (virtualRemark == null || virtualRemark.trim().isEmpty()) { -// return true; -// } -// String[] relatedNos = virtualRemark.split(","); -// for (String no : relatedNos) { -// EmisWaybill related = relatedMap.get(no.trim()); -// if (related != null && Integer.valueOf(173).equals(related.getProblemType())) { -// return false; -// } -// } -// return true; -// }) -// .collect(Collectors.toList()); + // // 收集所有virtualRemark中的单号 + // Set relatedBillCodes = new HashSet<>(); + // for (EmisTmsSiteBatchMiss miss : list) { + // String virtualRemark = miss.getVirtualRemark(); + // if (virtualRemark != null && !virtualRemark.trim().isEmpty()) { + // String[] codes = virtualRemark.split(","); + // for (String code : codes) { + // relatedBillCodes.add(code.trim()); + // } + // } + // } + // if (CollectionUtil.isEmpty(relatedBillCodes)) { + // return list; + // } + // // 批量查找相关单号 + // List relatedList = relatedBillCodes.isEmpty() ? + // Collections.emptyList() + // : emisTmsSiteBatchMissMapper.selectByBillCodes(new + // ArrayList<>(relatedBillCodes)); + // Map relatedMap = relatedList.stream() + // .collect(Collectors.toMap(EmisWaybill::getBillCode, Function.identity(), (a, + // b) -> a)); + // // 过滤逻辑 + // list = list.stream() + // .filter(wb -> { + // String virtualRemark = wb.getVirtualRemark(); + // if (virtualRemark == null || virtualRemark.trim().isEmpty()) { + // return true; + // } + // String[] relatedNos = virtualRemark.split(","); + // for (String no : relatedNos) { + // EmisWaybill related = relatedMap.get(no.trim()); + // if (related != null && Integer.valueOf(173).equals(related.getProblemType())) + // { + // return false; + // } + // } + // return true; + // }) + // .collect(Collectors.toList()); return list; } /** * 新增TMS漏组批次信息 - * + * * @param emisTmsSiteBatchMiss TMS漏组批次信息 * @return 结果 */ @@ -138,7 +144,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements /** * 修改TMS漏组批次信息 - * + * * @param emisTmsSiteBatchMiss TMS漏组批次信息 * @return 结果 */ @@ -150,19 +156,19 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements /** * 批量删除TMS漏组批次信息 - * + * * @param ids 需要删除的TMS漏组批次信息主键 * @return 结果 */ @Override public int deleteEmisTmsSiteBatchMissByIds(Long[] ids) { - log.info("Deleting TMS site batch miss by ids: {}", ids); + log.info("Deleting TMS site batch miss by ids: {}", (Object) ids); return emisTmsSiteBatchMissMapper.deleteEmisTmsSiteBatchMissByIds(ids); } /** * 删除TMS漏组批次信息信息 - * + * * @param id TMS漏组批次信息主键 * @return 结果 */ @@ -180,6 +186,43 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements return emisTmsSiteBatchMissMapper.selectByBillCodeCount(count); } + /** + * 批量确认:删除漏组批次并插入运单组批状态 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void confirmBatch(List billCodes, String remark, String blManual) throws EmisBizError { + if (billCodes == null || billCodes.isEmpty()) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "运单号不能为空"); + } + if (StringUtil.isBlank(blManual)) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "完成状态不能为空"); + } + + // 1) 逻辑删除漏组批次数据 + emisTmsSiteBatchMissMapper.deleteByBillCodes(billCodes); + + // 2) 新增运单组批次状态 site_batch_status=1(幂等:insert ignore) + Date now = new Date(); + String userName = getCurrentUser() != null ? getCurrentUser().getUserName() : null; + String siteCode = getCurrentUser() != null ? getCurrentUser().getOwnerSiteCode() : null; + List toInsert = billCodes.stream().distinct().map(code -> { + EmisWaybillBatchStatus s = new EmisWaybillBatchStatus(); + s.setBillCode(code); + s.setSiteBatchStatus("1"); + s.setRemark(remark); + s.setBlManual(blManual); + s.setCreateBy(userName); + s.setCreateTime(now); + s.setCreateSite(siteCode); + return s; + }).collect(Collectors.toList()); + + if (!toInsert.isEmpty()) { + emisWaybillBatchStatusMapper.batchInsertEmisWaybillBatchStatus(toInsert); + } + } + @Async @Override public void autoScanSiteBatch(String lineCode) { @@ -371,4 +414,4 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements return tree; } -} \ No newline at end of file +} diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml index 10461f492..e71707e63 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml @@ -232,6 +232,7 @@ select a.id, a.bill_code,a.trans_line_type, a.product_type,a.start_site_code,a.send_site_code from emis_waybill a left join emis_tms_site_batch_dtl b on a.bill_code = b.bill_code and b.del_flag = '0' + inner join emis_waybill_batch_status c on a.bill_code = c.bill_code and c.site_batch_status = '1' and c.del_flag = '0' where b.batch_no = #{batchNo} and a.del_flag = '0' and a.send_date ]]> '2025-01-01 00:00:00' diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml index b8564e501..cb024fc3a 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -48,6 +48,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -132,20 +134,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - + insert into emis_tms_site_batch_miss @@ -358,7 +364,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update emis_tms_site_batch_miss set del_flag = '1' where id in + update emis_tms_site_batch_miss set del_flag = '1' where id in #{id} @@ -437,4 +443,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{billCode} - \ No newline at end of file + diff --git a/emis-biz/src/main/resources/mapper/EmisWaybillBatchStatusMapper.xml b/emis-biz/src/main/resources/mapper/EmisWaybillBatchStatusMapper.xml index 6b62245d4..0b186db82 100644 --- a/emis-biz/src/main/resources/mapper/EmisWaybillBatchStatusMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisWaybillBatchStatusMapper.xml @@ -3,11 +3,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - + + + @@ -16,31 +17,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, bill_code, site_batch_status, remark, - create_by, create_time, update_by, update_time + select id, bill_code, site_batch_status, bl_manual, remark, + create_by, create_time, update_by, update_time, del_flag from emis_waybill_batch_status insert ignore into emis_waybill_batch_status ( - bill_code, site_batch_status, remark, - create_by, create_time, update_by, update_time - ) values + bill_code, site_batch_status, bl_manual, remark, + create_by, create_time, update_by, update_time,create_site,update_site + ) values ( - #{item.billCode}, #{item.siteBatchStatus}, #{item.remark}, - #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime} + #{item.billCode}, #{item.siteBatchStatus}, #{item.blManual}, #{item.remark}, + #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.createSite}, + #{item.updateSite} ) - - - delete from emis_waybill_batch_status + + + update emis_waybill_batch_status + set del_flag = '1' where bill_code in #{billCode} - + and del_flag = '0' + - \ No newline at end of file +