diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java index 50c2f5c..6f4abc2 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java @@ -68,7 +68,6 @@ public class ShipmentContainerHeaderController extends BaseController .ge(StringUtils.isNotEmpty(createdBegin),ShipmentContainerHeader::getCreated, createdBegin) .le(StringUtils.isNotEmpty(createdEnd), ShipmentContainerHeader::getCreated, createdEnd) .in(ShipmentContainerHeader::getCompanyCode,ShiroUtils.getCompanyCodeList()) - .eq(StringUtils.isNotEmpty(shipmentContainerHeader.getShipmentCode()), ShipmentContainerHeader::getShipmentCode, shipmentContainerHeader.getShipmentCode()) .eq(StringUtils.isNotEmpty(shipmentContainerHeader.getContainerCode()), ShipmentContainerHeader::getContainerCode, shipmentContainerHeader.getContainerCode()) .eq(StringUtils.isNotEmpty(shipmentContainerHeader.getLocationCode()), ShipmentContainerHeader::getLocationCode, shipmentContainerHeader.getLocationCode()) .eq(StringUtils.isNotEmpty(shipmentContainerHeader.getCreatedBy()), ShipmentContainerHeader::getCreatedBy, shipmentContainerHeader.getCreatedBy()) diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/domain/ShipmentContainerHeader.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/domain/ShipmentContainerHeader.java index 9507dfc..cfac054 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/domain/ShipmentContainerHeader.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/domain/ShipmentContainerHeader.java @@ -99,12 +99,6 @@ public class ShipmentContainerHeader implements Serializable { private BigDecimal height; - /** - * 出库单内部号 - */ - @TableField(value = "shipmentId") - @ApiModelProperty(value="出库单内部号") - private Integer shipmentId; /** * 货主编码 @@ -141,12 +135,6 @@ public class ShipmentContainerHeader implements Serializable { @ApiModelProperty(value="序号") private Integer groupIndex; - /** - * 波次号 - */ - @TableField(value = "waveId") - @ApiModelProperty(value="波次号") - private Integer waveId; /** @@ -156,12 +144,7 @@ public class ShipmentContainerHeader implements Serializable { @ApiModelProperty(value="任务已创建?") private Integer taskCreated; - /** - * 出库单号 - */ - @TableField(value = "shipmentCode") - @ApiModelProperty(value="出库单号") - private String shipmentCode; + /** * 周转箱号 @@ -316,8 +299,6 @@ public class ShipmentContainerHeader implements Serializable { public static final String COL_HEIGHT = "height"; - public static final String COL_SHIPMENTID = "shipmentId"; - public static final String COL_COMPANYCODE = "companyCode"; public static final String COL_TOTALQTY = "totalQty"; @@ -328,12 +309,8 @@ public class ShipmentContainerHeader implements Serializable { public static final String COL_GROUPINDEX = "groupIndex"; - public static final String COL_WAVEID = "waveId"; - public static final String COL_TASKCREATED = "taskCreated"; - public static final String COL_SHIPMENTCODE = "shipmentCode"; - public static final String COL_TRANSCONTAINERCODE = "transContainerCode"; public static final String COL_OQCBENCH = "oqcBench"; @@ -568,24 +545,6 @@ public class ShipmentContainerHeader implements Serializable { /** - * 获取出库单内部号 - * - * @return shipmentId - 出库单内部号 - */ - public Integer getShipmentId() { - return shipmentId; - } - - /** - * 设置出库单内部号 - * - * @param shipmentId 出库单内部号 - */ - public void setShipmentId(Integer shipmentId) { - this.shipmentId = shipmentId; - } - - /** * 获取货主编码 * * @return companyCode - 货主编码 @@ -665,23 +624,6 @@ public class ShipmentContainerHeader implements Serializable { this.groupIndex = groupIndex; } - /** - * 获取波次号 - * - * @return waveId - 波次号 - */ - public Integer getWaveId() { - return waveId; - } - - /** - * 设置波次号 - * - * @param waveId 波次号 - */ - public void setWaveId(Integer waveId) { - this.waveId = waveId; - } /** * 获取任务已创建? @@ -701,24 +643,6 @@ public class ShipmentContainerHeader implements Serializable { this.taskCreated = taskCreated; } - /** - * 获取出库单号 - * - * @return shipmentCode - 出库单号 - */ - public String getShipmentCode() { - return shipmentCode; - } - - /** - * 设置出库单号 - * - * @param shipmentCode 出库单号 - */ - public void setShipmentCode(String shipmentCode) { - this.shipmentCode = shipmentCode; - } - public String getTransContainerCode() { return transContainerCode; } diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java index 732a40e..40974d4 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java @@ -6,6 +6,8 @@ import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.domain.RetCode; +import com.huaheng.pc.config.container.domain.Container; +import com.huaheng.pc.config.container.service.ContainerService; import com.huaheng.pc.config.location.domain.Location; import com.huaheng.pc.config.location.service.LocationService; import com.huaheng.pc.config.material.domain.Material; @@ -40,7 +42,6 @@ import java.util.Map; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader; import com.huaheng.pc.shipment.shipmentContainerHeader.mapper.ShipmentContainerHeaderMapper; -import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService; import org.springframework.transaction.annotation.Transactional; @Service @@ -70,6 +71,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont private WaveService waveService; @Autowired private ShipmentPreferenceService shipmentPreferenceService; + @Autowired + private ContainerService containerService; @Override @@ -80,6 +83,14 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont /** + * 1.检查基本属性 + * 2.更改库存明细 + * 3.更新单据明细的已出库数量 + * 4.自动判定出库任务状态,根据库存数量减去预定库存相等就是整盘出--预计任务状态 + * 5.增加出库组盘头 + * 6.增加出库组盘明细 + * 7.更新单据状态 + * * 出库组盘单条保存 * @param shipmentCombinationModel * @return @@ -88,6 +99,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont @Override public ShipmentContainerHeader combination(ShipmentCombinationModel shipmentCombinationModel) { + //1.检查基本属性 //校验 if(shipmentCombinationModel.getShipQty().compareTo(new BigDecimal("0")) <= 0){ throw new ServiceException("出库数量必须大于0"); @@ -116,8 +128,9 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont lambdaQueryWrapper.eq(Location::getWarehouseCode,inventoryDetail.getWarehouseCode()) .eq(Location::getCode,inventoryDetail.getLocationCode()); Location location = locationService.getOne(lambdaQueryWrapper); - if (location == null) - throw new ServiceException("库位 "+ inventoryDetail.getLocationCode() +" 不存在"); + if (location == null) { + throw new ServiceException("库位 " + inventoryDetail.getLocationCode() + " 不存在"); + } // if (location.getStatus().equals("lock")) { // //如果库位状态是锁定的话,就查找出库组盘表,如果存在未下发 // LambdaQueryWrapper<ShipmentContainerHeader> lam=Wrappers.lambdaQuery(); @@ -130,7 +143,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont // } // } - //更新库存分配数 + //2.更新库存分配数 inventoryDetail.setTaskQty(inventoryDetail.getTaskQty().add(shipmentCombinationModel.getShipQty())); inventoryDetailService.saveOrUpdate(inventoryDetail); //获取库位,然后锁定 @@ -138,7 +151,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont location.setStatus("lock"); locationService.saveOrUpdate(location); } - //更新单据明细的已出库数量 + //3.更新单据明细的已出库数量 shipmentDetail.setRequestQty(shipmentDetail.getRequestQty().add(shipmentCombinationModel.getShipQty())); int i = shipmentDetail.getShipQty().compareTo(shipmentDetail.getRequestQty()); if(i > 0){ @@ -158,25 +171,29 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont shipmentCombinationModel.setTaskType(400); } - //增加出库组盘头 - ShipmentContainerHeader shipmentContainerHeader = ShipmentContainerHeaderAdd(location, shipmentDetail, shipmentCombinationModel); - //增加出库组盘明细 + //5.增加出库组盘头 + ShipmentContainerHeader shipmentContainerHeader = ShipmentContainerHeaderAdd(location, shipmentDetail); + //6.增加出库组盘明细 ShipmentContainerDetail shipmentContainerDetail = ShipmentContainerDetailAdd(shipmentDetail, shipmentContainerHeader, shipmentCombinationModel); - //更新单据状态 + //7.更新单据状态 shipmentHeaderService.updateShipmentStatus(shipmentDetail.getShipmentId()); return shipmentContainerHeader; } /** - * 在组盘表中查找任务状态小于20的容器,如果状态为0就合并出库明细,状态大于0就提示不能组盘。如果找不到就新增一条组盘表头 + * 组盘头 + * 1.查看是否有状态小于等于20的组盘头,有就需新建组盘头,没有就新建 + * 2.没有符合条件的组盘头,新建组盘头 + * * @param location - * @param shipmentCombination + * @param shipmentDetail * @return */ private ShipmentContainerHeader ShipmentContainerHeaderAdd(Location location, - ShipmentDetail shipmentDetail, - ShipmentCombinationModel shipmentCombination) { + ShipmentDetail shipmentDetail) { + + //1.查看是否有状态小于等于20的组盘头,有就需新建组盘头,没有就新建 LambdaQueryWrapper<ShipmentContainerHeader> lambdaQueryWrapper=Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ShipmentContainerHeader::getContainerCode,location.getContainerCode()) .eq(ShipmentContainerHeader::getWarehouseCode,ShiroUtils.getWarehouseCode()) @@ -186,34 +203,39 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont return shipmentContainerHeader; } else { -// LambdaQueryWrapper<ShipmentContainerHeader> lam=Wrappers.lambdaQuery(); -// lam.eq(ShipmentContainerHeader::getContainerCode,location.getContainerCode()) -// .eq(ShipmentContainerHeader::getWarehouseCode,ShiroUtils.getWarehouseCode()) -// .eq(ShipmentContainerHeader::getTaskCreated,0) -// .eq(ShipmentContainerHeader::getStatus,0); -// shipmentContainerHeader = this.getOne(lam); -// if (shipmentContainerHeader == null) { + // 2.没有符合条件的组盘头,新建组盘头 + //找到容器类型 + LambdaQueryWrapper<Container> containerLam=Wrappers.lambdaQuery(); + containerLam.eq(Container::getCode,location.getContainerCode()) + .eq(Container::getWarehouseCode,ShiroUtils.getWarehouseCode()); + Container container = containerService.getOne(containerLam); + if(container == null){ + throw new ServiceException("系统没有此容器编码"); + } shipmentContainerHeader = new ShipmentContainerHeader(); shipmentContainerHeader.setContainerCode(location.getContainerCode()); shipmentContainerHeader.setLocationCode(location.getCode()); shipmentContainerHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); - //赋值u8仓库 shipmentContainerHeader.setCompanyCode(shipmentDetail.getCompanyCode()); + shipmentContainerHeader.setContainerType(container.getContainerType()); shipmentContainerHeader.setStatus(0); shipmentContainerHeader.setTaskCreated(0); shipmentContainerHeader.setCreatedBy(ShiroUtils.getLoginName()); - shipmentContainerHeader.setCreated(null); -// Material material=new Material(); -// material.setCode(shipmentDetail.getMaterialCode()); -// shipmentContainerHeader.setZoneCode(materialService.selectFirstEntity(material).getZoneCode()); - this.save(shipmentContainerHeader); + Boolean flag = this.save(shipmentContainerHeader); + if(flag == false){ + throw new ServiceException("新建组盘头失败,sql错误"); + } return shipmentContainerHeader; } -// } } /** - * 查询 容器编码、库存Id、出库明细Id 一致的组盘明细,如果存在则增加组盘数量,如果不存在就新增一条组盘明细 + * 组盘明细 + * 1.查看是否有同一出库明细的物料需要出库 + * 2.有时修改阻盘明细的出库数量就行 + * 3.没有就新建明细 + * 4。查看组盘头状态,如果状态在10到20,则生成任务明细或修改任务明细的数量 + * * @param shipmentDetail * @param shipmentContainerHeader * @param shipmentCombinationModel @@ -222,46 +244,63 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont private ShipmentContainerDetail ShipmentContainerDetailAdd(ShipmentDetail shipmentDetail, ShipmentContainerHeader shipmentContainerHeader, ShipmentCombinationModel shipmentCombinationModel) { + + Boolean flag =true; + //1.查看是否有同一出库明细的物料需要出库 LambdaQueryWrapper<ShipmentContainerDetail> lambdaQueryWrapper=Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ShipmentContainerDetail::getShippingContainerId,shipmentContainerHeader.getId()) .eq(ShipmentContainerDetail::getShipmentDetailId,shipmentCombinationModel.getShipmentDetailId()) .eq(ShipmentContainerDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); ShipmentContainerDetail shipmentContainerDetail = shipmentContainerDetailService.getOne(lambdaQueryWrapper); + ShipmentContainerDetail shipmentContainerDetaill = new ShipmentContainerDetail(); + + //2.有时修改阻盘明细的出库数量就行 if(shipmentContainerDetail != null) { shipmentContainerDetail.setQty(shipmentContainerDetail.getQty().add(shipmentCombinationModel.getShipQty())); - shipmentContainerDetailService.saveOrUpdate(shipmentContainerDetail); + flag=shipmentContainerDetailService.saveOrUpdate(shipmentContainerDetail); + if(flag == false){ + throw new ServiceException("修改组盘明细失败,sql错误"); + } } - else { - //构建明细 + else { + //3.没有就新建明细 LambdaQueryWrapper<Material> lam=Wrappers.lambdaQuery(); lam.eq(Material::getCode,shipmentDetail.getMaterialCode()) .eq(Material::getWarehouseCode,ShiroUtils.getWarehouseCode()); Material material = materialService.getOne(lam); - if (material == null) - throw new ServiceException("出库单(" + shipmentDetail.getShipmentCode() + ")的物料("+ shipmentDetail.getMaterialCode() +")不存在!"); - shipmentContainerDetail = new ShipmentContainerDetail(); - shipmentContainerDetail.setWarehouseCode(shipmentContainerHeader.getWarehouseCode()); - shipmentContainerDetail.setCompanyCode(shipmentContainerHeader.getCompanyCode()); - shipmentContainerDetail.setContainerCode(shipmentContainerHeader.getContainerCode()); - shipmentContainerDetail.setLocationCode(shipmentContainerHeader.getLocationCode()); - shipmentContainerDetail.setInventoryId(shipmentCombinationModel.getInventoryDetailId()); - shipmentContainerDetail.setInventorySts(shipmentDetail.getInventorySts()); - shipmentContainerDetail.setShippingContainerId(shipmentContainerHeader.getId()); - shipmentContainerDetail.setShipmentCode(shipmentDetail.getShipmentCode()); - shipmentContainerDetail.setShipmentId(shipmentDetail.getShipmentId()); - shipmentContainerDetail.setShipmentDetailId(shipmentCombinationModel.getShipmentDetailId()); - shipmentContainerDetail.setMaterialCode(material.getCode()); - shipmentContainerDetail.setMaterialName(material.getName()); - shipmentContainerDetail.setMaterialSpec(material.getSpec()); - shipmentContainerDetail.setQty(shipmentCombinationModel.getShipQty()); - shipmentContainerDetail.setCreated(null); - shipmentContainerDetail.setWaveId(shipmentDetail.getWaveId()); - shipmentContainerDetail.setCreatedBy(ShiroUtils.getLoginName()); - shipmentContainerDetailService.save(shipmentContainerDetail); + if (material == null) { + throw new ServiceException("出库单(" + shipmentDetail.getShipmentCode() + ")的物料(" + shipmentDetail.getMaterialCode() + ")不存在!"); + } + shipmentContainerDetaill.setWarehouseCode(shipmentContainerHeader.getWarehouseCode()); + shipmentContainerDetaill.setCompanyCode(shipmentContainerHeader.getCompanyCode()); + shipmentContainerDetaill.setContainerCode(shipmentContainerHeader.getContainerCode()); + shipmentContainerDetaill.setLocationCode(shipmentContainerHeader.getLocationCode()); + shipmentContainerDetaill.setInventoryId(shipmentCombinationModel.getInventoryDetailId()); + shipmentContainerDetaill.setInventorySts(shipmentDetail.getInventorySts()); + shipmentContainerDetaill.setShippingContainerId(shipmentContainerHeader.getId()); + shipmentContainerDetaill.setShipmentCode(shipmentDetail.getShipmentCode()); + shipmentContainerDetaill.setShipmentId(shipmentDetail.getShipmentId()); + shipmentContainerDetaill.setShipmentDetailId(shipmentDetail.getId()); + shipmentContainerDetaill.setMaterialCode(shipmentDetail.getMaterialCode()); + shipmentContainerDetaill.setMaterialName(shipmentDetail.getMaterialName()); + shipmentContainerDetaill.setMaterialSpec(shipmentDetail.getMaterialSpec()); + shipmentContainerDetaill.setMaterialUnit(shipmentDetail.getMaterialUnit()); + shipmentContainerDetaill.setQty(shipmentCombinationModel.getShipQty()); + shipmentContainerDetaill.setWaveId(shipmentDetail.getWaveId()); + shipmentContainerDetaill.setTaskCreated(0); + shipmentContainerDetaill.setBatch(shipmentDetail.getBatch()); + shipmentContainerDetaill.setLot(shipmentDetail.getLot()); + shipmentContainerDetaill.setProjectNo(shipmentDetail.getProjectNo()); + shipmentContainerDetaill.setCreatedBy(ShiroUtils.getLoginName()); + flag = shipmentContainerDetailService.save(shipmentContainerDetail); + if(flag == false){ + throw new ServiceException("新建组盘明细失败,sql错误"); + } } - // + //4.查看组盘头状态,如果状态在10到20,则生成任务明细或修改任务明细的数量 + //查看任务头 if(shipmentContainerHeader.getStatus()>=10 && shipmentContainerHeader.getStatus()<30){ LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper=Wrappers.lambdaQuery(); taskHeaderLambdaQueryWrapper.eq(TaskHeader::getWarehouseCode,shipmentContainerHeader.getWarehouseCode()) @@ -271,33 +310,60 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont if(taskHeader==null){ throw new ServiceException("有相同的组盘头,但找不到相应的任务头"); } - TaskDetail taskDetail = new TaskDetail(); - taskDetail.setTaskId(taskHeader.getId()); - taskDetail.setInternalTaskType(taskHeader.getInternalTaskType()); - taskDetail.setWarehouseCode(taskHeader.getWarehouseCode()); - taskDetail.setCompanyCode(taskHeader.getCompanyCode()); - taskDetail.setTaskType(taskHeader.getTaskType()); - taskDetail.setAllocationId(shipmentContainerDetail.getId()); - taskDetail.setBillCode(shipmentContainerDetail.getShipmentCode()); - taskDetail.setBillDetailId(shipmentContainerDetail.getShipmentDetailId()); - taskDetail.setMaterialCode(shipmentContainerDetail.getMaterialCode()); - taskDetail.setMaterialName(shipmentContainerDetail.getMaterialName()); - taskDetail.setMaterialSpec(shipmentContainerDetail.getMaterialSpec()); - taskDetail.setMaterialUnit(shipmentContainerDetail.getMaterialUnit()); - taskDetail.setFromInventoryId(shipmentContainerDetail.getInventoryId()); - taskDetail.setQty(shipmentContainerDetail.getQty()); - taskDetail.setContainerCode(taskHeader.getContainerCode()); - taskDetail.setFromLocation(taskHeader.getFromLocation()); - taskDetail.setToLocation(taskHeader.getToLocation()); - if(shipmentContainerHeader.getStatus()==10) { - taskDetail.setStatus(0); + + if(shipmentContainerDetaill == null) { + //shipmentContainerDetaill为空时,说明组盘明细不是新建,so修改任务明细 + //查找任务明细 + LambdaQueryWrapper<TaskDetail> taskDetailLam = Wrappers.lambdaQuery(); + taskDetailLam.eq(TaskDetail::getWarehouseCode,shipmentContainerDetail.getWarehouseCode()) + .eq(TaskDetail::getAllocationId,shipmentContainerDetail.getId()) + .eq(TaskDetail::getTaskId,taskHeader.getId()) + .eq(TaskDetail::getInternalTaskType,200); + TaskDetail taskDetail = taskDetailService.getOne(taskDetailLam); + if(taskDetail == null){ + throw new ServiceException("找不到对应的任务明细"); + } + taskDetail.setQty(taskDetail.getQty().add(shipmentCombinationModel.getShipQty())); + flag=taskDetailService.saveOrUpdate(taskDetail); + if(flag == false){ + throw new ServiceException("修改任务明细失败,sql错误"); + } }else { - taskDetail.setStatus(10); + //shipmentContainerDetaill不为空时,说明组盘明细是新建,so新建任务明细 + TaskDetail taskDetail = new TaskDetail(); + taskDetail.setTaskId(taskHeader.getId()); + taskDetail.setInternalTaskType(taskHeader.getInternalTaskType()); + taskDetail.setWarehouseCode(taskHeader.getWarehouseCode()); + taskDetail.setCompanyCode(taskHeader.getCompanyCode()); + taskDetail.setTaskType(taskHeader.getTaskType()); + taskDetail.setAllocationId(shipmentContainerDetaill.getId()); + taskDetail.setBillCode(shipmentContainerDetaill.getShipmentCode()); + taskDetail.setBillDetailId(shipmentContainerDetaill.getShipmentDetailId()); + taskDetail.setMaterialCode(shipmentContainerDetaill.getMaterialCode()); + taskDetail.setMaterialName(shipmentContainerDetaill.getMaterialName()); + taskDetail.setMaterialSpec(shipmentContainerDetaill.getMaterialSpec()); + taskDetail.setMaterialUnit(shipmentContainerDetaill.getMaterialUnit()); + taskDetail.setFromInventoryId(shipmentContainerDetaill.getInventoryId()); + taskDetail.setQty(shipmentContainerDetaill.getQty()); + taskDetail.setContainerCode(taskHeader.getContainerCode()); + taskDetail.setFromLocation(taskHeader.getFromLocation()); + taskDetail.setToLocation(taskHeader.getToLocation()); + taskDetail.setLot(shipmentContainerDetaill.getLot()); + taskDetail.setWaveId(shipmentContainerDetaill.getWaveId()); + taskDetail.setBatch(shipmentContainerDetaill.getBatch()); + taskDetail.setProjectNo(shipmentContainerDetail.getProjectNo()); + if (shipmentContainerHeader.getStatus() == 10) { + taskDetail.setStatus(0); + } else { + taskDetail.setStatus(10); + } + taskDetail.setCreatedBy(ShiroUtils.getLoginName()); + taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); + flag = taskDetailService.save(taskDetail); + if(flag == false){ + throw new ServiceException("新建任务明细失败,sql错误"); + } } - taskDetail.setTaskType(taskHeader.getTaskType()); - taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); - taskDetail.setLastUpdated(null); - taskDetailService.save(taskDetail); } return shipmentContainerDetail; } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java index fb7843a..d8d4e95 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java @@ -203,6 +203,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea @Override @Transactional public AjaxResult createTaskFromShipmentContainers(ShipmentTaskCreateModel shipmentTaskCreateModel) { + Boolean flag = true; Integer shipmentContainerHeaderId = shipmentTaskCreateModel.getShipmentContainerHeaderIds(); //获取表头 ShipmentContainerHeader shipmentContainerHeader = shipmentContainerHeaderService.getById(shipmentContainerHeaderId); @@ -235,13 +236,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea task.setFromLocation(shipmentContainerHeader.getLocationCode()); task.setToLocation(shipmentContainerHeader.getLocationCode()); //判断是否整出任务,钱柜和AGV不能整出 - if (shipmentContainerHeader.getStatus().intValue() == 300) { + //表示整出优先 //判断当前子货箱所有数量是否等于该托盘对应的所有库存的数量, //这里必须与库存的在库数量对比,后期可能存在一个配盘在执行任务,后一个配盘又在配这个的情况(这个时候不能整出) // 如果相等,则说明这个货箱包含了所有的数量,则可以整出,否则,创建拣选任务; //查询所有库存 - InventoryDetail inventoryCondition = new InventoryDetail(); LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getLocationCode, shipmentContainerHeader.getLocationCode()) .eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()); @@ -258,7 +258,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea task.setTaskType(300);//整盘出库 task.setToLocation(""); } - } + task.setInternalTaskType(200); task.setAllocationHeadId(shipmentContainerHeader.getId()); task.setWarehouseCode(shipmentContainerHeader.getWarehouseCode()); @@ -293,19 +293,32 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea taskDetail.setContainerCode(task.getContainerCode()); taskDetail.setFromLocation(task.getFromLocation()); taskDetail.setToLocation(task.getToLocation()); + taskDetail.setLot(shipmentContainerDetail.getLot()); + taskDetail.setBatch(shipmentContainerDetail.getBatch()); + taskDetail.setProjectNo(shipmentContainerDetail.getProjectNo()); taskDetail.setStatus(0); taskDetail.setWaveId(shipmentContainerDetail.getWaveId()); taskDetail.setInventorySts(shipmentContainerDetail.getInventorySts()); - taskDetail.setTaskType(task.getTaskType()); + taskDetail.setCreatedBy(ShiroUtils.getLoginName()); taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); - taskDetail.setLastUpdated(null); - taskDetailService.save(taskDetail); + flag=taskDetailService.save(taskDetail); + if(flag == false){ + throw new ServiceException("新建任务明细失败,sql报错"); + } + + shipmentContainerDetail.setStatus(10); } //更新货位状态 - ShipmentContainerHeader record = new ShipmentContainerHeader(); - record.setId(shipmentContainerHeaderId); - record.setStatus(10); - shipmentContainerHeaderService.saveOrUpdate(record); + shipmentContainerHeader.setStatus(10); + flag = shipmentContainerHeaderService.updateById(shipmentContainerHeader); + if(flag == false){ + throw new ServiceException("修改组盘头状态失败,sql报错"); + } + + flag = shipmentContainerDetailService.updateBatchById(shipmentContainerDetails); + if(flag == false){ + throw new ServiceException("修改组盘明细状态明细失败,sql报错"); + } return AjaxResult.success(task.getId()); } @@ -1227,11 +1240,16 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); inventoryTransaction.setTransactionType(20); inventoryTransaction.setMaterialCode(shipmentDetail.getMaterialCode()); - //inventory.setMaterialName(DataUtils.getString(taskDetail.getMaterialName()));//物料名称 + inventoryTransaction.setMaterialName(shipmentDetail.getMaterialName()); + inventoryTransaction.setMaterialSpec(shipmentDetail.getMaterialSpec()); + inventoryTransaction.setMaterialUnit(shipmentDetail.getMaterialUnit()); inventoryTransaction.setBillCode(taskDetail.getBillCode()); inventoryTransaction.setBillDetailId(shipmentDetail.getId()); inventoryTransaction.setBatch(shipmentDetail.getBatch()); inventoryTransaction.setLot(shipmentDetail.getLot()); + inventoryTransaction.setProjectNo(shipmentDetail.getProjectNo()); + inventoryTransaction.setQcCheck(inventoryDetail.getQcCheck()); + inventoryTransaction.setSupplierCode(inventoryDetail.getSupplierCode()); inventoryTransaction.setManufactureDate(shipmentDetail.getManufactureDate()); inventoryTransaction.setExpirationDate(shipmentDetail.getExpirationDate()); inventoryTransaction.setInventorySts(inventoryDetail.getInventorySts()); @@ -1255,14 +1273,18 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea containerService.removeByCode(task.getContainerCode()); //将库位状态改为空闲,如果是整出的对应的容器也清空 - Location locationRecord = new Location(); + + LambdaQueryWrapper<Location> lam=Wrappers.lambdaQuery(); + lam.eq(Location::getCode,task.getToLocation()); + Location locationRecord = locationService.getOne(lam); + if(lam == null){ + throw new ServiceException("系统没有"+task.getToLocation()+"库位"); + } locationRecord.setStatus("empty"); if(task.getTaskType()==300) { locationRecord.setContainerCode(""); } - LambdaUpdateWrapper<Location> locationLambdaUpdateWrapper = Wrappers.lambdaUpdate(); - locationLambdaUpdateWrapper.eq(Location::getCode,task.getToLocation()); - locationService.update(locationLambdaUpdateWrapper); + locationService.updateById(locationRecord); //如果是整出,删掉这个库位上的这个托盘,否则更改托盘状态 Container containerRecord = new Container(); if(task.getTaskType()==300) { @@ -1286,14 +1308,16 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } } //设置出库货箱状态为拣货任务完成 - ShipmentContainerDetail shipmentContainerDetail = new ShipmentContainerDetail(); - shipmentContainerDetail.setStatus(30); - shipmentContainerDetail.setLastUpdated(new Date()); - shipmentContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); - LambdaUpdateWrapper<ShipmentContainerDetail> shipmentContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate(); - shipmentContainerDetailLambdaUpdateWrapper.eq(ShipmentContainerDetail::getId,task.getAllocationHeadId()); - if (! shipmentContainerDetailService.update(shipmentContainerDetail, shipmentContainerDetailLambdaUpdateWrapper)){ - throw new ServiceException("更新组盘明细状态失败"); + for(TaskDetail taskDetail : taskDetails) { + ShipmentContainerDetail shipmentContainerDetail = new ShipmentContainerDetail(); + shipmentContainerDetail.setStatus(30); + shipmentContainerDetail.setLastUpdated(new Date()); + shipmentContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); + LambdaUpdateWrapper<ShipmentContainerDetail> shipmentContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate(); + shipmentContainerDetailLambdaUpdateWrapper.eq(ShipmentContainerDetail::getId, taskDetail.getAllocationId()); + if (!shipmentContainerDetailService.update(shipmentContainerDetail, shipmentContainerDetailLambdaUpdateWrapper)) { + throw new ServiceException("更新组盘明细状态失败"); + } } //设置出库货箱表头状态为拣货任务完成 ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader(); diff --git a/src/main/resources/mybatis/shipment/ShipmentContainerHeaderMapper.xml b/src/main/resources/mybatis/shipment/ShipmentContainerHeaderMapper.xml index 8fdb262..aad2c80 100644 --- a/src/main/resources/mybatis/shipment/ShipmentContainerHeaderMapper.xml +++ b/src/main/resources/mybatis/shipment/ShipmentContainerHeaderMapper.xml @@ -14,28 +14,16 @@ <result column="length" jdbcType="DECIMAL" property="length" /> <result column="width" jdbcType="DECIMAL" property="width" /> <result column="height" jdbcType="DECIMAL" property="height" /> - <result column="totalValue" jdbcType="DECIMAL" property="totalValue" /> - <result column="shipmentId" jdbcType="INTEGER" property="shipmentId" /> <result column="companyCode" jdbcType="VARCHAR" property="companyCode" /> <result column="totalQty" jdbcType="INTEGER" property="totalQty" /> <result column="waybillCode" jdbcType="VARCHAR" property="waybillCode" /> <result column="groupNum" jdbcType="INTEGER" property="groupNum" /> <result column="groupIndex" jdbcType="INTEGER" property="groupIndex" /> - <result column="waveId" jdbcType="INTEGER" property="waveId" /> - <result column="countIndex" jdbcType="INTEGER" property="countIndex" /> - <result column="countTotal" jdbcType="INTEGER" property="countTotal" /> <result column="taskCreated" jdbcType="INTEGER" property="taskCreated" /> - <result column="shipmentCode" jdbcType="VARCHAR" property="shipmentCode" /> - <result column="transContCode" jdbcType="VARCHAR" property="transContCode" /> <result column="oqcBench" jdbcType="VARCHAR" property="oqcBench" /> <result column="oqcBy" jdbcType="VARCHAR" property="oqcBy" /> <result column="oqcStartAt" jdbcType="TIMESTAMP" property="oqcStartAt" /> <result column="oqcEndAt" jdbcType="TIMESTAMP" property="oqcEndAt" /> - <result column="loadId" jdbcType="INTEGER" property="loadId" /> - <result column="cageId" jdbcType="INTEGER" property="cageId" /> - <result column="cageCode" jdbcType="VARCHAR" property="cageCode" /> - <result column="stagedAt" jdbcType="TIMESTAMP" property="stagedAt" /> - <result column="stagedBy" jdbcType="VARCHAR" property="stagedBy" /> <result column="created" jdbcType="TIMESTAMP" property="created" /> <result column="createdBy" jdbcType="VARCHAR" property="createdBy" /> <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" /> @@ -44,15 +32,7 @@ <result column="userDef1" jdbcType="VARCHAR" property="userDef1" /> <result column="userDef2" jdbcType="VARCHAR" property="userDef2" /> <result column="userDef3" jdbcType="VARCHAR" property="userDef3" /> - <result column="userDef4" jdbcType="VARCHAR" property="userDef4" /> - <result column="userDef5" jdbcType="VARCHAR" property="userDef5" /> - <result column="userDef6" jdbcType="VARCHAR" property="userDef6" /> - <result column="userDef7" jdbcType="VARCHAR" property="userDef7" /> - <result column="userDef8" jdbcType="VARCHAR" property="userDef8" /> <result column="carrierCode" jdbcType="VARCHAR" property="carrierCode" /> - <result column="scaledBy" jdbcType="VARCHAR" property="scaledBy" /> - <result column="scaledAt" jdbcType="TIMESTAMP" property="scaledAt" /> - <result column="storeCode" jdbcType="VARCHAR" property="storeCode" /> <result column="picUrls" jdbcType="VARCHAR" property="picUrls" /> <result column="pidIds" jdbcType="VARCHAR" property="pidIds" /> <result column="actualShipDateTime" jdbcType="TIMESTAMP" property="actualShipDateTime" /> @@ -61,12 +41,9 @@ <sql id="Base_Column_List"> <!--@mbg.generated--> id, containerCode, warehouseCode, containerType, `enable`, parent, totalWeight, totalVolume, - `length`, width, height, totalValue, shipmentId, companyCode, totalQty, waybillCode, - groupNum, groupIndex, waveId, countIndex, countTotal, taskCreated, shipmentCode, - transContCode, oqcBench, oqcBy, oqcStartAt, oqcEndAt, loadId, cageId, cageCode, stagedAt, - stagedBy, created, createdBy, lastUpdated, lastUpdatedBy, version, userDef1, userDef2, - userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, carrierCode, scaledBy, - scaledAt, storeCode, picUrls, pidIds, actualShipDateTime, systemCreated + `length`, width, height, totalValue, companyCode, totalQty, waybillCode, groupNum, groupIndex, taskCreated, + transContCode, oqcBench, oqcBy, oqcStartAt, oqcEndAt, created, createdBy, lastUpdated, lastUpdatedBy, version, + userDef1, userDef2,userDef3,carrierCode,picUrls, pidIds, actualShipDateTime, systemCreated </sql> <select id="getShipmentContainerMaxAndMinStatusByShipmentID" resultType="java.util.Map">