diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java index cd975d3..aeb2e65 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java @@ -67,6 +67,7 @@ public interface ErrorCodeConstants { ErrorCode BEFORE_STORAGE_NOT_EXISTS = new ErrorCode(1_003_009, "物料原仓库查询错误"); ErrorCode STORAGE_IN_NOT_EXISTS = new ErrorCode(1_003_010, "入库单不存在"); ErrorCode STORAGE_IN_DETAIL_NOT_EXISTS = new ErrorCode(1_003_011, "入库单明细不存在"); + ErrorCode STORAGE_INVENTORY_NOT_EXISTS = new ErrorCode(1_003_012, "库存不存在"); /************订单管理***********/ ErrorCode PROJECT_ORDER_NOT_EXISTS = new ErrorCode(1_004_001, "项目订单不存在"); /************发货管理***********/ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 4a8e296..2cb0628 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -151,7 +151,7 @@ public class bdgzsomthingController { BeanUtils.toBean(list, bdgzsomthingRespVO.class)); } - @Scheduled(fixedRate = 10800000) +// @Scheduled(fixedRate = 10800000) public void scheduledTask() { bdgzsomthingService.selectds(); } @@ -159,15 +159,15 @@ public class bdgzsomthingController { //@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次 @PostConstruct public void init() { - selectHasPrice(); - selectSafeStorageAndDeliverOneYear(); +// selectHasPrice(); +// selectSafeStorageAndDeliverOneYear(); } - @Scheduled(cron = "0 0 2 * * ?") +// @Scheduled(cron = "0 0 2 * * ?") public void selectHasPrice(){ bdgzsomthingService.selectHasPrice(); } - @Scheduled(cron = "0 0 0 * * ?") +// @Scheduled(cron = "0 0 0 * * ?") public void selectSafeStorageAndDeliverOneYear(){bdgzsomthingService.selectSafeStorageAndDeliverOneYear();} @PostMapping("/getMessage") @Operation(summary = "小程序消息") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java index af274b2..ca07d1f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java @@ -10,7 +10,11 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialExc import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialRespVO; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; import com.chanko.yunxi.mes.module.heli.service.material.MaterialService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -128,4 +132,20 @@ public class MaterialController { PageResult pageResult = materialService.getbzjList(pageReqVO); return success(BeanUtils.toBean(pageResult, MaterialRespVO.class)); } + + @GetMapping("/page-material-group") + @Operation(summary = "获得入库物料列表") + @PreAuthorize("@ss.hasPermission('heli:storage-log:query')") + public CommonResult> getStorageLogPageGroupMaterial(@Valid StorageLogPageReqVO pageReqVO) { + PageResult pageResult = materialService.getStorageNowPageGroupMaterial(pageReqVO); + return success(pageResult); + } + + @GetMapping("/page-now-all") + @Operation(summary = "获得出库物料列表") + @PreAuthorize("@ss.hasPermission('heli:storage-log:query')") + public CommonResult> getStorageLogPageAll(@Valid StorageLogPageReqVO pageReqVO) { + PageResult pageResult = materialService.getStorageNowPageAll(pageReqVO); + return success(pageResult); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanBoomExcelVo.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanBoomExcelVo.java index b9225b7..ad9173b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanBoomExcelVo.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanBoomExcelVo.java @@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -27,7 +28,7 @@ public class MaterialPlanBoomExcelVo { @ExcelProperty("子项目名称") private String projectSubName; @ExcelProperty("物料编码") - private String materialName; + private String materialNames; @ExcelProperty("物料名称") private String matName; @@ -37,9 +38,15 @@ public class MaterialPlanBoomExcelVo { private String blueprintNo; @ExcelProperty("需求数量") private String boomAmount; - @ExcelProperty("系统单位") + @ExcelProperty("领料数量") + private String pickAmount; + @ExcelProperty(value = "系统单位", converter = DictConvert.class) @DictFormat("heli_material_unit") private String boomUnit; + @ExcelProperty("库区") + private String rgName; + @ExcelProperty("库位") + private String pnName; @ExcelProperty("要求完成日期") private String boomArriveDates; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/matreqdetail/vo/MatReqDetailRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/matreqdetail/vo/MatReqDetailRespVO.java index 66d3957..6bf0f72 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/matreqdetail/vo/MatReqDetailRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/matreqdetail/vo/MatReqDetailRespVO.java @@ -92,5 +92,15 @@ public class MatReqDetailRespVO { */ @Schema(description = "物料编码", example = "32088") private String materialCode; + @Schema(description = "领料数量", example = "32088") + private BigDecimal pickAmount; + + @Schema(description = "仓库", example = "32088") + private String whName; + + @Schema(description = "库区", example = "32088") + private String rgName; + @Schema(description = "库位", example = "32088") + private String pnName; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java index 946570f..295cdce 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java @@ -5,10 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chanko.yunxi.mes.module.heli.controller.admin.outsourcestockboom.vo.OutsourceStockBoomSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.heli.service.storagelog.StorageLogService; @@ -66,6 +68,8 @@ public class StorageController { private StorageLogNowMapper storageLogNowMapper; @Resource private MaterialMapper materialMapper; + @Resource + private StorageInventoryMapper storageInventoryMapper; @PostMapping("/cancelWeiWai") @Operation(summary = "委外取消提交") @PreAuthorize("@ss.hasPermission('heli:storage:create')") @@ -140,53 +144,116 @@ public class StorageController { storageService.updateStorage(updateReqVO); int status = targetDo.getStatus(); - if (updateReqVO.getStockType()==1&&updateReqVO.getStockInType()==1){ +// if (updateReqVO.getStockType()==1&&updateReqVO.getStockInType()==1){ +// if (status==2){ +// List matList = storageMatMapper.selectMatByStorckID(targetDo.getId()); +// for (StorageMatDO storageMatDO : matList) { +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(StorageLogNowDO::getMatCode, storageMatDO.getMatCode()); +// wrapper.eq(StorageLogNowDO::getMatName,storageMatDO.getMatName()); +// BigDecimal totalStorageOkQty = storageLogNowMapper.selectList(wrapper).stream() +// .map(StorageLogNowDO::getStorageOkQty) +// .filter(Objects::nonNull) // 确保过滤掉 null 值 +// .reduce(BigDecimal.ZERO, BigDecimal::add); +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.eq(MaterialDO::getCode, storageMatDO.getMatCode()); +// queryWrapper.eq(MaterialDO::getName,storageMatDO.getMatName()); +// MaterialDO materialDO = materialMapper.selectOne(queryWrapper); +// if (ObjectUtil.isEmpty(materialDO.getPrice())){ +// materialDO.setPrice(BigDecimal.ZERO); +// } +// BigDecimal add = totalStorageOkQty.multiply(materialDO.getPrice()).add(storageMatDO.getPrice().multiply(storageMatDO.getStorageOkQty())); +// BigDecimal divide = add.divide(totalStorageOkQty.add(storageMatDO.getStorageOkQty()),2,RoundingMode.HALF_UP); +// materialDO.setPrice(divide); +// materialMapper.updateById(materialDO); +// } +// }else if (status==3){ +// List matList = storageMatMapper.selectMatByStorckID(targetDo.getId()); +// for (StorageMatDO storageMatDO : matList) { +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(StorageLogNowDO::getMatCode, storageMatDO.getMatCode()); +// wrapper.eq(StorageLogNowDO::getMatName,storageMatDO.getMatName()); +// BigDecimal totalStorageOkQty = storageLogNowMapper.selectList(wrapper).stream() +// .map(StorageLogNowDO::getStorageOkQty) +// .filter(Objects::nonNull) // 确保过滤掉 null 值 +// .reduce(BigDecimal.ZERO, BigDecimal::add); +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.eq(MaterialDO::getCode, storageMatDO.getMatCode()); +// queryWrapper.eq(MaterialDO::getName,storageMatDO.getMatName()); +// MaterialDO materialDO = materialMapper.selectOne(queryWrapper); +// if (ObjectUtil.isEmpty(materialDO.getPrice())){ +// materialDO.setPrice(BigDecimal.ZERO); +// } +// BigDecimal add = totalStorageOkQty.multiply(materialDO.getPrice()).subtract(storageMatDO.getPrice().multiply(storageMatDO.getStorageOkQty())); +// BigDecimal divide = add.divide(totalStorageOkQty.subtract(storageMatDO.getStorageOkQty()),2,RoundingMode.HALF_UP); +// materialDO.setPrice(divide); +// materialMapper.updateById(materialDO); +// } +// } +// } + List matList = storageMatMapper.selectMatByStorckID(targetDo.getId()); + if (updateReqVO.getStockType()==1){ if (status==2){ - List matList = storageMatMapper.selectMatByStorckID(targetDo.getId()); for (StorageMatDO storageMatDO : matList) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StorageLogNowDO::getMatCode, storageMatDO.getMatCode()); - wrapper.eq(StorageLogNowDO::getMatName,storageMatDO.getMatName()); - BigDecimal totalStorageOkQty = storageLogNowMapper.selectList(wrapper).stream() - .map(StorageLogNowDO::getStorageOkQty) - .filter(Objects::nonNull) // 确保过滤掉 null 值 - .reduce(BigDecimal.ZERO, BigDecimal::add); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MaterialDO::getCode, storageMatDO.getMatCode()); - queryWrapper.eq(MaterialDO::getName,storageMatDO.getMatName()); - MaterialDO materialDO = materialMapper.selectOne(queryWrapper); - if (ObjectUtil.isEmpty(materialDO.getPrice())){ - materialDO.setPrice(BigDecimal.ZERO); + 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()); + } + }else { + storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().add(storageMatDO.getStorageOkQty())); } - BigDecimal add = totalStorageOkQty.multiply(materialDO.getPrice()).add(storageMatDO.getPrice().multiply(storageMatDO.getStorageOkQty())); - BigDecimal divide = add.divide(totalStorageOkQty.add(storageMatDO.getStorageOkQty()),2,RoundingMode.HALF_UP); - materialDO.setPrice(divide); - materialMapper.updateById(materialDO); - } - }else if (status==3){ - List matList = storageMatMapper.selectMatByStorckID(targetDo.getId()); - for (StorageMatDO storageMatDO : matList) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StorageLogNowDO::getMatCode, storageMatDO.getMatCode()); - wrapper.eq(StorageLogNowDO::getMatName,storageMatDO.getMatName()); - BigDecimal totalStorageOkQty = storageLogNowMapper.selectList(wrapper).stream() - .map(StorageLogNowDO::getStorageOkQty) - .filter(Objects::nonNull) // 确保过滤掉 null 值 - .reduce(BigDecimal.ZERO, BigDecimal::add); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MaterialDO::getCode, storageMatDO.getMatCode()); - queryWrapper.eq(MaterialDO::getName,storageMatDO.getMatName()); - MaterialDO materialDO = materialMapper.selectOne(queryWrapper); - if (ObjectUtil.isEmpty(materialDO.getPrice())){ - materialDO.setPrice(BigDecimal.ZERO); - } - BigDecimal add = totalStorageOkQty.multiply(materialDO.getPrice()).subtract(storageMatDO.getPrice().multiply(storageMatDO.getStorageOkQty())); - BigDecimal divide = add.divide(totalStorageOkQty.subtract(storageMatDO.getStorageOkQty()),2,RoundingMode.HALF_UP); - materialDO.setPrice(divide); - materialMapper.updateById(materialDO); + storageInventoryMapper.insertOrUpdate(storageInventoryDO); + } + } +// else if (status==3){ +// 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); +// StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper); +// if (ObjectUtil.isNotEmpty(storageInventoryDO)){ +// storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().subtract(storageMatDO.getStorageOkQty())); +// } +// storageInventoryMapper.insertOrUpdate(storageInventoryDO); +// } +// } + }else if (updateReqVO.getStockType()==2){ + if (updateReqVO.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); + StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper); + if (ObjectUtil.isNotEmpty(storageInventoryDO)){ + storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().subtract(storageMatDO.getStorageOkQty())); + } + storageInventoryMapper.insertOrUpdate(storageInventoryDO); } } - } //状态说明:1保存 2提交 3作废 4已审批 if(updateReqVO.getStockType() == 2){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/StorageInventoryController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/StorageInventoryController.java new file mode 100644 index 0000000..9aecb53 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/StorageInventoryController.java @@ -0,0 +1,104 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; +import com.chanko.yunxi.mes.module.heli.service.storageinventory.StorageInventoryService; + +@Tag(name = "管理后台 - 库存") +@RestController +@RequestMapping("/heli/storage-inventory") +@Validated +public class StorageInventoryController { + + @Resource + private StorageInventoryService storageInventoryService; + + @PostMapping("/create") + @Operation(summary = "创建库存") + @PreAuthorize("@ss.hasPermission('heli:storage-inventory:create')") + public CommonResult createStorageInventory(@Valid @RequestBody StorageInventorySaveReqVO createReqVO) { + return success(storageInventoryService.createStorageInventory(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新库存") + @PreAuthorize("@ss.hasPermission('heli:storage-inventory:update')") + public CommonResult updateStorageInventory(@Valid @RequestBody StorageInventorySaveReqVO updateReqVO) { + storageInventoryService.updateStorageInventory(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除库存") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:storage-inventory:delete')") + public CommonResult deleteStorageInventory(@RequestParam("id") Long id) { + storageInventoryService.deleteStorageInventory(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得库存") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:storage-inventory:query')") + public CommonResult getStorageInventory(@RequestParam("id") Long id) { + StorageInventoryDO storageInventory = storageInventoryService.getStorageInventory(id); + return success(BeanUtils.toBean(storageInventory, StorageInventoryRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得库存分页") + @PreAuthorize("@ss.hasPermission('heli:storage-inventory:query')") + public CommonResult> getStorageInventoryPage(@Valid StorageInventoryPageReqVO pageReqVO) { + PageResult pageResult = storageInventoryService.getStorageInventoryPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出库存 Excel") + @PreAuthorize("@ss.hasPermission('heli:storage-inventory:export')") + @OperateLog(type = EXPORT) + public void exportStorageInventoryExcel(@Valid StorageInventoryPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = storageInventoryService.getStorageInventoryPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "库存.xls", "数据", StorageInventoryRespVO.class, + BeanUtils.toBean(list, StorageInventoryRespVO.class)); + } + + + @GetMapping("/getSupplementPage") + @Operation(summary = "获得库存分页") + @PreAuthorize("@ss.hasPermission('heli:storage-inventory:query')") + public CommonResult> getSupplementPage(@Valid StorageInventoryPageReqVO pageReqVO) { + PageResult pageResult = storageInventoryService.getSupplementPage(pageReqVO); + return success(pageResult); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventoryPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventoryPageReqVO.java new file mode 100644 index 0000000..7d278ca --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventoryPageReqVO.java @@ -0,0 +1,89 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 库存分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class StorageInventoryPageReqVO extends PageParam { + + @Schema(description = "仓库id", example = "10130") + private Long whId; + + @Schema(description = "库区id", example = "4170") + private Long rgId; + + @Schema(description = "库位id", example = "963") + private Long pnId; + + @Schema(description = "批次号") + private String lotNo; + + @Schema(description = "备注", example = "你猜") + private String description; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "订单id", example = "7867") + private Long projectId; + + @Schema(description = "项目名称", example = "赵六") + private String projectName; + + @Schema(description = "订单子项目id", example = "13594") + private Long projectPlanSubId; + + @Schema(description = "子项目名称,唯一", example = "张三") + private String name; + + @Schema(description = "物料名称", example = "李四") + private String boomName; + + @Schema(description = "系统单位") + private String boomUnit; + + @Schema(description = "物料id", example = "14070") + private Long materialId; + + @Schema(description = "规格型号") + private String boomSpec; + + @Schema(description = "库存数量") + private BigDecimal yardAmount; + + @Schema(description = "可用数量") + private BigDecimal useAmount; + + @Schema(description = "预占数量") + private BigDecimal preAmount; + + @Schema(description = "库存价格", example = "14437") + private BigDecimal price; + + @Schema(description = "物料简称", example = "王五") + private String shortName; + + @Schema(description = "物料编码") + private String matCode; + + @Schema(description = "物料名称") + private String matName; + + @Schema(description = "物料类型") + private String matType; + + @Schema(description = "物料类型") + private String matSpec; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventoryRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventoryRespVO.java new file mode 100644 index 0000000..de4f5da --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventoryRespVO.java @@ -0,0 +1,97 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 库存 Response VO") +@Data +@ExcelIgnoreUnannotated +public class StorageInventoryRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18794") + @ExcelProperty("主键id") + private Long id; + + @Schema(description = "仓库id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10130") + @ExcelProperty("仓库id") + private Long whId; + + @Schema(description = "库区id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4170") + @ExcelProperty("库区id") + private Long rgId; + + @Schema(description = "库位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "963") + @ExcelProperty("库位id") + private Long pnId; + + @Schema(description = "批次号") + @ExcelProperty("批次号") + private String lotNo; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String description; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "订单id", example = "7867") + @ExcelProperty("订单id") + private Long projectId; + + @Schema(description = "项目名称", example = "赵六") + @ExcelProperty("项目名称") + private String projectName; + + @Schema(description = "订单子项目id", example = "13594") + @ExcelProperty("订单子项目id") + private Long projectPlanSubId; + + @Schema(description = "子项目名称,唯一", example = "张三") + @ExcelProperty("子项目名称,唯一") + private String name; + + @Schema(description = "物料名称", example = "李四") + @ExcelProperty("物料名称") + private String boomName; + + @Schema(description = "系统单位") + @ExcelProperty("系统单位") + private String boomUnit; + + @Schema(description = "物料id", example = "14070") + @ExcelProperty("物料id") + private Long materialId; + + @Schema(description = "规格型号") + @ExcelProperty("规格型号") + private String boomSpec; + + @Schema(description = "库存数量") + @ExcelProperty("库存数量") + private BigDecimal yardAmount; + + @Schema(description = "可用数量") + @ExcelProperty("可用数量") + private BigDecimal useAmount; + + @Schema(description = "预占数量") + @ExcelProperty("预占数量") + private BigDecimal preAmount; + + @Schema(description = "库存价格", example = "14437") + @ExcelProperty("库存价格") + private BigDecimal price; + + @Schema(description = "物料简称", example = "王五") + @ExcelProperty("物料简称") + private String shortName; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventorySaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventorySaveReqVO.java new file mode 100644 index 0000000..f6246d5 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/vo/StorageInventorySaveReqVO.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 库存新增/修改 Request VO") +@Data +public class StorageInventorySaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18794") + private Long id; + + @Schema(description = "仓库id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10130") + @NotNull(message = "仓库id不能为空") + private Long whId; + + @Schema(description = "库区id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4170") + @NotNull(message = "库区id不能为空") + private Long rgId; + + @Schema(description = "库位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "963") + @NotNull(message = "库位id不能为空") + private Long pnId; + + @Schema(description = "批次号") + private String lotNo; + + @Schema(description = "备注", example = "你猜") + private String description; + + @Schema(description = "订单id", example = "7867") + private Long projectId; + + @Schema(description = "项目名称", example = "赵六") + private String projectName; + + @Schema(description = "订单子项目id", example = "13594") + private Long projectPlanSubId; + + @Schema(description = "子项目名称,唯一", example = "张三") + private String name; + + @Schema(description = "物料名称", example = "李四") + private String boomName; + + @Schema(description = "系统单位") + private String boomUnit; + + @Schema(description = "物料id", example = "14070") + private Long materialId; + + @Schema(description = "规格型号") + private String boomSpec; + + @Schema(description = "库存数量") + private BigDecimal yardAmount; + + @Schema(description = "可用数量") + private BigDecimal useAmount; + + @Schema(description = "预占数量") + private BigDecimal preAmount; + + @Schema(description = "库存价格", example = "14437") + private BigDecimal price; + + @Schema(description = "物料简称", example = "王五") + private String shortName; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java index 3edde13..253006b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java @@ -144,5 +144,42 @@ public class MaterialDO extends TenantBaseDO { @TableField(exist = false) private String mainSupplierName; + @TableField(exist = false) + private BigDecimal storageOkQty; + @TableField(exist = false) + private String lotNo; + @TableField(exist = false) + private String matName; + @TableField(exist = false) + private String matCode; + @TableField(exist = false) + private String matType; + @TableField(exist = false) + private String matSpec; + @TableField(exist = false) + private String matBrand; + @TableField(exist = false) + private String matUnit; + @TableField(exist = false) + private Long whId; + @TableField(exist = false) + private String whName; + @TableField(exist = false) + private Long rgId; + @TableField(exist = false) + private String rgName; + @TableField(exist = false) + private Long pnId; + @TableField(exist = false) + private String pnName; + + @TableField(exist = false) + private BigDecimal matRest; + @TableField(exist = false) + private String num; + @TableField(exist = false) + private Long materialTypeId; + @TableField(exist = false) + private String matUnitId; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplanboom/MaterialPlanBoomDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplanboom/MaterialPlanBoomDO.java index 699bbde..7e36ebf 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplanboom/MaterialPlanBoomDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplanboom/MaterialPlanBoomDO.java @@ -214,5 +214,18 @@ public class MaterialPlanBoomDO extends BaseDO { */ @TableField(exist = false) private String isFoams; - + @TableField(exist = false) + private Long whId; + @TableField(exist = false) + private Long rgId; + @TableField(exist = false) + private Long pnId; + @TableField(exist = false) + private BigDecimal pickAmount; + @TableField(exist = false) + private String whName; + @TableField(exist = false) + private String rgName; + @TableField(exist = false) + private String pnName; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/matreqdetail/MatReqDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/matreqdetail/MatReqDetailDO.java index 73607fb..b37ae68 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/matreqdetail/MatReqDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/matreqdetail/MatReqDetailDO.java @@ -95,10 +95,25 @@ public class MatReqDetailDO extends BaseDO { */ private Long projectMaterialPlanDetailId; + private Long whId; + + private Long rgId; + + private Long pnId; + + private BigDecimal pickAmount; + /** * 子项目编码 */ @TableField(exist = false) private String materialCode; + @TableField(exist = false) + private String whName; + + @TableField(exist = false) + private String rgName; + @TableField(exist = false) + private String pnName; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storageinventory/StorageInventoryDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storageinventory/StorageInventoryDO.java new file mode 100644 index 0000000..80d07b0 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storageinventory/StorageInventoryDO.java @@ -0,0 +1,145 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 库存 DO + * + * @author 管理员 + */ +@TableName("wms_storage_inventory") +@KeySequence("wms_storage_inventory_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StorageInventoryDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 仓库id + */ + private Long whId; + /** + * 库区id + */ + private Long rgId; + /** + * 库位id + */ + private Long pnId; + /** + * 批次号 + */ + private String lotNo; + /** + * 备注 + */ + private String description; + /** + * 订单id + */ + private Long projectId; + /** + * 项目名称 + */ + private String projectName; + /** + * 订单子项目id + */ + private Long projectPlanSubId; + /** + * 子项目名称,唯一 + */ + private String name; + /** + * 物料名称 + */ + private String boomName; + /** + * 系统单位 + */ + private String boomUnit; + /** + * 物料id + */ + private Long materialId; + /** + * 规格型号 + */ + private String boomSpec; + /** + * 库存数量 + */ + private BigDecimal yardAmount; + /** + * 可用数量 + */ + private BigDecimal useAmount; + /** + * 预占数量 + */ + private BigDecimal preAmount; + /** + * 库存价格 + */ + private BigDecimal price; + /** + * 物料简称 + */ + private String shortName; + /** + * 物料编码 + */ + private String boomCode; + @TableField(exist = false) + private BigDecimal storageOkQty; + + + @TableField(exist = false) + private String matName; + @TableField(exist = false) + private String matCode; + @TableField(exist = false) + private String matType; + @TableField(exist = false) + private String matSpec; + @TableField(exist = false) + private String matBrand; + @TableField(exist = false) + private String matUnit; + + @TableField(exist = false) + private String whName; + + @TableField(exist = false) + private String rgName; + @TableField(exist = false) + private String pnName; + + @TableField(exist = false) + private BigDecimal matRest; + @TableField(exist = false) + private String num; + @TableField(exist = false) + private Long materialTypeId; + @TableField(exist = false) + private String matUnitId; + @TableField(exist = false) + private String invSafe; +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java index 0fc5fa9..0185cf5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java @@ -227,5 +227,6 @@ public class TaskDispatchDetailDO extends BaseDO { private BigDecimal matWeight; @TableField(exist = false) private String nickname; + private Integer reportStatus; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java index 3ded47b..8f4a36a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java @@ -4,11 +4,18 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialPageReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.rg.RgDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.warehouse.WarehouseDO; import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; +import com.chanko.yunxi.mes.module.system.dal.dataobject.dict.DictDataDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @@ -130,4 +137,30 @@ public interface MaterialMapper extends BaseMapperX { return selectPage(reqVO, query); } + + default PageResult selectMaterialGroupNow(StorageLogPageReqVO pageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(MaterialDO.class) + .select("ifnull(sum(s.yard_amount),0) matRest") + .select("t.name as matName,t.code as matCode,d.label as matType,t.spec as matSpec,t.brand as matBrand") + .select("d1.label as matUnit") + .leftJoin(StorageInventoryDO.class, "s", StorageInventoryDO::getMaterialId, MaterialDO::getId) + .leftJoin(DictDataDO.class,"d",DictDataDO::getValue, MaterialDO::getMaterialType) + .leftJoin(DictDataDO.class,"d1",DictDataDO::getValue, MaterialDO::getUnit) + .disableSubLogicDel() + .groupBy(MaterialDO::getId) + .orderByDesc(MaterialDO::getId); + + query.like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatSpec()),MaterialDO::getSpec, pageReqVO.getMatSpec()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatName()), MaterialDO::getName, pageReqVO.getMatName()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatCode()), MaterialDO::getCode, pageReqVO.getMatCode()) + .eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name()) + .eq(MaterialDO::getStatus,1) + .eq("d.dict_type","heli_material_type") + .eq("d1.dict_type","heli_material_unit") + ; + return selectPage(pageReqVO,query); + } + + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java index db21749..b6b3618 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java @@ -16,14 +16,18 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.Material import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.matreqdetail.MatReqDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.rg.RgDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.warehouse.WarehouseDO; import com.chanko.yunxi.mes.module.heli.enums.BoomDetailTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.ProcessBomStatusEnum; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; @@ -183,12 +187,17 @@ public interface MaterialPlanBoomMapper extends BaseMapperX MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(MaterialPlanBoomDO.class) .select("p.project_name as projectName","p.project_id as projectId","p.name as projectSubName","mat.material_id as matId","m.code as materialName","m.name as materialNames") + .select("IFNULL(mat.pick_amount, t.boom_amount) AS pickAmount") + .select("w.wh_name as whName","r.rg_name as rgName","pn.pn_name as pnName") .select("d.spec as boomSpec","d.blueprint_no as blueprintNo","d.unit as boomUnit","DATE_FORMAT(t.boom_arrive_date, '%Y-%m-%d') AS boomArriveDates") .leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId) .leftJoin(ProjectOrderDO.class,"b",ProjectOrderDO::getId,MaterialPlanDO::getProjectId) .leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId) .leftJoin("project_mat_req_detail mat on (t.id=mat.project_material_plan_detail_id and mat.deleted=0 and mat.tenant_id = 2)") .leftJoin("base_material m ON (m.id = mat.material_id and m.tenant_id = 2) ") + .leftJoin("wms_wh w ON (w.id = mat.wh_id and w.tenant_id = 2) ") + .leftJoin("wms_rg r ON (r.id = mat.rg_id and r.tenant_id = 2) ") + .leftJoin("wms_pn pn ON (pn.id = mat.pn_id and pn.tenant_id = 2) ") .disableSubLogicDel() .groupBy(MaterialPlanBoomDO::getId) .orderByDesc(MaterialPlanBoomDO::getCreateTime); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/matreqdetail/MatReqDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/matreqdetail/MatReqDetailMapper.java index 371d68f..7dc2679 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/matreqdetail/MatReqDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/matreqdetail/MatReqDetailMapper.java @@ -9,7 +9,11 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.matreq.MatReqDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.matreqdetail.MatReqDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.rg.RgDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.warehouse.WarehouseDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import com.chanko.yunxi.mes.module.heli.controller.admin.matreqdetail.vo.*; @@ -27,7 +31,11 @@ public interface MatReqDetailMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(MatReqDetailDO.class) .select("m.code as materialCode") + .select("w.wh_name as whName","r.rg_name as rgName","p.pn_name as pnName") .leftJoin(MaterialDO.class, "m", MaterialDO::getId, MatReqDetailDO::getMaterialId) + .leftJoin(WarehouseDO.class,"w",WarehouseDO::getId, StorageInventoryDO::getWhId) + .leftJoin(RgDO.class,"r",RgDO::getId, StorageInventoryDO::getRgId) + .leftJoin(PnDO.class,"p",PnDO::getId, StorageInventoryDO::getPnId) .disableSubLogicDel() .groupBy(MatReqDetailDO::getId) .orderByDesc(MatReqDetailDO::getCreateTime); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java index 853c1c7..173e78b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java @@ -21,6 +21,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderboom.Purchas import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermaterial.PurchaseOrderMaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; @@ -43,13 +44,13 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX { + + default PageResult selectPage(StorageInventoryPageReqVO reqVO) { + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(StorageInventoryDO.class) + .select("ifnull(sum(t.yard_amount),0) matRest") + .select("m.name as matName,m.code as matCode,d.label as matType,m.spec as matSpec,m.brand as matBrand") + .select("d1.label as matUnit") + .select("w.wh_name as whName","r.rg_name as rgName","p.pn_name as pnName") + .select("m.material_type as materialTypeId","m.unit as matUnitId") + .leftJoin(MaterialDO.class, "m", MaterialDO::getId, StorageInventoryDO::getMaterialId) + .leftJoin(DictDataDO.class,"d",DictDataDO::getValue, MaterialDO::getMaterialType) + .leftJoin(DictDataDO.class,"d1",DictDataDO::getValue, MaterialDO::getUnit) + .leftJoin(WarehouseDO.class,"w",WarehouseDO::getId, StorageInventoryDO::getWhId) + .leftJoin(RgDO.class,"r",RgDO::getId, StorageInventoryDO::getRgId) + .leftJoin(PnDO.class,"p",PnDO::getId, StorageInventoryDO::getPnId) + .disableSubLogicDel() + .groupBy(StorageInventoryDO::getId) + .orderByDesc(StorageInventoryDO::getId); + + query.like(!com.alibaba.druid.util.StringUtils.isEmpty(reqVO.getMatSpec()),MaterialDO::getSpec, reqVO.getMatSpec()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(reqVO.getMatName()), MaterialDO::getName, reqVO.getMatName()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(reqVO.getMatCode()), MaterialDO::getCode, reqVO.getMatCode()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(reqVO.getShortName()), MaterialDO::getShortName, reqVO.getShortName()) + .eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name()) + .ne(StorageInventoryDO::getYardAmount,0) + .eq(MaterialDO::getStatus,1) + .eq(reqVO.getWhId()!= null,StorageInventoryDO::getWhId, reqVO.getWhId()) + .eq(reqVO.getRgId()!= null,StorageInventoryDO::getRgId, reqVO.getRgId()) + .eq(reqVO.getPnId()!= null,StorageInventoryDO::getPnId, reqVO.getPnId()) + .eq("d.dict_type","heli_material_type") + .eq("d1.dict_type","heli_material_unit"); + return selectPage(reqVO, query); + } + + default PageResult getStorageNowPageAll(StorageLogPageReqVO pageReqVO){ +// MPJLambdaWrapper query = new MPJLambdaWrapper<>(); +// +// query.selectAll(StorageLogNowDO.class) +// .select("a.material_type as materialTypeId","a.unit as matUnitId","COALESCE(a.price, 0) as price") +// +// .leftJoin(MaterialDO.class,"a",MaterialDO::getId,StorageLogNowDO::getId) +// .orderByDesc(StorageLogNowDO::getId); +// +// query.like(!StringUtils.isEmpty(reqVO.getMatType()),StorageLogNowDO::getMatType, reqVO.getMatType()) +// .like(!StringUtils.isEmpty(reqVO.getMatSpec()),StorageLogNowDO::getMatSpec, reqVO.getMatSpec()) +// .eq(reqVO.getWhId()!= null,StorageLogNowDO::getWhId, reqVO.getWhId()) +// .eq(reqVO.getRgId()!= null,StorageLogNowDO::getRgId, reqVO.getRgId()) +// .eq(reqVO.getPnId()!= null,StorageLogNowDO::getPnId, reqVO.getPnId()) +// .ne(StorageLogNowDO::getStorageOkQty,0) +// .like(!StringUtils.isEmpty(reqVO.getMatName()), StorageLogNowDO::getMatName, reqVO.getMatName()) +// .like(!StringUtils.isEmpty(reqVO.getMatCode()), StorageLogNowDO::getMatCode, reqVO.getMatCode()) +// .like(!StringUtils.isEmpty(reqVO.getLotNo()),StorageLogNowDO::getLotNo, reqVO.getLotNo()); +// System.out.println(query); +// return selectPage(reqVO,query); + + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(StorageInventoryDO.class) + .select("ifnull(sum(t.yard_amount),0) matRest") + .select("m.name as matName,m.code as matCode,d.label as matType,m.spec as matSpec,m.brand as matBrand") + .select("d1.label as matUnit") + .select("w.wh_name as whName","r.rg_name as rgName","p.pn_name as pnName") + .select("m.material_type as materialTypeId","m.unit as matUnitId") + .leftJoin(MaterialDO.class, "m", MaterialDO::getId, StorageInventoryDO::getMaterialId) + .leftJoin(DictDataDO.class,"d",DictDataDO::getValue, MaterialDO::getMaterialType) + .leftJoin(DictDataDO.class,"d1",DictDataDO::getValue, MaterialDO::getUnit) + .leftJoin(WarehouseDO.class,"w",WarehouseDO::getId, StorageInventoryDO::getWhId) + .leftJoin(RgDO.class,"r",RgDO::getId, StorageInventoryDO::getRgId) + .leftJoin(PnDO.class,"p",PnDO::getId, StorageInventoryDO::getPnId) + .disableSubLogicDel() + .groupBy(StorageInventoryDO::getId) + .orderByDesc(StorageInventoryDO::getId); + + query.like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatSpec()),MaterialDO::getSpec, pageReqVO.getMatSpec()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatName()), MaterialDO::getName, pageReqVO.getMatName()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatCode()), MaterialDO::getCode, pageReqVO.getMatCode()) + .eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name()) + .ne(StorageInventoryDO::getYardAmount,0) + .eq(MaterialDO::getStatus,1) + .eq(pageReqVO.getWhId()!= null,StorageInventoryDO::getWhId, pageReqVO.getWhId()) + .eq(pageReqVO.getRgId()!= null,StorageInventoryDO::getRgId, pageReqVO.getRgId()) + .eq(pageReqVO.getPnId()!= null,StorageInventoryDO::getPnId, pageReqVO.getPnId()) + .eq("d.dict_type","heli_material_type") + .eq("d1.dict_type","heli_material_unit"); + return selectPage(pageReqVO, query); + } + + default PageResult getSupplementPage(StorageInventoryPageReqVO pageReqVO){ + MPJLambdaWrapper subQuery = new MPJLambdaWrapper<>(); + subQuery.select(StorageInventoryDO::getMatCode) + .leftJoin(MaterialDO.class, "m", MaterialDO::getId, StorageInventoryDO::getMaterialId) + .groupBy(StorageInventoryDO::getMaterialId) + .having("SUM(yard_amount) < COALESCE(MAX(m.inv_safe), 0)"); + //执行子查询获取符合条件的matCode + List qualifiedMatCodes = this.selectList(subQuery) + .stream() + .map(StorageInventoryDO::getMaterialId) + .distinct() + .collect(Collectors.toList()); + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(StorageInventoryDO.class) + .select("ifnull(sum(t.yard_amount),0) matRest") + .select("m.name as matName,m.code as matCode,d.label as matType,m.spec as matSpec,m.brand as matBrand") + .select("d1.label as matUnit") + .select("w.wh_name as whName","r.rg_name as rgName","p.pn_name as pnName") + .select("m.material_type as materialTypeId","m.unit as matUnitId") + .select("ROUND(m.inv_safe, 2) as invSafe") // 添加安全库存字段 + .leftJoin(MaterialDO.class, "m", MaterialDO::getId, StorageInventoryDO::getMaterialId) + .leftJoin(DictDataDO.class,"d",DictDataDO::getValue, MaterialDO::getMaterialType) + .leftJoin(DictDataDO.class,"d1",DictDataDO::getValue, MaterialDO::getUnit) + .leftJoin(WarehouseDO.class,"w",WarehouseDO::getId, StorageInventoryDO::getWhId) + .leftJoin(RgDO.class,"r",RgDO::getId, StorageInventoryDO::getRgId) + .leftJoin(PnDO.class,"p",PnDO::getId, StorageInventoryDO::getPnId) + .disableSubLogicDel() + .groupBy(StorageInventoryDO::getId) + .orderByDesc(StorageInventoryDO::getId); + + query.like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatSpec()),MaterialDO::getSpec, pageReqVO.getMatSpec()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatName()), MaterialDO::getName, pageReqVO.getMatName()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatCode()), MaterialDO::getCode, pageReqVO.getMatCode()) + .eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name()) + .ne(StorageInventoryDO::getYardAmount,0) + .eq(MaterialDO::getStatus,1) + .eq(pageReqVO.getWhId()!= null,StorageInventoryDO::getWhId, pageReqVO.getWhId()) + .eq(pageReqVO.getRgId()!= null,StorageInventoryDO::getRgId, pageReqVO.getRgId()) + .eq(pageReqVO.getPnId()!= null,StorageInventoryDO::getPnId, pageReqVO.getPnId()) + .eq("d.dict_type","heli_material_type") + .eq("d1.dict_type","heli_material_unit"); + if (!qualifiedMatCodes.isEmpty()) { + query.in(StorageInventoryDO::getMaterialId, qualifiedMatCodes); + } else { + // 如果没有符合条件的matCode,返回空结果 + query.apply("1 = 0"); + } + return selectPage(pageReqVO, query); + } +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageMaterialMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageMaterialMapper.java index c3f6f30..4d51366 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageMaterialMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageMaterialMapper.java @@ -5,12 +5,18 @@ import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; +import com.chanko.yunxi.mes.module.system.dal.dataobject.dict.DictDataDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import javax.annotation.Resource; import java.util.List; /** @@ -22,7 +28,6 @@ import java.util.List; public interface StorageMaterialMapper extends BaseMapperX { - // PageResult selectMaterialWithNow(StorageLogPageReqVO reqVO); default PageResult selectMaterialWithNow(StorageLogPageReqVO reqVO){ MPJLambdaWrapper query = new MPJLambdaWrapper<>(); @@ -59,5 +64,6 @@ public interface StorageMaterialMapper extends BaseMapperX { .groupBy(StorageMaterialDO::getId).orderByDesc(StorageMaterialDO::getId); return selectPage(reqVO,query); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java index 83f1f7f..cee6f55 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java @@ -95,8 +95,8 @@ public class BgMasterLineServiceImpl implements BgMasterLineService { wrapper1.eq(TaskDispatchDetailDO::getDeleted, 0); TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper1); if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){ - taskDispatchDetailDO.setReportStatus(1); - taskDispatchDetailMapper.updateById(taskDispatchDetailDO); + nextTaskDispatchDetailDO.setReportStatus(1); + taskDispatchDetailMapper.updateById(nextTaskDispatchDetailDO); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialService.java index d97b0be..74f6715 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialService.java @@ -3,9 +3,11 @@ package com.chanko.yunxi.mes.module.heli.service.material; import java.util.*; import javax.validation.*; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; /** * 物料 Service 接口 @@ -62,4 +64,7 @@ public interface MaterialService { PageResult getbzjList(MaterialPageReqVO pageReqVO); + PageResult getStorageNowPageGroupMaterial(StorageLogPageReqVO pageReqVO); + + PageResult getStorageNowPageAll(StorageLogPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java index 6cc7bc9..f393b42 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java @@ -1,6 +1,7 @@ package com.chanko.yunxi.mes.module.heli.service.material; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; @@ -11,12 +12,19 @@ import com.chanko.yunxi.mes.framework.tenant.core.util.TenantUtils; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialExcelVO; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; import com.chanko.yunxi.mes.module.heli.enums.MaterialTypeEnum; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.heli.service.storage.StorageService; +import com.chanko.yunxi.mes.module.heli.service.storagelog.StorageLogService; import org.springframework.context.annotation.DependsOn; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,10 +35,8 @@ import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.validation.ConstraintViolation; import javax.validation.Validator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.math.BigDecimal; +import java.util.*; import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -55,6 +61,9 @@ public class MaterialServiceImpl implements MaterialService { @Resource private SerialNumberService serialNumberService; + @Resource + private StorageInventoryMapper storageInventoryMapper; + @PostConstruct public void init(){ @@ -209,6 +218,72 @@ public class MaterialServiceImpl implements MaterialService { return materialMapper.getbzjList( pageReqVO); } + @Override + public PageResult getStorageNowPageGroupMaterial(StorageLogPageReqVO pageReqVO) { + PageResult pageResult = materialMapper.selectMaterialGroupNow(pageReqVO); + if (ObjectUtil.isNotEmpty(pageReqVO.getWhId())) { + if (ObjectUtil.isNotEmpty(pageResult.getList())) { + // 获取所有物料编码 + List ids = pageResult.getList().stream() + .map(MaterialDO::getId) + .collect(Collectors.toList()); + // 批量查询库存日志 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInventoryDO::getWhId, pageReqVO.getWhId()) + .in(StorageInventoryDO::getMaterialId,ids ); + List logList = storageInventoryMapper.selectList(wrapper); + + // 将库存日志按物料编码分组 + Map> logMap = logList.stream() + .collect(Collectors.groupingBy(StorageInventoryDO::getMaterialId)); + + // 计算每个物料的剩余数量并设置到对应的 StorageMaterialDO 对象中 + for (MaterialDO materialDO : pageResult.getList()) { + List logs = logMap.getOrDefault(materialDO.getId(), Collections.emptyList()); + BigDecimal matRest = logs.stream() + .map(StorageInventoryDO::getYardAmount) + .filter(Objects::nonNull) // 确保过滤掉 null 值 + .reduce(BigDecimal.ZERO, BigDecimal::add); + materialDO.setMatRest(matRest); + } + } + } + return pageResult; + } + + @Override + public PageResult getStorageNowPageAll(StorageLogPageReqVO pageReqVO) { + PageResult pageResult = storageInventoryMapper.getStorageNowPageAll(pageReqVO); + if (ObjectUtil.isEmpty(pageReqVO.getWhId())) { + if (ObjectUtil.isNotEmpty(pageResult.getList())) { + // 获取所有物料编码 + List ids = pageResult.getList().stream() + .map(StorageInventoryDO::getMaterialId) + .collect(Collectors.toList()); + // 批量查询库存日志 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper + .in(StorageInventoryDO::getMaterialId,ids ); + List logList = storageInventoryMapper.selectList(wrapper); + + // 将库存日志按物料编码分组 + Map> logMap = logList.stream() + .collect(Collectors.groupingBy(StorageInventoryDO::getMaterialId)); + + // 计算每个物料的剩余数量并设置到对应的 StorageMaterialDO 对象中 + for (StorageInventoryDO storageInventoryDO : pageResult.getList()) { + List logs = logMap.getOrDefault(storageInventoryDO.getMaterialId(), Collections.emptyList()); + BigDecimal matRest = logs.stream() + .map(StorageInventoryDO::getYardAmount) + .filter(Objects::nonNull) // 确保过滤掉 null 值 + .reduce(BigDecimal.ZERO, BigDecimal::add); + storageInventoryDO.setMatRest(matRest); + } + } + } + return pageResult; + } + private void checkData(List materialExcelVOList) { // 基础校验 Set>> validate = validator.validate(materialExcelVOList, MaterialExcelVO.class); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/matreq/MatReqServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/matreq/MatReqServiceImpl.java index 3752174..0ba6459 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/matreq/MatReqServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/matreq/MatReqServiceImpl.java @@ -163,6 +163,10 @@ public class MatReqServiceImpl implements MatReqService { matReqDetailDO.setMaterialId(materialPlanBoomDO.getMatId()); matReqDetailDO.setProjectMaterialPlanDetailId(boomDO.getId()); matReqDetailDO.setProjectMaterialPlanId(boomDO.getProjectMaterialPlanId()); + matReqDetailDO.setWhId(materialPlanBoomDO.getWhId()); + matReqDetailDO.setRgId(materialPlanBoomDO.getRgId()); + matReqDetailDO.setPnId(materialPlanBoomDO.getPnId()); + matReqDetailDO.setPickAmount(materialPlanBoomDO.getPickAmount()); matReqDetailDOS.add(matReqDetailDO); boomDO.setIsPurYard(3); materialPlanBoomMapper.updateById(boomDO); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterServiceImpl.java index b8e61bd..5d1187e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterServiceImpl.java @@ -186,8 +186,8 @@ public class PgMasterServiceImpl implements PgMasterService { wrapper1.eq(TaskDispatchDetailDO::getDeleted, 0); TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper1); if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){ - taskDispatchDetailDO.setReportStatus(1); - taskDispatchDetailMapper.updateById(taskDispatchDetailDO); + nextTaskDispatchDetailDO.setReportStatus(1); + taskDispatchDetailMapper.updateById(nextTaskDispatchDetailDO); } } // 返回 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java index 3d86317..6f28522 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java @@ -278,10 +278,10 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { if (processDesignProgressMapper.selectCount(wrapper)==0){ processDesignDO.setProgressBlank("未开始"); }else{ - if (ObjectUtil.isEmpty(processDesign.getIsOverProcess())){ - processDesignDO.setProgressBlank("进行中"); - }else { + if (processDesign.getIsOverProcess()==1){ processDesignDO.setProgressBlank("已完成"); + }else { + processDesignDO.setProgressBlank("进行中"); } } }else if(ProcessDesignTypeEnum.BLUEPRINT_3D.name().equals(processDesign.getProcessDesignType())){ @@ -295,10 +295,10 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { if (l==0){ processDesignDO.setProgress3d("未开始"); }else{ - if (ObjectUtil.isEmpty(processDesign.getIsOverProcess())){ - processDesignDO.setProgress3d("进行中"); - }else{ + if (processDesign.getIsOverProcess()==1){ processDesignDO.setProgress3d("已完成"); + }else{ + processDesignDO.setProgress3d("进行中"); } } }else if(ProcessDesignTypeEnum.BLUEPRINT_2D.name().equals(processDesign.getProcessDesignType())){ @@ -311,10 +311,10 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { if (processDesignProgressMapper.selectCount(wrapper)==0){ processDesignDO.setProgress2d("未开始"); }else{ - if (ObjectUtil.isEmpty(processDesign.getIsOverProcess())){ - processDesignDO.setProgress2d("进行中"); - }else{ + if (processDesign.getIsOverProcess()==1){ processDesignDO.setProgress2d("已完成"); + }else{ + processDesignDO.setProgress2d("进行中"); } } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java index 9fd26e9..ae0f428 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java @@ -3,9 +3,11 @@ package com.chanko.yunxi.mes.module.heli.service.storage; import cn.hutool.core.lang.UUID; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.outsourcestockboom.vo.OutsourceStockBoomSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.StorageInventoryController; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; @@ -15,6 +17,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.outsourcestockmaterial.Ou import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; @@ -26,6 +29,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.outsourcestockboom.OutsourceSt import com.chanko.yunxi.mes.module.heli.dal.mysql.outsourcestockmaterial.OutsourceStockMaterialMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorder.PurchaseOrderMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; @@ -94,6 +98,8 @@ public class StorageServiceImpl implements StorageService { private PurchaseOrderMapper purchaseOrderMapper; @Resource private PurchaseOrderNoDetailMapper purchaseOrderNoDetailMapper; + @Resource + private StorageInventoryMapper storageInventoryMapper; @Resource private StorageLogService storageLogService; @@ -444,6 +450,34 @@ private StorageLogService storageLogService; updateWrapper.set(PurchaseOrderNoDetailDO::getReceivingStatus,3); updateWrapper.set(PurchaseOrderNoDetailDO::getPurchaseRemAmount,BigDecimal.ZERO); purchaseOrderNoDetailMapper.update(updateWrapper); + + //更新库存 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInventoryDO::getMaterialId,createReqVO.getMaterialId()); + wrapper.eq(StorageInventoryDO::getWhId,createReqVO.getWhId()); + wrapper.eq(StorageInventoryDO::getRgId,createReqVO.getRgId()); + wrapper.eq(StorageInventoryDO::getPnId,createReqVO.getPnId()); + wrapper.eq(StorageInventoryDO::getDeleted,0); + StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper); + if (ObjectUtil.isEmpty(storageInventoryDO)){ + storageInventoryDO = new StorageInventoryDO(); + storageInventoryDO.setMaterialId(createReqVO.getMaterialId()); + storageInventoryDO.setWhId(createReqVO.getWhId()); + storageInventoryDO.setRgId(createReqVO.getRgId()); + storageInventoryDO.setPnId(createReqVO.getPnId()); + storageInventoryDO.setYardAmount(createReqVO.getStorageAmount()); + MaterialDO materialDO = materialMapper.selectById(createReqVO.getMaterialId()); + 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 { + storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().add(createReqVO.getStorageAmount())); + } + storageInventoryMapper.insertOrUpdate(storageInventoryDO); return CommonResult.success(true); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storageinventory/StorageInventoryService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storageinventory/StorageInventoryService.java new file mode 100644 index 0000000..d30e5ca --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storageinventory/StorageInventoryService.java @@ -0,0 +1,56 @@ +package com.chanko.yunxi.mes.module.heli.service.storageinventory; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 库存 Service 接口 + * + * @author 管理员 + */ +public interface StorageInventoryService { + + /** + * 创建库存 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStorageInventory(@Valid StorageInventorySaveReqVO createReqVO); + + /** + * 更新库存 + * + * @param updateReqVO 更新信息 + */ + void updateStorageInventory(@Valid StorageInventorySaveReqVO updateReqVO); + + /** + * 删除库存 + * + * @param id 编号 + */ + void deleteStorageInventory(Long id); + + /** + * 获得库存 + * + * @param id 编号 + * @return 库存 + */ + StorageInventoryDO getStorageInventory(Long id); + + /** + * 获得库存分页 + * + * @param pageReqVO 分页查询 + * @return 库存分页 + */ + PageResult getStorageInventoryPage(StorageInventoryPageReqVO pageReqVO); + + PageResult getSupplementPage(StorageInventoryPageReqVO pageReqVO); +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storageinventory/StorageInventoryServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storageinventory/StorageInventoryServiceImpl.java new file mode 100644 index 0000000..d83f6f2 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storageinventory/StorageInventoryServiceImpl.java @@ -0,0 +1,79 @@ +package com.chanko.yunxi.mes.module.heli.service.storageinventory; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 库存 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class StorageInventoryServiceImpl implements StorageInventoryService { + + @Resource + private StorageInventoryMapper storageInventoryMapper; + + @Override + public Long createStorageInventory(StorageInventorySaveReqVO createReqVO) { + // 插入 + StorageInventoryDO storageInventory = BeanUtils.toBean(createReqVO, StorageInventoryDO.class); + storageInventoryMapper.insert(storageInventory); + // 返回 + return storageInventory.getId(); + } + + @Override + public void updateStorageInventory(StorageInventorySaveReqVO updateReqVO) { + // 校验存在 + validateStorageInventoryExists(updateReqVO.getId()); + // 更新 + StorageInventoryDO updateObj = BeanUtils.toBean(updateReqVO, StorageInventoryDO.class); + storageInventoryMapper.updateById(updateObj); + } + + @Override + public void deleteStorageInventory(Long id) { + // 校验存在 + validateStorageInventoryExists(id); + // 删除 + storageInventoryMapper.deleteById(id); + } + + private void validateStorageInventoryExists(Long id) { + if (storageInventoryMapper.selectById(id) == null) { + throw exception(STORAGE_INVENTORY_NOT_EXISTS); + } + } + + @Override + public StorageInventoryDO getStorageInventory(Long id) { + return storageInventoryMapper.selectById(id); + } + + @Override + public PageResult getStorageInventoryPage(StorageInventoryPageReqVO pageReqVO) { + return storageInventoryMapper.selectPage(pageReqVO); + } + + @Override + public PageResult getSupplementPage(StorageInventoryPageReqVO pageReqVO) { + return storageInventoryMapper.getSupplementPage(pageReqVO); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatServiceImpl.java index 30bd9cd..f52c474 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatServiceImpl.java @@ -9,6 +9,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrder import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper; @@ -16,6 +17,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderMappe import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper; import com.chanko.yunxi.mes.module.heli.service.storage.StorageService; @@ -69,6 +71,8 @@ public class StorageMatServiceImpl implements StorageMatService { private StorageLogMapper storageLogMapper; @Resource private ProjectOrderSubMapper projectOrderSubMapper; + @Resource + private StorageInventoryMapper storageInventoryMapper; @Override public Long createStorageMat(StorageMatSaveReqVO createReqVO) { // 插入 @@ -235,25 +239,25 @@ public class StorageMatServiceImpl implements StorageMatService { @Override public List getStorageMatPage(StorageMatPageReqVO pageReqVO) { List storageMatDOS = storageMatMapper.selectMatByStorckID(pageReqVO.getStockId()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); HashMap subNameMap = new HashMap<>(); if (CollUtil.isNotEmpty(storageMatDOS)){ for (StorageMatDO storageMatDO : storageMatDOS) { queryWrapper.clear(); - queryWrapper.select(StorageLogNowDO::getStorageOkQty); - queryWrapper.eq(StorageLogNowDO::getId,storageMatDO.getMatId()); + queryWrapper.select(StorageInventoryDO::getYardAmount); + queryWrapper.eq(StorageInventoryDO::getMaterialId,storageMatDO.getMatId()); if (storageMatDO.getWhId()!=null){ - queryWrapper.eq(StorageLogNowDO::getWhId,storageMatDO.getWhId()); + queryWrapper.eq(StorageInventoryDO::getWhId,storageMatDO.getWhId()); } if (storageMatDO.getPnId()!=null){ - queryWrapper.eq(StorageLogNowDO::getPnId,storageMatDO.getPnId()); + queryWrapper.eq(StorageInventoryDO::getPnId,storageMatDO.getPnId()); } if (storageMatDO.getRgId()!=null){ - queryWrapper.eq(StorageLogNowDO::getRgId,storageMatDO.getRgId()); + queryWrapper.eq(StorageInventoryDO::getRgId,storageMatDO.getRgId()); } - StorageLogNowDO storageLogNowDO = storageLogNowMapper.selectOne(queryWrapper); + StorageInventoryDO storageLogNowDO = storageInventoryMapper.selectOne(queryWrapper); if (ObjectUtil.isNotEmpty(storageLogNowDO)){ - storageMatDO.setMatRest(storageLogNowDO.getStorageOkQty()); + storageMatDO.setMatRest(storageLogNowDO.getYardAmount()); }else { storageMatDO.setMatRest(new BigDecimal(0)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index c94c7d2..6e57525 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -896,16 +896,17 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { // planMapper.updateById(planDO); // } // } - if (ObjectUtil.isNotEmpty(taskDispatchDetailDO.getTestYn())){ - if ("1".equals(taskDispatchDetailDO.getTestYn())&&"PRODUCTION".equals(taskDispatchDO.getDispatchType())){ + if (ObjectUtil.isNotEmpty(taskDispatchDetailDO.getCheckYn())){ + if (taskDispatchDetailDO.getCheckYn()==1&&"PRODUCTION".equals(taskDispatchDO.getDispatchType())){ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId()); wrapper.eq(TaskDispatchDetailDO::getSort, taskDispatchDetailDO.getSort()+1); wrapper.eq(TaskDispatchDetailDO::getDeleted, 0); TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper); if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){ - taskDispatchDetailDO.setReportStatus(1); + nextTaskDispatchDetailDO.setReportStatus(1); } + taskDispatchDetailMapper.updateById(nextTaskDispatchDetailDO); } } taskDispatchDetailMapper.updateById(taskDispatchDetailDO); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storageinventory/StorageInventoryMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storageinventory/StorageInventoryMapper.xml new file mode 100644 index 0000000..e821a7d --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storageinventory/StorageInventoryMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagemat/StorageMatMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagemat/StorageMatMapper.xml index a5a263b..36859b8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagemat/StorageMatMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagemat/StorageMatMapper.xml @@ -23,7 +23,11 @@