diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/controller/InboundPdaController.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/controller/InboundPdaController.java index d53df5f..90d37d8 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/controller/InboundPdaController.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/controller/InboundPdaController.java @@ -2,21 +2,20 @@ package org.nl.wms.pda_manage.ios_manage.purchase.controller; import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.base.ResponseData; import org.nl.common.logging.annotation.Log; import org.nl.wms.pda_manage.ios_manage.purchase.service.InboundPdaService; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.GroupPlateInboundDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.ManualInboundDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.PdaGroupPlateDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.UsualInboundDto; +import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.*; import org.nl.wms.pda_manage.ios_manage.purchase.service.vo.PurchaseMatInfoVo; -import org.nl.wms.pda_manage.util.PdaResponse; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity;import org.nl.common.base.ResponseData; +import org.nl.wms.pm_manage.pmreturn.service.IPmReturnService; +import org.nl.wms.pm_manage.pmreturn.service.dao.PmReturn; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.List; @RestController @@ -26,6 +25,8 @@ import java.util.List; public class InboundPdaController { private final InboundPdaService inboundPdaService; + @Resource + private IPmReturnService pmReturnService; @GetMapping("/getInfoByCode") @Log("PDA根据条码查询采购入库单的物料信息") @@ -41,6 +42,15 @@ public class InboundPdaController { List list = inboundPdaService.getInfoByReceive(code); return ResponseData.build(list); } + @GetMapping("/getInfoByReturnBill") + @Log("PDA根据条码查询退料单的物料信息") + @SaIgnore + public ResponseEntity getInfoByReturnBill(@RequestParam String code) { + List list = pmReturnService.list(new LambdaQueryWrapper() + .eq(PmReturn::getOrder_code, code)); + return ResponseData.build(list); + } + @PostMapping("/groupPlate") @Log("PDA提交组盘") @@ -71,6 +81,13 @@ public class InboundPdaController { inboundPdaService.usualInbound(usualInboundDto); return ResponseData.build(); } + @PostMapping("/returnInbound") + @Log("退料入库") + @SaIgnore + public ResponseEntity usualInbound(@RequestBody ReturnInboundDto returnInboundDto) { + inboundPdaService.returnInbound(returnInboundDto); + return ResponseData.build(); + } @GetMapping("/unfinishedBills") @Log("PDA查询未完成采购入库单") diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/InboundPdaService.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/InboundPdaService.java index b6a738d..53280fa 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/InboundPdaService.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/InboundPdaService.java @@ -1,10 +1,7 @@ package org.nl.wms.pda_manage.ios_manage.purchase.service; import com.alibaba.fastjson.JSONObject; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.GroupPlateInboundDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.ManualInboundDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.PdaGroupPlateDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.UsualInboundDto; +import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.*; import org.nl.wms.pda_manage.ios_manage.purchase.service.vo.PurchaseMatInfoVo; import java.util.List; @@ -24,4 +21,8 @@ public interface InboundPdaService { void submitManualInbound(ManualInboundDto dto); List getInfoByReceive(String code); + + List getInfoByReturnBill(String code); + + void returnInbound(ReturnInboundDto returnInboundDto); } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/dto/ReturnInboundDto.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/dto/ReturnInboundDto.java new file mode 100644 index 0000000..a8007fe --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/dto/ReturnInboundDto.java @@ -0,0 +1,28 @@ +package org.nl.wms.pda_manage.ios_manage.purchase.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class ReturnInboundDto { + + private String bill_id; + private String vehicle_code; + private String sect_code; + private List detailList; + + @Data + public static class ReturnInboundDtlDto implements Serializable { + + private static final long serialVersionUID = 1L; + + private String order_no; + private String item_no; + private String sku_code; + private String batch_no; + private BigDecimal qty; + } +} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/impl/InboundPdaServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/impl/InboundPdaServiceImpl.java index 9fc0a94..c66e600 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/impl/InboundPdaServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/impl/InboundPdaServiceImpl.java @@ -15,10 +15,7 @@ import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.service.*; import org.nl.wms.basedata_manage.service.dao.*; import org.nl.wms.pda_manage.ios_manage.purchase.service.InboundPdaService; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.GroupPlateInboundDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.ManualInboundDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.PdaGroupPlateDto; -import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.UsualInboundDto; +import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.*; import org.nl.wms.pda_manage.ios_manage.purchase.service.vo.PurchaseMatInfoVo; import org.nl.wms.pm_manage.SourceBillTypeEnum; import org.nl.wms.pm_manage.listener.PmManageEvent; @@ -534,6 +531,186 @@ public class InboundPdaServiceImpl implements InboundPdaService { return purchaseMatInfoVos; } + @Override + public List getInfoByReturnBill(String code) { + return Collections.emptyList(); + } + + @Override + @Transactional + public void returnInbound(ReturnInboundDto returnInboundDto) { + + log.info("PDA提交退料入库 参数:{}", JSON.toJSONString(returnInboundDto)); + + // 查询库区 + Sectattr sectDao = iSectattrService.findByCode(returnInboundDto.getSect_code()); + if (sectDao == null){ + throw new BadRequestException("仓库不存在"); + } + //获取库位 + List structList = iStructattrService.lambdaQuery() + .eq(Structattr::getSect_id, sectDao.getSect_id()) + .eq(Structattr::getLock_type, LOCK_TYPE.code("未锁定")) + .eq(Structattr::getIs_used, 1) + .isNotNull(Structattr::getStoragevehicle_code) + .orderByAsc(Structattr::getCreate_time).list(); + if (structList.isEmpty()){ + throw new BadRequestException("入库失败:未找到可用虚拟货位"); + } + Structattr struct = structList.get(0); + log.info("平库入库:找到虚拟库位{}",JSON.toJSONString(struct)); + String storagevehicleCode = struct.getStoragevehicle_code();//载具编码 + boolean flag = false; + List gpList = new ArrayList<>(); + List addInvParams = new ArrayList<>(); + for (ReturnInboundDto.ReturnInboundDtlDto item : returnInboundDto.getDetailList()) { + //判断当前物料是否在库内 + List inStockGps = iMdPbGroupplateService.list(new LambdaQueryWrapper() + .eq(GroupPlate::getMaterial_code, item.getSku_code()) + .eq(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("入库")) + .likeRight(GroupPlate::getStoragevehicle_code, "VTP")); + if (!inStockGps.isEmpty()){ + GroupPlate groupPlate = inStockGps.get(0); + Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper() + .eq(Structattr::getStoragevehicle_code, groupPlate.getStoragevehicle_code()) + .eq(Structattr::getSect_code, returnInboundDto.getSect_code()) + .last("limit 1")); + if (Objects.equals(structattr.getSect_code(), returnInboundDto.getSect_code())){ + //已在库,增加库存 + flag = true; + AddInvParam addParam = new AddInvParam(); + addParam.setPcsn(groupPlate.getPcsn()); + addParam.setMaterialCode(groupPlate.getMaterial_code()); + addParam.setStoragevehicleCode(groupPlate.getStoragevehicle_code()); + addParam.setUnitName(groupPlate.getQty_unit_name()); + addParam.setUnitId(groupPlate.getQty_unit_id()); + addParam.setExtCode(groupPlate.getExt_code()); + addParam.setExtType(groupPlate.getExt_type()); + addParam.setSectCode(returnInboundDto.getSect_code()); + addParam.setStructCode(structattr.getStruct_code()); + addParam.setStorCode(structattr.getStor_code()); + addParam.setQty(item.getQty()); + addInvParams.add(addParam); + } + } + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(item.getSku_code()); + MdPbMeasureunit unitDao = iMdPbMeasureunitService.getById(materDao.getQty_unit_id()); + //组盘 + GroupPlate plateDao = GroupPlate.builder() + .group_id(IdUtil.getStringId()) + .material_code(item.getSku_code()) + .storagevehicle_code(storagevehicleCode) + .pcsn(Optional.ofNullable(item.getBatch_no()).filter(s -> !s.isEmpty()).orElse("1")) + .qty_unit_id(unitDao.getMeasure_unit_id()) + .qty_unit_name(unitDao.getUnit_name()) + .qty(item.getQty()) + .status(GROUP_PLATE_STATUS.code("组盘")) + .ext_code(returnInboundDto.getBill_id()) + .ext_type(SourceBillTypeEnum.PM_RETURN.getBillType()) + .ext_dtl_code(item.getItem_no()) + .create_id(SecurityUtils.getCurrentUserId()) + .create_name(SecurityUtils.getCurrentNickName()) + .create_time(DateUtil.now()) + .build(); + if (flag){ + gpList.add(plateDao); + }else{ + iMdPbGroupplateService.save(plateDao); + } + } + if (flag) iStInventoryService.changeInventory(InventoryChangeType.ADD_INV, addInvParams); + + GroupPlateInboundDto groupPlateInboundDto = new GroupPlateInboundDto(); + groupPlateInboundDto.setSect_code(sectDao.getSect_code()); + groupPlateInboundDto.setVehicle_code(storagevehicleCode); + groupPlateInboundDto.setGroupPlateList(gpList); +// this.submitGroupPlateInbound(groupPlateInboundDto, false); + // 查询组盘明细 + List plateDaoList; + if (groupPlateInboundDto.getGroupPlateList().isEmpty()){ + plateDaoList = iMdPbGroupplateService.list( + new QueryWrapper().lambda() + .eq(GroupPlate::getStoragevehicle_code, groupPlateInboundDto.getVehicle_code()) + .eq(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("组盘")) + ); + }else { + plateDaoList = groupPlateInboundDto.getGroupPlateList(); + } + + if (ObjectUtil.isEmpty(plateDaoList)) { + throw new BadRequestException("当前没有可入库的物料!"); + } + // 总数量 + Double total_qty = plateDaoList.stream() + .map(row -> row.getQty().doubleValue()) + .reduce(Double::sum).orElse(0.0); + + // 查询库区 +// Sectattr sectDao = iSectattrService.findByCode(groupPlateInboundDto.getSect_code()); + // 组织主表数据 + Map jsonMst = new HashMap<>(); + jsonMst.put("stor_id", sectDao.getStor_id()); + jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("生成")); + jsonMst.put("total_qty", total_qty); + jsonMst.put("detail_count", 1); + jsonMst.put("bill_type", IOSEnum.BILL_TYPE.code("采购入库")); + jsonMst.put("biz_date", DateUtil.now()); + // 组织明细数据 + ArrayList tableData = new ArrayList<>(); +// GroupPlate plateDao = plateDaoList.get(0); + for (GroupPlate plateDao : plateDaoList) { + HashMap dtl = new HashMap<>(); + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(plateDao.getMaterial_code()); + dtl.put("storagevehicle_code", plateDao.getStoragevehicle_code()); + dtl.put("material_id", materDao.getMaterial_id()); + dtl.put("material_code", materDao.getMaterial_code()); + dtl.put("material_name", materDao.getMaterial_name()); + dtl.put("pcsn", plateDao.getPcsn()); + dtl.put("qty_unit_id", plateDao.getQty_unit_id()); + dtl.put("qty_unit_name", plateDao.getQty_unit_name()); + dtl.put("qty", plateDao.getQty()); + dtl.put("plan_qty", plateDao.getQty()); + dtl.put("ext_code", plateDao.getExt_code()); + dtl.put("ext_type", plateDao.getExt_type()); + dtl.put("source_billdtl_id", plateDao.getExt_dtl_code()); + dtl.put("callback_strategy", "dealReturnBillCallback"); + // 调用新增 + tableData.add(dtl); + } + + jsonMst.put("tableData",tableData); + String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst); + // 查询仓库 + BsrealStorattr storeDao = iSrealStorattrService.getById(sectDao.getStor_id()); + // 组织主数据 + Map jsonMst1 = new HashMap<>(); + jsonMst1.put("checked", true); + jsonMst1.put("sect_id", sectDao.getSect_id()); + jsonMst1.put("stor_id", sectDao.getStor_id()); + jsonMst1.put("sect_code", sectDao.getSect_code()); + jsonMst1.put("stor_code", storeDao.getStor_code()); + jsonMst1.put("storagevehicle_code", groupPlateInboundDto.getVehicle_code()); + // 组织明细数据 + List ioStorInvDtls = ioStorInvDtlMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDtl::getIostorinv_id, iostorinv_id) + ); + IOStorInvDtl dtlDao = ioStorInvDtls.get(0); + // 查找分配明细 + Map map = new HashMap<>(); + map.put("iostorinvdtl_id", dtlDao.getIostorinvdtl_id()); + List disDtl = iRawAssistIStorService.getDisDtl(map); + // 类型转换 + disDtl.forEach(item -> { + jsonMst1.put("dis_row", JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class)); + }); + // 调用分配,默认自动分配库位 + iRawAssistIStorService.divStruct(new JSONObject(jsonMst1)); + List ioStorInvDis = ioStorInvDisMapper.selectList(new LambdaQueryWrapper() + .eq(IOStorInvDis::getIostorinv_id, iostorinv_id)); + iRawAssistIStorService.disFinish(ioStorInvDis); + } + private Map parseCode(String code){ String[] parts = code.split("#", -1); log.info("采购单入库条码解析结果:{}", Arrays.toString(parts)); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/SourceBillTypeEnum.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/SourceBillTypeEnum.java index 3684771..d905400 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/SourceBillTypeEnum.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/SourceBillTypeEnum.java @@ -2,8 +2,6 @@ package org.nl.wms.pm_manage; import lombok.AllArgsConstructor; import lombok.Getter; -import org.apache.commons.lang3.StringUtils; -import org.nl.common.exception.BadRequestException; /** * 源单据枚举:关联st_ivt_iostorinvdtl表souce_bill_type字段 @@ -14,6 +12,7 @@ public enum SourceBillTypeEnum { PM_DEMADN("pm_demand","出库需求单"), PM_PURCHASE("pm_purchase","采购入库单"), PM_RECEIVING("p_receiving","生产入库"), + PM_RETURN("pm_return","退料入库"), UNDEFINE("","未定义"), ; /** diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/demand/service/impl/PmDemandServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/demand/service/impl/PmDemandServiceImpl.java index 47386b5..646f0d7 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/demand/service/impl/PmDemandServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/demand/service/impl/PmDemandServiceImpl.java @@ -12,7 +12,9 @@ import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; +import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.ext_manage.enums.EXTConstant; import org.nl.wms.ext_manage.service.WmsToZDWmdService; import org.nl.wms.ext_manage.service.dto.ZDInventory; @@ -29,8 +31,12 @@ import org.nl.wms.system_manage.service.param.dao.Param; import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService; import org.nl.wms.warehouse_manage.inventory.IStInventoryService; +import org.nl.wms.warehouse_manage.inventory.core.enums.InventoryChangeType; +import org.nl.wms.warehouse_manage.inventory.core.param.impl.AddInvParam; +import org.nl.wms.warehouse_manage.inventory.core.param.impl.InFinishParam; import org.nl.wms.warehouse_manage.inventory.dto.StInventoryDto; import org.nl.wms.warehouse_manage.inventory.dto.StInventoryQuery; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; @@ -57,6 +63,8 @@ public class PmDemandServiceImpl extends ServiceImpl i private IMdMeMaterialbaseService iMdMeMaterialbaseService; @Autowired private ISysParamService iSysParamService; + @Autowired + private IStructattrService iStructattrService; @Override public Page queryPage(PmDemandQuery query, PageQuery pageQuery) { @@ -208,15 +216,42 @@ public class PmDemandServiceImpl extends ServiceImpl i List otherDemands = partitioned.get(false); if (!CollectionUtils.isEmpty(zdDemands)) { wmsToZDWmdService.syncDemandOrder(zdDemands); + //直接增加对应库存并做库存记录 + List addInvParams = new ArrayList<>(); + List inFinishParams = new ArrayList<>(); + for (PmDemandDto zdDemand : zdDemands) { + Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper() + .eq(Structattr::getSect_code, zdDemand.getTargetHouseCode()) + .isNotNull(Structattr::getStoragevehicle_code) + .last("limit 1")); + AddInvParam addInvParam = new AddInvParam(); + addInvParam.setMaterialCode(zdDemand.getSkuCode()); + addInvParam.setUnitId("1"); + addInvParam.setUnitName(zdDemand.getUnit()); + addInvParam.setPcsn("1"); + addInvParam.setStoragevehicleCode(structattr.getStoragevehicle_code()); + addInvParam.setQty(zdDemand.getQty()); + addInvParam.setStorCode(structattr.getStor_code()); + addInvParam.setSectCode(structattr.getSect_code()); + addInvParam.setStructCode(structattr.getStruct_code()); + addInvParams.add(addInvParam); + InFinishParam inFinishParam = new InFinishParam(); + BeanUtils.copyProperties(addInvParam,inFinishParam); + inFinishParam.setRemark("中鼎需求单变动"); + inFinishParams.add(inFinishParam); + } + iStInventoryService.changeInventory(InventoryChangeType.ADD_INV, addInvParams); + iStInventoryService.changeInventory(InventoryChangeType.IN_FINISH, inFinishParams); + } if (!CollectionUtils.isEmpty(otherDemands)) { JSONObject billParam = convertDemandsToBillParam(otherDemands); iOutBillService.saveBill(billParam); - this.update(new LambdaUpdateWrapper() - .set(PmDemand::getStatus,DemandStatus.SEND.getValue()) - .in(PmDemand::getId,pmDemandDtos.stream() - .map(PmDemandDto::getId).collect(Collectors.toList()))); } + this.update(new LambdaUpdateWrapper() + .set(PmDemand::getStatus,DemandStatus.SEND.getValue()) + .in(PmDemand::getId,pmDemandDtos.stream() + .map(PmDemandDto::getId).collect(Collectors.toList()))); } private JSONObject convertDemandsToBillParam(List demands) { diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/inventory/impl/StInventoryServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/inventory/impl/StInventoryServiceImpl.java index 586035e..cf1d4cc 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/inventory/impl/StInventoryServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/inventory/impl/StInventoryServiceImpl.java @@ -217,6 +217,11 @@ public class StInventoryServiceImpl implements IStInventoryService { final List inFinishParams = (List) params; List recordsInFinish = new ArrayList<>(); for (InFinishParam invParam : inFinishParams) { + LambdaQueryWrapper query = new QueryWrapper().lambda() + .eq(GroupPlate::getStoragevehicle_code, invParam.getStoragevehicleCode()) + .eq(GroupPlate::getMaterial_code, invParam.getMaterialCode()) + .eq(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("入库")); + GroupPlate groupPlate = iMdPbGroupplateService.getOne(query); //添加库存变动记录 StIvtStructivtflow record = new StIvtStructivtflow(); record.setId(IdUtil.getStringId()); @@ -224,7 +229,7 @@ public class StInventoryServiceImpl implements IStInventoryService { record.setVehicle_code(invParam.getStoragevehicleCode()); record.setMaterial_id(invParam.getMaterialCode()); record.setPcsn(invParam.getPcsn()); - record.setQty(invParam.getQty()); + record.setQty(groupPlate.getQty()); record.setChange_qty(invParam.getQty()); record.setSource_form_id(invParam.getExtCode()); record.setUnit_id(invParam.getUnitId()); @@ -232,6 +237,7 @@ public class StInventoryServiceImpl implements IStInventoryService { record.setStor_code(invParam.getStorCode()); record.setSect_code(invParam.getSectCode()); record.setGrowth(true); + record.setTask_type(invParam.getRemark()); recordsInFinish.add(record); } stIvtStructivtflowService.saveBatch(recordsInFinish); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/strategy/core/impl/DealReturnBillCallback.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/strategy/core/impl/DealReturnBillCallback.java new file mode 100644 index 0000000..ce62761 --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/strategy/core/impl/DealReturnBillCallback.java @@ -0,0 +1,106 @@ +package org.nl.wms.warehouse_manage.stockReturn.strategy.core.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.commons.lang.time.DateFormatUtils; +import org.nl.wms.ext_manage.purchase.service.dto.EasAuditRequestDto; +import org.nl.wms.ext_manage.util.ErpUtil; +import org.nl.wms.pm_manage.pmreturn.service.IPmReturnService; +import org.nl.wms.pm_manage.pmreturn.service.dao.PmReturn; +import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDtl; +import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper; +import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService; +import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn; +import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum; +import org.nl.wms.warehouse_manage.stockReturn.strategy.core.CallbackStrategy; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 生产入库回传 + */ +@Service +public class DealReturnBillCallback implements CallbackStrategy { + + @Autowired + private IPmStockReturnService iPmStockReturnService; + @Autowired + private IPmReturnService pmReturnService; + @Autowired + private IOStorInvDtlMapper ioStorInvDtlMapper; + + + @Override + public void buildCallback(IOStorInvDtl param) { + final String orderCode = param.getSource_bill_code(); + PmReturn pmReturn = pmReturnService.getOne(new LambdaQueryWrapper() + .eq(PmReturn::getOrder_code, orderCode)); + List entryList = new ArrayList<>(); + pmReturn.setAssign_qty(pmReturn.getAssign_qty().add(param.getPlan_qty())); + boolean flag = pmReturn.getAssign_qty().compareTo(pmReturn.getQty()) >= 0; + if (flag){ + //单据完成 + pmReturnService.lambdaUpdate() + .set(PmReturn::getAssign_qty, pmReturn.getAssign_qty()) + .set(PmReturn::getUpdate_time, DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")) + .eq(PmReturn::getId, orderCode) + .update(); + //保存回传 + // 创建最外层的JSONObject + JSONObject root = new JSONObject(); + root.put("method", "DealLLDBBill"); + root.put("type", "WMS"); + // 创建data对象 + JSONObject data = new JSONObject(); + data.put("billNo", pmReturn.getOrder_code()); + data.put("bizTypeNo", "331"); + data.put("issueStorageOrgUnitNo", "01.09.14"); + data.put("receiptStorageOrgUnitNo", "01.09.14"); + // 创建entrys数组 + JSONArray entrys = new JSONArray(); + JSONObject entry = new JSONObject(); + entry.put("qty", pmReturn.getAssign_qty()); + entry.put("materialNo", pmReturn.getSku_code()); + entry.put("unitNo", "PCS"); + entry.put("receiptWarehouseNo", pmReturn.getTarget_house_code()); + entry.put("issueWarehouseNo", pmReturn.getSource_house_code()); + // 将entry添加到数组中 + entrys.add(entry); + // 将entrys数组设置到data中 + data.put("entrys", entrys); + // 将data设置到根对象中 + root.put("data", data); +// ErpUtil.create().login().audit(root.toJSONString()); + //保存回传单 + PmStockReturn stockReturn = new PmStockReturn(); + stockReturn.setRequest_Id(pmReturn.getId()); + stockReturn.setRequest_type(IOSEnum.BILL_TYPE.code("库存调拨")); + stockReturn.setStatus(StockReturnStatusEnum.TODO.getCode()); // 0-处理中 + stockReturn.setCreate_time(DateUtil.now()); + stockReturn.setRequest_data(root.toJSONString()); + //回传 + try { + ErpUtil.create().login().audit(root.toJSONString()); + stockReturn.setStatus(StockReturnStatusEnum.SUCESS.getCode()); + } catch (Exception e) { + stockReturn.setError_msg(e.getMessage()); + stockReturn.setStatus(StockReturnStatusEnum.FAIL.getCode()); + } + iPmStockReturnService.save(stockReturn); + }else { + //更新分配数量 + pmReturnService.lambdaUpdate() + .set(PmReturn::getAssign_qty, pmReturn.getAssign_qty()) + .set(PmReturn::getUpdate_time, DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")) + .eq(PmReturn::getId, orderCode) + .update(); + } + } +} diff --git a/nladmin-ui/src/views/wms/pm_manage/pmReturn/index.vue b/nladmin-ui/src/views/wms/pm_manage/pmReturn/index.vue index acd6819..fa662c4 100644 --- a/nladmin-ui/src/views/wms/pm_manage/pmReturn/index.vue +++ b/nladmin-ui/src/views/wms/pm_manage/pmReturn/index.vue @@ -129,6 +129,19 @@ + +