diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java index d4592c2..f79561e 100644 --- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java +++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java @@ -9,6 +9,7 @@ import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; +import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; @@ -16,6 +17,7 @@ import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail; import com.huaheng.pc.inventory.adjustDetail.service.AdjustDetailService; import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService; import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -96,7 +98,36 @@ public class adjustDetailController extends BaseController { } } + /** + * 只调整数量 + * 修改 + */ + @GetMapping("/adjustEdit") + public String editAdjust(Integer id, ModelMap mmap) + { + AdjustDetail adjustDetailEdit = adjustDetailService.getById(id); + mmap.put("adjustDetailEdit", adjustDetailEdit); + return prefix + "/adjustEdit"; + } + /** + * 修改保存调整数量 + */ + //@RequiresPermissions("inventory:cyclecountAdjustDetail:addAdjust") + @Log(title = "库存-调整单", operating = "调整单调整库存差异,调整数量", action = BusinessType.UPDATE) + @PostMapping("/editAdjustSave") + @ResponseBody + public AjaxResult editAdjustSave(AdjustDetail adjustDetail) + { + //未上传不允许进行明细差异调整 +// CyclecountAdjust cyclecountAdjust = cycleconutAdjustService.selectEntityById(cyclecountAdjustDetail.getCyclecountAdjustId()); +// if(cyclecountAdjust.getStatus() != 30 ){ +// return AjaxResult.error("单据未上传,没有调整单下发,不允许差异调整!!"); +// //throw new ServiceException("单据未上传,没有调整单下发,不允许差异调整!"); +// } + AjaxResult result = adjustDetailService.updateAdjustDetail(adjustDetail); + return result; + } diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java index a467c4b..7302a6b 100644 --- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java +++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java @@ -34,6 +34,13 @@ public class AdjustDetail implements Serializable { private String cycleCountCode; /** + * 库存明细ID + */ + @TableField(value = "inventoryDetailId") + @ApiModelProperty(value = "库存明细ID") + private Integer inventoryDetailId; + + /** * 盘点单号行号 */ @TableField(value = "cycleDetailId") @@ -249,6 +256,18 @@ public class AdjustDetail implements Serializable { @TableField(value = "containerCode") @ApiModelProperty(value = "容器编码") private String containerCode; + /** + * 更新人 + * */ + @TableField(value = "lastUpdatedBy") + @ApiModelProperty(value = "更新人") + private String lastUpdatedBy; + /** + * 更新时间 + */ + @TableField(value = "lastUpdated") + @ApiModelProperty(value = "更新时间") + private Date lastUpdated; private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java index 00b7c60..c342752 100644 --- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java +++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java @@ -1,13 +1,14 @@ package com.huaheng.pc.inventory.adjustDetail.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail; public interface AdjustDetailService extends IService<AdjustDetail> { - + AjaxResult updateAdjustDetail(AdjustDetail adjustDetail); } diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java index 51de3d6..998d43f 100644 --- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java +++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java @@ -1,10 +1,167 @@ package com.huaheng.pc.inventory.adjustDetail.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.config.container.service.ContainerService; +import com.huaheng.pc.config.location.service.LocationService; +import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader; +import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService; +import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService; +import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService; +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; +import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; +import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction; +import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService; +import io.swagger.models.auth.In; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail; import com.huaheng.pc.inventory.adjustDetail.mapper.AdjustDetailMapper; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.net.CacheResponse; +import java.util.Date; +import java.util.List; +import java.util.WeakHashMap; + @Service public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, AdjustDetail> implements AdjustDetailService { + + @Resource + private AdjustHeaderService adjustHeaderService; + @Resource + private CycleCountHeaderService cycleCountHeaderService; + @Resource + private CycleCountDetailService cycleCountDetailService; + @Resource + private InventoryHeaderService inventoryHeaderService; + @Resource + private InventoryDetailService inventoryDetailService; + @Resource + private InventoryTransactionService inventoryTransactionService; + @Resource + private LocationService locationService; + @Resource + private ContainerService containerService; + + + + + + + + /** + * 调整库存数量 + * @param adjustDetail + * @return + */ + @Transactional + @Override + public AjaxResult updateAdjustDetail(AdjustDetail adjustDetail) { + /*修改库存数量,调整单据状态,写入库存交易*/ + + //已调整过不允许修改。 + if(adjustDetail.getStatus() == 1){ + AjaxResult.error("该单据已调整,不允许再次调整!" ); + } + //查询调整的库存明细 + InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId()); + /*调整后的数量写入库存*/ + //比较大小可以用 .compareTo()返回值 -1 小于 0 等于 1 大于 + //Bigdecimal 自带运算方法.add加法 .subtract减法 + + if(adjustDetail.getToQty().compareTo(BigDecimal.ZERO) == 0){ + //当调整后数量为0时,直接删除该条库存,并写入库存交易 + //删除库存,并查询当前库位还有没有其他物料,没有则删除库存头,恢复容器和库位状态 + InventoryDetail inv = new InventoryDetail(); + inv.setInventoryHeaderId(inventoryDetail.getInventoryHeaderId()); + inv.setLocationCode(inventoryDetail.getLocationCode()); + inv.setContainerCode(inventoryDetail.getContainerCode()); + LambdaQueryWrapper<InventoryDetail> lamdDetail = Wrappers.lambdaQuery(inv); + List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(lamdDetail); + inventoryDetailService.removeById(adjustDetail.getInventoryDetailId());//删除实际库存数量为0的库存明细 + if(inventoryDetailList.size() == 0){ + //恢复库位和容器状态,删除库存头 + inventoryHeaderService.removeById(inventoryDetail.getInventoryHeaderId()); + locationService.updateContainerCodeAndStatus(inventoryDetail.getLocationCode(),"","empty"); + containerService.updateLocationCodeAndStatus(inventoryDetail.getContainerCode(),"","empty"); + } + }else{ + //修改库存 + //BigDecimal temp =(adjustDetail.getFromQty()).add(adjustDetail.getGapQty()); + inventoryDetail.setQty(adjustDetail.getToQty());//调整后的数量 + inventoryDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); + inventoryDetail.setLastUpdated(new Date()); + inventoryDetailService.saveOrUpdate(inventoryDetail); + + } + //写入库存交易记录 + InventoryTransaction inventoryTransaction = new InventoryTransaction(); + inventoryTransaction.setWarehouseCode(inventoryDetail.getWarehouseCode()); + inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode()); + inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); + inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); + inventoryTransaction.setTransactionType(40); + inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); + inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); + inventoryTransaction.setMaterialSpec(inventoryDetail.getMaterialSpec()); + inventoryTransaction.setMaterialUnit(inventoryDetail.getMaterialUnit()); + inventoryTransaction.setTaskQty(inventoryDetail.getTaskQty()); + inventoryTransaction.setInventorySts(inventoryDetail.getInventorySts()); + inventoryTransaction.setReferCode(inventoryDetail.getReferCode()); + inventoryTransaction.setReferDetailId(inventoryDetail.getReferDetailId()); + inventoryTransaction.setBatch(inventoryDetail.getBatch()); + inventoryTransaction.setLot(inventoryDetail.getLot()); + inventoryTransaction.setProjectNo(inventoryDetail.getProjectNo()); + inventoryTransaction.setQcCheck(inventoryDetail.getQcCheck()); + inventoryTransaction.setWeight(inventoryDetail.getWeight()); + inventoryTransaction.setManufactureDate(inventoryDetail.getManufactureDate()); + inventoryTransaction.setExpirationDate(inventoryDetail.getExpirationDate()); + inventoryTransaction.setAgingDate(inventoryDetail.getCreated()); + inventoryTransaction.setAttributeId(inventoryDetail.getAttributeId()); + inventoryTransaction.setAttribute1(inventoryDetail.getAttribute1()); + inventoryTransaction.setAttribute2(inventoryDetail.getAttribute2()); + inventoryTransaction.setAttribute3(inventoryDetail.getAttribute3()); +// inventoryTransaction.setLockCode(inventoryDetail.getLockCode());//交易锁 + inventoryTransaction.setCreated(new Date()); + inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName()); +// inventoryTransaction.setVersion(); +// inventoryTransaction.setUserDef1(); +// inventoryTransaction.setUserDef2(); +// inventoryTransaction.setUserDef3(); +// inventoryTransaction.setProcessStamp(); +// inventoryTransaction.setBillCode(); + inventoryTransaction.setBillDetailId(inventoryDetail.getReceiptDetailId()); + inventoryTransaction.setSupplierCode(inventoryDetail.getSupplierCode()); + inventoryTransactionService.saveOrUpdate(inventoryTransaction); + + //修改调整单明细状态 + adjustDetail.setStatus(1); + adjustDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); + adjustDetail.setLastUpdated(new Date()); + this.saveOrUpdate(adjustDetail); + + return AjaxResult.success("调整库存数量成功!"); + } + + + + + + + + + + + + + + } diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java index 91fc8f0..b8fb449 100644 --- a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java @@ -205,6 +205,7 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl<CycleCountHeaderMap adjustDetail.setAdjustCode(adjustHeader.getCode()); adjustDetail.setWarehouseCode(adjustHeader.getWarehouseCode()); adjustDetail.setCompanyCode(adjustHeader.getCompanyCode()); + adjustDetail.setInventoryDetailId(item.getInventoryDetailId());//库存明细 adjustDetail.setLocationCode(item.getLocationCode()); adjustDetail.setContainerCode(item.getContainerCode()); adjustDetail.setCycleCountCode(cyclecountHeader.getCode()); @@ -217,7 +218,8 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl<CycleCountHeaderMap adjustDetail.setToInventorySts(item.getInventorySts());//盘点不涉及属性 adjustDetail.setFromInventorySts(item.getInventorySts()); adjustDetail.setFromQty(item.getSystemQty());//调整前数量 - adjustDetail.setToQty(null);//调整后数量 + BigDecimal toqty = item.getSystemQty().add(item.getGapQty());//调整后数量 + adjustDetail.setToQty(toqty); adjustDetail.setGapQty(item.getGapQty());//调整数量 adjustDetail.setCreated(new Date()); adjustDetail.setCreatedBy(ShiroUtils.getLoginName()); diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java index f0267c1..10c86ab 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import lombok.Data; @@ -93,7 +94,7 @@ public class InventoryTransaction implements Serializable { */ @TableField(value = "taskQty") @ApiModelProperty(value="任务数量") - private Integer taskQty; + private BigDecimal taskQty; /** * 库存状态 diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderService.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderService.java index c67cc88..a9f7ce6 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderService.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderService.java @@ -5,6 +5,7 @@ import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerD import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentCombinationModel; import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader; import com.baomidou.mybatisplus.extension.service.IService; +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -28,6 +29,8 @@ public interface ShipmentContainerHeaderService extends IService<ShipmentContain AjaxResult autoCombination(String shipmentCode); + AjaxResult autoCombination(List<ShipmentDetail> shipmentDetailList); + AjaxResult checkForCancelCombination(List<Integer> shipmentContainerIds); AjaxResult createTask(List<Integer> idList); 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 b761c33..e689b9d 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 @@ -387,16 +387,21 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont @Override @Transactional public AjaxResult autoCombination(String shipmentCode) { - int num=0; - AjaxResult ajaxResult=new AjaxResult(); - - LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper=Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode,shipmentCode) - .eq(ShipmentDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); + LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode, shipmentCode) + .eq(ShipmentDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()); List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(lambdaQueryWrapper); - if(shipmentDetailList.size()<1 || shipmentDetailList==null){ + if (shipmentDetailList.size() < 1 || shipmentDetailList == null) { return AjaxResult.error("找不到子单链"); } + return this.autoCombination(shipmentDetailList); + } + + + //出库自动组盘 + public AjaxResult autoCombination(List<ShipmentDetail> shipmentDetailList){ + int num = 0; + List<Integer> list=new ArrayList<>(); for (ShipmentDetail item : shipmentDetailList) { //获取需要出库数量 BigDecimal shipmentQty = item.getShipQty().subtract(item.getRequestQty()); @@ -412,6 +417,9 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont // search.setInventorySts(item.getInventorySts()); //物料状态 List<InventoryDetail> inventoryList = shippingCombinationService.getInventorys(item); + if(inventoryList.size() < 1 && item.getWaveId() != 0){ + return AjaxResult.error("主单为"+item.getShipmentCode()+"子单id为"+item.getId() + "的单据没有库存,波次失败"); + } if (inventoryList.size() < 1) { num = num + 1; } else { @@ -426,11 +434,12 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont shipmentCombination.setInventoryDetailId(inventory.getId()); shipmentCombination.setShipmentDetailId(item.getId()); shipmentCombination.setType((short) 300); - List<Integer> list=new ArrayList<>(); + //如果库存数 >= 待出库数,组盘数就是待出库数并且结束组盘,否则组盘数就是库存数 if (inventoryQty.compareTo(shipmentQty) > -1) { shipmentCombination.setShipQty(shipmentQty); ShipmentContainerHeader shipmentContainerHeader=this.combination(shipmentCombination); + list.add(shipmentContainerHeader.getId()); } else { shipmentCombination.setShipQty(inventoryQty); ShipmentContainerHeader shipmentContainerHeader=this.combination(shipmentCombination); @@ -443,7 +452,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont if(num==shipmentDetailList.size()){ throw new ServiceException("单据物料在此库区没有库存,无法出库"); } - return AjaxResult.success("成功"); + return AjaxResult.success("成功",list); } /** diff --git a/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java b/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java index 306f83c..75aa9fa 100644 --- a/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java +++ b/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java @@ -165,9 +165,12 @@ public class WaveController extends BaseController { @Log(title = "出库-波次", operating = "开始波次", action = BusinessType.UPDATE) @PostMapping("/startWave") @ResponseBody - public AjaxResult editSave(Wave wave) { - wave.setLastUpdatedBy(ShiroUtils.getLoginName()); - return toAjax(waveService.updateById(wave)); + public AjaxResult starWave(String ids) { + if (StringUtils.isEmpty(ids)){ + return AjaxResult.error("id不能为空"); + } + AjaxResult result=waveService.startWave(ids); + return result; } } diff --git a/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java b/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java index b170945..d0bf227 100644 --- a/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java +++ b/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java @@ -1,11 +1,57 @@ package com.huaheng.pc.shipment.wave.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.huaheng.common.support.Convert; +import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService; +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; +import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService; import com.huaheng.pc.shipment.wave.domain.Wave; import com.huaheng.pc.shipment.wave.mapper.WaveMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; @Service public class WaveService extends ServiceImpl<WaveMapper, Wave> { + + @Autowired + private ShipmentDetailService shipmentDetailService; + @Autowired + private ShipmentContainerHeaderService shipmentContainerHeaderService; + + //开始波次,对带有此波次号的单据进行后续的后台操作 + + @Transactional + public AjaxResult startWave(String ids) { + List<ShipmentDetail> list = new ArrayList<>(); + for (Integer id : Convert.toIntArray(ids)) { + //找到此波次的单据 + LambdaQueryWrapper<ShipmentDetail> lam = Wrappers.lambdaQuery(); + lam.eq(ShipmentDetail::getWaveId,id) + .eq(ShipmentDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()); + List<ShipmentDetail> shipmentDetails=shipmentDetailService.list(lam); + + //整合所有加入波次的单据 + if(shipmentDetails != null){ + list.addAll(shipmentDetails); + } + } + + //自动组盘 + AjaxResult ajaxResult=shipmentContainerHeaderService.autoCombination(list); + if(ajaxResult.getData() != null){ + //生成任务 + shipmentContainerHeaderService.createTask(Arrays.asList(Convert.toIntArray(ajaxResult.getData().toString()))); + } + return AjaxResult.success("波次运行成功"); + } } 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 173af93..59a21d0 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 @@ -502,6 +502,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea detail.setMaterialCode(DataUtils.getString(map.get("materialCode")));//物料号 detail.setMaterialName(DataUtils.getString(map.get("materialName")));//物料名称 detail.setMaterialSpec(DataUtils.getString(map.get("materialSpec")));//物料规格 + detail.setMaterialUnit(DataUtils.getString(map.get("materialUnit")));//物料单位 detail.setReceiptCode(DataUtils.getString(map.get("receiptCode")));//入库单编码 detail.setReceiptDetailId(DataUtils.getInteger(map.get("receiptDetailId")));//入库单明细ID detail.setBatch(DataUtils.getString(map.get("batch")));//批次 @@ -534,6 +535,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea inventoryTransaction.setContainerCode(DataUtils.getString(map.get("containerCode"))); inventoryTransaction.setMaterialCode(DataUtils.getString(map.get("materialCode"))); inventoryTransaction.setMaterialName(DataUtils.getString(map.get("materialName"))); + inventoryTransaction.setMaterialSpec(DataUtils.getString(map.get("materialSpec")));//物料规格 + inventoryTransaction.setMaterialUnit(DataUtils.getString(map.get("materialUnit")));//物料单位 inventoryTransaction.setBillCode(DataUtils.getString(map.get("receiptCode"))); inventoryTransaction.setBillDetailId(DataUtils.getInteger(map.get("receiptDetailId"))); inventoryTransaction.setBatch(DataUtils.getString(map.get("batch"))); @@ -541,7 +544,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea // inventoryTransaction.setManufactureDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("manufactureDate").toString()));//生产日期 // inventoryTransaction.setExpirationDate(DataUtils.getDateTime(map.get("expirationDate"))); inventoryTransaction.setInventorySts(DataUtils.getString((map.get("inventorySts")))); - inventoryTransaction.setTaskQty(DataUtils.getInteger(map.get("qty"))); + inventoryTransaction.setTaskQty(DataUtils.getBigDecimal(map.get("qty"))); inventoryTransaction.setCreated(new Date()); inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName()); if (!inventoryTransactionService.save(inventoryTransaction)) @@ -774,7 +777,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea inventoryTransaction.setMaterialName(item.getMaterialName()); inventoryTransaction.setMaterialSpec(item.getMaterialSpec()); inventoryTransaction.setMaterialUnit(item.getMaterialUnit()); - inventoryTransaction.setTaskQty(0); + inventoryTransaction.setTaskQty(BigDecimal.ZERO); inventoryTransaction.setInventorySts(item.getInventorySts()); //inventoryTransaction.setReferCode(); //inventoryTransaction.setQcCheck(); @@ -1229,7 +1232,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea inventoryTransaction.setExpirationDate(shipmentDetail.getExpirationDate()); inventoryTransaction.setInventorySts(inventoryDetail.getInventorySts()); //这里取反,更符合出库的语义,同时方便对记录进行统计 - inventoryTransaction.setTaskQty(taskDetail.getQty().intValue()); + inventoryTransaction.setTaskQty(taskDetail.getQty()); // inventoryTransaction.setCostPrice(shipmentDetail.); inventoryTransaction.setCreated(null); inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName()); @@ -1293,8 +1296,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea shipmentContainerHeaderLambdaUpdateWrapper.eq(ShipmentContainerHeader::getId,task.getAllocationHeadId()); if (! shipmentContainerHeaderService.update(shipmentContainerHeader, shipmentContainerHeaderLambdaUpdateWrapper)) throw new ServiceException("更新组盘头状态失败"); - - //修改出库单状态 LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); taskDetailLambdaQueryWrapper.eq(TaskDetail::getTaskId,task.getId()); diff --git a/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml b/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml index ecc41cb..7215083 100644 --- a/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml +++ b/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml @@ -6,6 +6,7 @@ <id column="id" jdbcType="INTEGER" property="id" /> <result column="adjustCode" jdbcType="VARCHAR" property="adjustCode" /> <result column="cycleCountCode" jdbcType="VARCHAR" property="cycleCountCode" /> + <result column="inventoryDetailId" jdbcType="INTEGER" property="inventoryDetailId" /> <result column="cycleDetailId" jdbcType="INTEGER" property="cycleDetailId" /> <result column="checkCode" jdbcType="VARCHAR" property="checkCode" /> <result column="checkDetailId" jdbcType="VARCHAR" property="checkDetailId" /> @@ -29,6 +30,8 @@ <result column="status" jdbcType="INTEGER" property="status" /> <result column="createdBy" jdbcType="VARCHAR" property="createdBy" /> <result column="created" jdbcType="TIMESTAMP" property="created" /> + <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" /> + <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" /> <result column="agreeBy" jdbcType="VARCHAR" property="agreeBy" /> <result column="agreeTime" jdbcType="TIMESTAMP" property="agreeTime" /> <result column="Remark" jdbcType="VARCHAR" property="remark" /> @@ -40,10 +43,10 @@ </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, adjustCode, cycleCountCode, cycleDetailId, checkCode, checkDetailId, referCode, + id, adjustCode, cycleCountCode, inventoryDetailId, cycleDetailId, checkCode, checkDetailId, referCode, referDetailId, warehouseCode, companyCode, containerCode, locationCode ,materialCode, materialName, materialSpec, materialUnit, problemType, attributeId, fromInventorySts, toInventorySts, - fromQty, toQty, gapQty, `status`, created, createdBy, agreeTime, Remark, + fromQty, toQty, gapQty, `status`, created, createdBy,lastUpdatedBy,lastUpdated, agreeTime, Remark, version, userDef1, userDef2, userDef3, processStamp </sql> </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml b/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml index a20ecc1..9b50d13 100644 --- a/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml +++ b/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml @@ -13,7 +13,7 @@ <result column="materialName" jdbcType="VARCHAR" property="materialName" /> <result column="materialSpec" jdbcType="VARCHAR" property="materialSpec" /> <result column="materialUnit" jdbcType="VARCHAR" property="materialUnit" /> - <result column="taskQty" jdbcType="INTEGER" property="taskQty" /> + <result column="taskQty" jdbcType="DECIMAL" property="taskQty" /> <result column="inventorySts" jdbcType="VARCHAR" property="inventorySts" /> <result column="referCode" jdbcType="VARCHAR" property="referCode" /> <result column="referDetailId" jdbcType="VARCHAR" property="referDetailId" /> diff --git a/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html b/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html index d9f885d..700cd04 100644 --- a/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html +++ b/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html @@ -94,18 +94,13 @@ <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()"> <i class="fa fa-plus"></i> 新增 </a> - <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="addAdjust()"/> - <!–shiro:hasPermission="inventory:cyclecountAdjustDetail:addAdjust"–> + <a class="btn btn-outline btn-primary btn-rounded" onclick=""> + <i class="fa fa-edit"></i> 审核 + </a> + <a class="btn btn-outline btn-danger btn-rounded" onclick="addAdjust()"/> + <!--shiro:hasPermission="inventory:cyclecountAdjustDetail:addAdjust"--> <i class="fa fa-vcard"></i>调整 - </a>--> - <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="createCyclecountWithGapQty()" - shiro:hasPermission="inventoryHeader:cycleCountDetail:cyclecountRepeat"> - <i class="fa fa-vcard"></i> 差异复盘 - </a>--> - <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="adjust()" - shiro:hasPermission="inventoryHeader:cycleCountDetail:adjust"> - <i class="fa fa-vcard"></i> 差异库存调整 - </a>--> + </a> <!--<a class="btn btn-outline btn-success btn-rounded" onclick="$.table.refresh()"> <i class="fa fa-refresh"></i> 刷新 </a>--> @@ -138,15 +133,15 @@ { radio: true }, - { + /*{ title: '调整操作', align: 'center', formatter: function (value, row, index) { var actions = []; - actions.push('<a class="btn btn-warning btn-xs " href="#" onclick="$.operate.addAdjust()"><i class="fa fa-trash-o"></i>调整</a> '); + actions.push('<a class="btn btn-warning btn-xs " href="#" onclick="addAdjust(\'' + row.id + '\')"><i class="fa fa-send"></i> 调整</a> '); return actions.join(''); } - }, + },*/ { field: 'id', title: '明细id', @@ -158,6 +153,12 @@ visible: true }, { + field: 'inventoryDetailId', + title: '库存明细', + visible: true + }, + + { field: 'warehouseCode', title: '仓库', visible: false @@ -380,21 +381,13 @@ $.modal.confirm("注意:该操作将更改库存,当实盘数量为0且库位上只剩空容器时,请手动执行空托出库任务,容器上有货则无需其他操作!", function () { - var cyclecountAdjustId = $('#cyclecountAdjustId').val(); - var companyCode = $('#companyCode').val(); - var code = $('#code').val(); - var cyclecountHeadCode = $('#sourceCode').val(); - //判断有没有选取明细条目,进的页面不同 - if (row.length !== 0) { /*判断是否已经调整过*/ - if (row[0].status == 40) { + if (row[0].status == 2) { $.modal.msg('该条明细已调整,请勿重复调整!') } else { $.modal.open("差异调整单", prefix + "/adjustEdit?id=" + row[0].id) } - } else { - $.modal.open("调整单", prefix + "/addAdjust?cyclecountAdjustId=" + cyclecountAdjustId + "&companyCode=" + companyCode + "&code=" + code + "&cyclecountHeadCode=" + cyclecountHeadCode); - } + }); }