diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheck/StorageCheckController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheck/StorageCheckController.java index 7609b6b..524e38e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheck/StorageCheckController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheck/StorageCheckController.java @@ -69,17 +69,18 @@ public class StorageCheckController { item.setId(null); double storageOkQty = Double.parseDouble(item.getStorageOkQty().toString()); - double money = Double.parseDouble(item.getMoney().toString()); - if (money != 0) { - BigDecimal moneyBD = new BigDecimal(money); - BigDecimal storageOkQtyBD = new BigDecimal(storageOkQty); - BigDecimal result = moneyBD.divide(storageOkQtyBD, 1, RoundingMode.HALF_UP); - item.setOnemoney(result.toString()); - } else { - // 处理除数为零的情况,例如设置一个默认值或返回一个错误 - item.setOnemoney("0"); // 或者根据业务逻辑设置一个合适的值 - } +// double money = Double.parseDouble(item.getMoney().toString()); +// +// if (money != 0) { +// BigDecimal moneyBD = new BigDecimal(money); +// BigDecimal storageOkQtyBD = new BigDecimal(storageOkQty); +// BigDecimal result = moneyBD.divide(storageOkQtyBD, 1, RoundingMode.HALF_UP); +// item.setOnemoney(result.toString()); +// } else { +// // 处理除数为零的情况,例如设置一个默认值或返回一个错误 +// item.setOnemoney("0"); // 或者根据业务逻辑设置一个合适的值 +// } // storageCheckMatService.createStorageCheckMat(item); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java index 0fadb21..2efaeb9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java @@ -21,15 +21,18 @@ import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService; import io.swagger.v3.oas.models.security.SecurityScheme; import org.springframework.stereotype.Service; + import javax.annotation.Resource; import javax.print.DocFlavor; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; + import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheck.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheck.StorageCheckDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; @@ -82,7 +85,7 @@ public class StorageCheckServiceImpl implements StorageCheckService { StorageCheckDO storageCheck = BeanUtils.toBean(createReqVO, StorageCheckDO.class); // 月度流水号 SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_CHECK.name(), new SimpleDateFormat("yyyyMM").format(new Date())); - serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber() + 1); storageCheck.setStockNo(STOCK_CHECK.getCode(serialNumberDO.getSerialNumber().toString())); @@ -128,27 +131,97 @@ public class StorageCheckServiceImpl implements StorageCheckService { } @Override - public Boolean createStorageByCheckInfo(Long checkId){ + public Boolean createStorageByCheckInfo(Long checkId) { // 获取盘点单据信息 StorageCheckDO storageCheckDO = this.getStorageCheck(checkId); // 获取盘点单据物料信息 List storageCheckMats = storageCheckMatService.getStorageMatListByCheckId(checkId); - long hasStockIn = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()>0).count(); - long hasStockOut = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()<0).count(); +// long hasStockIn = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()>0).count(); +// long hasStockOut = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()<0).count(); + //20250705新逻辑 + for (StorageCheckMatDO storageMatDO : storageCheckMats) { + BigDecimal dif = storageMatDO.getStorageOkQty().subtract(storageMatDO.getMatRest()); + if (dif.compareTo(BigDecimal.ZERO) > 0) { + //大于0 入库,增加库额度 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInventoryDO::getWhId, storageMatDO.getWhId()); + wrapper.eq(StorageInventoryDO::getMaterialId, storageMatDO.getMatId()); + wrapper.eq(StorageInventoryDO::getRgId, storageMatDO.getRgId()); + wrapper.eq(StorageInventoryDO::getPnId, storageMatDO.getPnId()); + wrapper.eq(StorageInventoryDO::getDeleted, 0); + StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper); + if (ObjectUtil.isEmpty(storageInventoryDO)) { + storageInventoryDO = new StorageInventoryDO(); + storageInventoryDO.setMaterialId(storageMatDO.getMatId()); + storageInventoryDO.setWhId(storageMatDO.getWhId()); + storageInventoryDO.setRgId(storageMatDO.getRgId()); + storageInventoryDO.setPnId(storageMatDO.getPnId()); + storageInventoryDO.setYardAmount(storageMatDO.getStorageOkQty()); + MaterialDO materialDO = materialMapper.selectById(storageMatDO.getMatId()); + if (ObjectUtil.isNotEmpty(materialDO)) { + storageInventoryDO.setBoomUnit(materialDO.getUnit()); + storageInventoryDO.setBoomName(materialDO.getName()); + storageInventoryDO.setBoomSpec(materialDO.getSpec()); + storageInventoryDO.setShortName(materialDO.getShortName()); + storageInventoryDO.setBoomCode(materialDO.getCode()); + } - if(hasStockIn>0){ - // 库存类型为入库 - saveStorage(storageCheckDO,1,2); - } - if(hasStockOut>0){ - // 库存类型为出库 - saveStorage(storageCheckDO,2,3); + //要同步设置 + } else { + storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().add(storageMatDO.getStorageOkQty())); + } + + if (storageMatDO.getOnemoney() != null && !storageMatDO.getOnemoney().trim().equals("")) { + BigDecimal bigDecimal = new BigDecimal(storageMatDO.getOnemoney()); + storageInventoryDO.setPrice(bigDecimal); + } + storageInventoryMapper.insertOrUpdate(storageInventoryDO); + } else { + //不然就是出库 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInventoryDO::getWhId, storageMatDO.getWhId()); + wrapper.eq(StorageInventoryDO::getMaterialId, storageMatDO.getMatId()); + wrapper.eq(StorageInventoryDO::getRgId, storageMatDO.getRgId()); + wrapper.eq(StorageInventoryDO::getPnId, storageMatDO.getPnId()); + wrapper.eq(StorageInventoryDO::getDeleted, 0); + StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper); + if (ObjectUtil.isNotEmpty(storageInventoryDO)) { + storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().subtract(storageMatDO.getStorageOkQty())); + } + if (storageMatDO.getOnemoney() != null && !storageMatDO.getOnemoney().trim().equals("")) { + BigDecimal bigDecimal = new BigDecimal(storageMatDO.getOnemoney()); + storageInventoryDO.setPrice(bigDecimal); + } + storageInventoryMapper.insertOrUpdate(storageInventoryDO); + } + + // 插入库存日志表 + StorageLogDO storageLogDO = new StorageLogDO(); + storageLogDO.setStockId(storageMatDO.getCheckId()); + storageLogDO.setMatId(storageMatDO.getMatId()); + storageLogDO.setWhId(storageMatDO.getWhId()); + storageLogDO.setRgId(storageMatDO.getRgId()); + storageLogDO.setPnId(storageMatDO.getPnId()); + storageLogDO.setStorageOkQty(storageMatDO.getStorageOkQty().subtract(storageMatDO.getMatRest())); + storageLogDO.setLotNo(storageMatDO.getLotNo()); + storageLogDO.setStatus(2); + storageLogMapper.insert(storageLogDO); } + //同步插入日志 +// if(hasStockIn>0){ +// // 库存类型为入库 +// saveStorage(storageCheckDO,1,2); +// } +// if(hasStockOut>0){ +// // 库存类型为出库 +// saveStorage(storageCheckDO,2,3); +// } return true; } - private void saveStorage(StorageCheckDO storageCheckDO,Integer stockType,Integer stockInType){ + + private void saveStorage(StorageCheckDO storageCheckDO, Integer stockType, Integer stockInType) { LocalDateTime current = LocalDateTime.now(); // 库存类型为stockType @@ -164,60 +237,60 @@ public class StorageCheckServiceImpl implements StorageCheckService { storageDO.setKeeperTime(current); storageDO.setOutbound(storageCheckDO.getKeeper()); storageDO.setOutboundTime(current); - storageDO.setDescription("由盘点单号"+storageCheckDO.getStockNo()+"提交产生"); - if(stockType == 1){ + storageDO.setDescription("由盘点单号" + storageCheckDO.getStockNo() + "提交产生"); + if (stockType == 1) { storageDO.setStatus(2); - }else{ + } else { storageDO.setStatus(4); } storageMapper.insert(storageDO); storageDO.setStockNo(STOCK_IN.getCode(storageDO.getId().toString())); storageMapper.updateById(storageDO); - saveStorageMat(storageCheckDO,storageDO.getId(),stockType); - List matList = storageMatMapper.selectMatByStorckID(storageDO.getId()); - if (storageDO.getStockType()==1){ - if (storageDO.getStatus() ==2){ + saveStorageMat(storageCheckDO, storageDO.getId(), stockType); + List matList = storageMatMapper.selectMatByStorckID(storageDO.getId()); + if (storageDO.getStockType() == 1) { + if (storageDO.getStatus() == 2) { for (StorageMatDO storageMatDO : matList) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StorageInventoryDO::getWhId,storageMatDO.getWhId()); - wrapper.eq(StorageInventoryDO::getMaterialId,storageMatDO.getMatId()); - wrapper.eq(StorageInventoryDO::getRgId,storageMatDO.getRgId()); - wrapper.eq(StorageInventoryDO::getPnId,storageMatDO.getPnId()); - wrapper.eq(StorageInventoryDO::getDeleted,0); + wrapper.eq(StorageInventoryDO::getWhId, storageMatDO.getWhId()); + wrapper.eq(StorageInventoryDO::getMaterialId, storageMatDO.getMatId()); + wrapper.eq(StorageInventoryDO::getRgId, storageMatDO.getRgId()); + wrapper.eq(StorageInventoryDO::getPnId, storageMatDO.getPnId()); + wrapper.eq(StorageInventoryDO::getDeleted, 0); StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper); - if (ObjectUtil.isEmpty(storageInventoryDO)){ + if (ObjectUtil.isEmpty(storageInventoryDO)) { storageInventoryDO = new StorageInventoryDO(); storageInventoryDO.setMaterialId(storageMatDO.getMatId()); storageInventoryDO.setWhId(storageMatDO.getWhId()); storageInventoryDO.setRgId(storageMatDO.getRgId()); storageInventoryDO.setPnId(storageMatDO.getPnId()); - storageInventoryDO.setYardAmount(storageMatDO.getStorageOkQty() ); + storageInventoryDO.setYardAmount(storageMatDO.getStorageOkQty()); MaterialDO materialDO = materialMapper.selectById(storageMatDO.getMatId()); - if (ObjectUtil.isNotEmpty(materialDO)){ + if (ObjectUtil.isNotEmpty(materialDO)) { storageInventoryDO.setBoomUnit(materialDO.getUnit()); storageInventoryDO.setBoomName(materialDO.getName()); storageInventoryDO.setBoomSpec(materialDO.getSpec()); storageInventoryDO.setShortName(materialDO.getShortName()); storageInventoryDO.setBoomCode(materialDO.getCode()); } - }else { + } else { storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().add(storageMatDO.getStorageOkQty())); } storageInventoryMapper.insertOrUpdate(storageInventoryDO); } } - }else if (storageDO.getStockType()==2){ - if (storageDO.getStatus() == 4){ + } else if (storageDO.getStockType() == 2) { + if (storageDO.getStatus() == 4) { for (StorageMatDO storageMatDO : matList) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StorageInventoryDO::getWhId,storageMatDO.getWhId()); - wrapper.eq(StorageInventoryDO::getMaterialId,storageMatDO.getMatId()); - wrapper.eq(StorageInventoryDO::getRgId,storageMatDO.getRgId()); - wrapper.eq(StorageInventoryDO::getPnId,storageMatDO.getPnId()); - wrapper.eq(StorageInventoryDO::getDeleted,0); + wrapper.eq(StorageInventoryDO::getWhId, storageMatDO.getWhId()); + wrapper.eq(StorageInventoryDO::getMaterialId, storageMatDO.getMatId()); + wrapper.eq(StorageInventoryDO::getRgId, storageMatDO.getRgId()); + wrapper.eq(StorageInventoryDO::getPnId, storageMatDO.getPnId()); + wrapper.eq(StorageInventoryDO::getDeleted, 0); StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper); - if (ObjectUtil.isNotEmpty(storageInventoryDO)){ + if (ObjectUtil.isNotEmpty(storageInventoryDO)) { storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().subtract(storageMatDO.getStorageOkQty())); } storageInventoryMapper.insertOrUpdate(storageInventoryDO); @@ -227,11 +300,11 @@ public class StorageCheckServiceImpl implements StorageCheckService { storageMapper.deleteById(storageDO.getId()); } - private void saveStorageMat(StorageCheckDO storageCheckDO, Long stockId, Integer stockType){ + private void saveStorageMat(StorageCheckDO storageCheckDO, Long stockId, Integer stockType) { List storageCheckMats = storageCheckMatMapper.selectListByCheckID(storageCheckDO.getId()); - for(StorageCheckMatDO item : storageCheckMats){ + for (StorageCheckMatDO item : storageCheckMats) { StorageMatDO storageMatDO = new StorageMatDO(); storageMatDO.setStockId(stockId); @@ -242,17 +315,18 @@ public class StorageCheckServiceImpl implements StorageCheckService { storageMatDO.setStorageOkQty(item.getStorageOkQty().subtract(item.getMatRest()).abs()); storageMatDO.setLotNo(item.getLotNo()); // 插入出入库物料表 - if(stockType == 1 && item.getStorageOkQty().subtract(item.getMatRest()).doubleValue()>0){ + if (stockType == 1 && item.getStorageOkQty().subtract(item.getMatRest()).doubleValue() > 0) { storageMatMapper.insert(storageMatDO); // saveStorageLog(storageMatDO); } - if(stockType == 2 && item.getStorageOkQty().subtract(item.getMatRest()).doubleValue()<0){ + if (stockType == 2 && item.getStorageOkQty().subtract(item.getMatRest()).doubleValue() < 0) { storageMatMapper.insert(storageMatDO); saveStorageLog(storageMatDO); } } } - private void saveStorageLog(StorageMatDO storageMatDO){ + + private void saveStorageLog(StorageMatDO storageMatDO) { // 插入库存日志表 StorageLogDO storageLogDO = new StorageLogDO(); storageLogDO.setStockId(storageMatDO.getStockId()); diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagecheck/checkdetail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagecheck/checkdetail.vue index 5c858bb..ac9455f 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagecheck/checkdetail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagecheck/checkdetail.vue @@ -140,15 +140,21 @@ - + + + + @@ -453,6 +459,10 @@ const getList = async (arrMat) => { row.pnId = '' row.matRest = 0 } + console.log(row.price) + if(row.price){ + row.onemoney = row.price + } formData.value.matItemDOList.push(row) matCount = matCount + 1 }