diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java index d811ca4..98d8f85 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java @@ -52,6 +52,8 @@ public enum CodeEnum { TASK_DISPATCH_ASSEMBLE("装配任务派工单", "ATD", 3, "yyyyMMdd"), TASK_DISPATCH_GCJYPG("过程检验派工单", "GCJ", 4, "yyyyMMdd"), TASK_DISPATCH_ZJJYPG("终检检验派工单", "ZJ", 4, "yyyyMMdd"), + MAT_REQ("领料单", "LL", 4, "yyyyMMdd"), + UNQUALIFIED_NOTIFICATION("品质异常通知单", "RN", 4, "yyyyMMdd"), MATERIAL("物料", 6), ; 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 2a08e1e..4a8e296 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 @@ -172,7 +172,7 @@ public class bdgzsomthingController { @PostMapping("/getMessage") @Operation(summary = "小程序消息") @PreAuthorize("@ss.hasPermission('heli:bdgzsomthing:query')") - public CommonResult> getMessage(@Valid bdgzsomthingPageReqVO pageReqVO) { + public CommonResult> getMessage(@Valid @RequestBody bdgzsomthingPageReqVO pageReqVO) { PageResultpageResult = bdgzsomthingService.getMessage(pageReqVO); return success(BeanUtils.toBean(pageResult, bdgzsomthingDO.class)); } 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 2e22859..dd964d8 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 @@ -122,4 +122,11 @@ public class MaterialController { materialService.importExcel(list, updateSupport); return success(null); } + @GetMapping({"/getbzjList"}) + @Operation(summary = "TODO:获取物料标准件信息列表", description = "只包含被开启的物料,主要用于前端的下拉选项") + public CommonResult> > getbzjList() { + List> list = materialService.getbzjList(); + // 拼接数据 + return success(list); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java index a290fd7..d9559af 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java @@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -164,10 +165,31 @@ public class MaterialPlanController { PageResult pageResult = materialPlanService.getStandardPartsPages(pageReqVO); return success(pageResult); } + + + @GetMapping("/exportStandardParts") + @Operation(summary = "导出标准件库存") + @PreAuthorize("@ss.hasPermission('heli:material-plan:export')") + @OperateLog(type = EXPORT) + public void exportStandardParts(@Valid MaterialPlanPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialPlanService.getStandardPartsPages(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "标准件库存.xlsx", "数据", MaterialPlanBoomExcelVo.class, + BeanUtils.toBean(list, MaterialPlanBoomExcelVo.class)); + } @GetMapping("/operation") @Operation(summary = "获得标准件库存") @PreAuthorize("@ss.hasPermission('heli:material-plan:query')") public CommonResult operation(@Valid MaterialPlanPageReqVO pageReqVO) { return materialPlanService.operation(pageReqVO); } + + @PostMapping("/supplement") + @Operation(summary = "库存补充") + @PreAuthorize("@ss.hasPermission('heli:process-bom:create')") + public CommonResult supplement(@Valid @RequestBody List list) { + return success(materialPlanService.supplement(list)); + } } 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 new file mode 100644 index 0000000..b9225b7 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanBoomExcelVo.java @@ -0,0 +1,45 @@ +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 lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Excel 导入 VO + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免BOM导入有问题 +public class MaterialPlanBoomExcelVo { + + + @ExcelProperty("项目名称") + private String projectName; + @ExcelProperty("子项目名称") + private String projectSubName; + @ExcelProperty("物料编码") + private String materialName; + @ExcelProperty("物料名称") + private String matName; + + @ExcelProperty("规格型号") + private String boomSpec; + @ExcelProperty("图号") + private String blueprintNo; + @ExcelProperty("需求数量") + private String boomAmount; + @ExcelProperty("系统单位") + @DictFormat("heli_material_unit") + private String boomUnit; + @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/matreq/MatReqController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/matreq/MatReqController.java index ba7704c..9b33858 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/matreq/MatReqController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/matreq/MatReqController.java @@ -84,7 +84,7 @@ public class MatReqController { @Operation(summary = "领料单生成") @PreAuthorize("@ss.hasPermission('heli:process-bom:create')") public CommonResult generate(@Valid @RequestBody List list) { - return success(matReqService.generate(list)); + return matReqService.generate(list); } @GetMapping("/export-excel") @Operation(summary = "导出领料单主 Excel") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java index f526178..692c6bd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java @@ -168,4 +168,11 @@ public class StorageLogController { BeanUtils.toBean(list, StorageLogRespVO.class)); } + @GetMapping("/getSupplementPage") + @Operation(summary = "获得库存补充") + @PreAuthorize("@ss.hasPermission('heli:storage-log:query')") + public CommonResult> getSupplementPage(@Valid StorageLogPageReqVO pageReqVO) { + PageResult pageResult = storageLogService.getSupplementPage(pageReqVO); + return success(pageResult); + } } 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 81695ad..6d87dca 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 @@ -139,24 +139,26 @@ public class MaterialPlanBoomDO extends BaseDO { private String matUnit; @TableField(exist = false) private String matType; - @TableField(exist = false) private String mplanStatusName; - + @TableField(exist = false) private BigDecimal matRest; //采购数量 + @TableField(exist = false) private BigDecimal purchaseAmount; + @TableField(exist = false) //暂估价格 private BigDecimal estimatedPrice; + @TableField(exist = false) //预估到时间 private LocalDateTime arriveTime; + @TableField(exist = false) //供应商id private Long supplierId; @TableField(exist = false) //客户简称 private String customerBriefName; - - - + @TableField(exist = false) + private String boomArriveDates; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelogNow/StorageLogNowDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelogNow/StorageLogNowDO.java index 8356eff..32555cf 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelogNow/StorageLogNowDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelogNow/StorageLogNowDO.java @@ -60,6 +60,7 @@ public class StorageLogNowDO extends BaseDO { private BigDecimal storageOkQtys; @TableField(exist = false) private Long matUnitId; - + @TableField(exist = false) + private String invSafe; private String creator; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bdgzsomthing/bdgzsomthingMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bdgzsomthing/bdgzsomthingMapper.java index 957f7d6..352bf53 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bdgzsomthing/bdgzsomthingMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bdgzsomthing/bdgzsomthingMapper.java @@ -128,19 +128,20 @@ public interface bdgzsomthingMapper extends BaseMapperX { default PageResult getMessage(bdgzsomthingPageReqVO pageReqVO){ LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(!StringUtils.isEmpty(pageReqVO.getStatus()),bdgzsomthingDO::getDeleted, pageReqVO.getStatus()); + query.eq(bdgzsomthingDO::getDeleted, pageReqVO.getStatus()); query.eq(bdgzsomthingDO::getClick, pageReqVO.getClick()); + query.eq(bdgzsomthingDO::getAttr13,"1"); query.isNotNull(bdgzsomthingDO::getAttr6); Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); Page result = this.selectPage(page, query); return new PageResult<>(result.getRecords(), result.getTotal()); - } default Long unreadMessage(String name){ LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(bdgzsomthingDO::getClick, name); query.isNotNull(bdgzsomthingDO::getAttr6); + query.eq(bdgzsomthingDO::getAttr13,"1"); query.eq(bdgzsomthingDO::getDeleted,0); return this.selectCount(query); 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 842a5b3..21d5132 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 @@ -87,4 +87,9 @@ public interface MaterialMapper extends BaseMapperX { return selectMaps(new QueryWrapper().select("id", "name","short_name","code","material_type","spec","unit","brand").eq("virtual_part", YesOrNoEnum.Y.name()).lambda()); } + + default List> getbzjList(){ + return selectMaps(new QueryWrapper().select("id", "name","short_name","code","material_type","spec","unit","brand").eq("material_type", 5)); + + } } 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 e7140f9..bc419e1 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 @@ -166,12 +166,14 @@ public interface MaterialPlanBoomMapper extends BaseMapperX default PageResult getStandardPartsPages(MaterialPlanPageReqVO pageReqVO){ 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") - .select("d.spec as boomSpec","d.blueprint_no as blueprintNo","d.unit as boomUnit") + .select("p.project_name as projectName","p.project_id as projectId","p.name as projectSubName","mat.material_id as matId","m.code as materialName") + .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(MatReqDetailDO.class,"mat",MatReqDetailDO::getProjectMaterialPlanDetailId,MaterialPlanBoomDO::getId) +// .leftJoin(MatReqDetailDO.class,"mat",MatReqDetailDO::getProjectMaterialPlanDetailId,MaterialPlanBoomDO::getId) + .leftJoin("project_mat_req_detail mat on (t.id=mat.project_material_plan_detail_id and mat.deleted=0)") + .leftJoin(MaterialDO.class,"m",MaterialDO::getId,MatReqDetailDO::getMaterialId) .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/storagelog/StorageLogNowMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java index f0eca00..78586c3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java @@ -17,6 +17,7 @@ import org.apache.poi.hpsf.Decimal; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; /** * 入/出库日志 Mapper @@ -124,4 +125,82 @@ public interface StorageLogNowMapper extends BaseMapperX { return selectPage(reqVO,query); } + + default PageResult getSupplementPage(StorageLogPageReqVO pageReqVO){ +// MPJLambdaWrapper query = new MPJLambdaWrapper<>() +//// 选择所有字段 + 安全库存字段 +// query.selectAll(StorageLogNowDO.class) +// .select("SUM(storage_ok_qty) as storageOkQtys","m.inv_safe as invSafe") +// .select(MaterialDO::getInvSafe) // 添加安全库存字段 +// .leftJoin(MaterialDO.class,"m", MaterialDO::getCode, StorageLogNowDO::getMatCode) +// .orderByDesc(StorageLogNowDO::getMatCode); +// +//// 原有条件 +// query.like(!StringUtils.isEmpty(pageReqVO.getMatType()), StorageLogNowDO::getMatType, pageReqVO.getMatType()) +// .like(!StringUtils.isEmpty(pageReqVO.getMatSpec()), StorageLogNowDO::getMatSpec, pageReqVO.getMatSpec()) +// .eq(pageReqVO.getWhId() != null, StorageLogNowDO::getWhId, pageReqVO.getWhId()) +// .eq(pageReqVO.getRgId() != null, StorageLogNowDO::getRgId, pageReqVO.getRgId()) +// .eq(pageReqVO.getPnId() != null, StorageLogNowDO::getPnId, pageReqVO.getPnId()) +// .ne(true, StorageLogNowDO::getStorageOkQty, 0) +// .like(!StringUtils.isEmpty(pageReqVO.getMatName()), StorageLogNowDO::getMatName, pageReqVO.getMatName()) +// .like(!StringUtils.isEmpty(pageReqVO.getMatCode()), StorageLogNowDO::getMatCode, pageReqVO.getMatCode()) +// .like(!StringUtils.isEmpty(pageReqVO.getLotNo()), StorageLogNowDO::getLotNo, pageReqVO.getLotNo()); +// +//// 添加分组和筛选条件 +// query.groupBy(StorageLogNowDO::getMatCode) +// .having("SUM(storageOkQtys) < COALESCE(invSafe, 0)"); +// +// +// return selectPage(pageReqVO, query); + // 步骤1:创建子查询获取符合条件的matCode列表 + MPJLambdaWrapper subQuery = new MPJLambdaWrapper<>(); + subQuery.select(StorageLogNowDO::getMatCode) + .leftJoin(MaterialDO.class, "m", MaterialDO::getCode, StorageLogNowDO::getMatCode) + .groupBy(StorageLogNowDO::getMatCode) + .having("SUM(storage_ok_qty) < COALESCE(MAX(m.inv_safe), 0)"); +// .like(!StringUtils.isEmpty(pageReqVO.getMatType()), StorageLogNowDO::getMatType, pageReqVO.getMatType()) +// .like(!StringUtils.isEmpty(pageReqVO.getMatSpec()), StorageLogNowDO::getMatSpec, pageReqVO.getMatSpec()) +// .eq(pageReqVO.getWhId() != null, StorageLogNowDO::getWhId, pageReqVO.getWhId()) +// .eq(pageReqVO.getRgId() != null, StorageLogNowDO::getRgId, pageReqVO.getRgId()) +// .eq(pageReqVO.getPnId() != null, StorageLogNowDO::getPnId, pageReqVO.getPnId()) +// .ne(true, StorageLogNowDO::getStorageOkQty, 0) +// .like(!StringUtils.isEmpty(pageReqVO.getMatName()), StorageLogNowDO::getMatName, pageReqVO.getMatName()) +// .like(!StringUtils.isEmpty(pageReqVO.getMatCode()), StorageLogNowDO::getMatCode, pageReqVO.getMatCode()) +// .like(!StringUtils.isEmpty(pageReqVO.getLotNo()), StorageLogNowDO::getLotNo, pageReqVO.getLotNo()); + +// 执行子查询获取符合条件的matCode + List qualifiedMatCodes = this.selectList(subQuery) + .stream() + .map(StorageLogNowDO::getMatCode) + .distinct() + .collect(Collectors.toList()); + +// 步骤2:主查询返回原始记录 + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(StorageLogNowDO.class) + .select("ROUND(m.inv_safe, 2) as invSafe") // 添加安全库存字段 + .leftJoin(MaterialDO.class, "m", MaterialDO::getCode, StorageLogNowDO::getMatCode) + .orderByDesc(StorageLogNowDO::getMatCode); + +// 复制原有条件 + query.like(!StringUtils.isEmpty(pageReqVO.getMatType()), StorageLogNowDO::getMatType, pageReqVO.getMatType()) + .like(!StringUtils.isEmpty(pageReqVO.getMatSpec()), StorageLogNowDO::getMatSpec, pageReqVO.getMatSpec()) + .eq(pageReqVO.getWhId() != null, StorageLogNowDO::getWhId, pageReqVO.getWhId()) + .eq(pageReqVO.getRgId() != null, StorageLogNowDO::getRgId, pageReqVO.getRgId()) + .eq(pageReqVO.getPnId() != null, StorageLogNowDO::getPnId, pageReqVO.getPnId()) + .ne(true, StorageLogNowDO::getStorageOkQty, 0) + .like(!StringUtils.isEmpty(pageReqVO.getMatName()), StorageLogNowDO::getMatName, pageReqVO.getMatName()) + .like(!StringUtils.isEmpty(pageReqVO.getMatCode()), StorageLogNowDO::getMatCode, pageReqVO.getMatCode()) + .like(!StringUtils.isEmpty(pageReqVO.getLotNo()), StorageLogNowDO::getLotNo, pageReqVO.getLotNo()) + .isNotNull(MaterialDO::getInvSafe); +// 添加筛选条件:只返回符合条件的matCode组中的记录 + if (!qualifiedMatCodes.isEmpty()) { + query.in(StorageLogNowDO::getMatCode, qualifiedMatCodes); + } else { + // 如果没有符合条件的matCode,返回空结果 + query.apply("1 = 0"); + } + + return selectPage(pageReqVO, query); + } } 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 fe2ddb8..a6cf4d5 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 @@ -58,4 +58,6 @@ public interface MaterialService { List> selectSimpleVirtualList(); void importExcel(List materialExcelVOList, Boolean updateSupport); + + List> getbzjList(); } 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 946506a..7462353 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 @@ -204,6 +204,10 @@ public class MaterialServiceImpl implements MaterialService { })); } + @Override + public List> getbzjList() { + return materialMapper.getbzjList(); } + 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/materialplan/MaterialPlanService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java index b543546..465ec2b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java @@ -11,6 +11,7 @@ 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.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; /** @@ -75,4 +76,6 @@ public interface MaterialPlanService { PageResult getStandardPartsPages(MaterialPlanPageReqVO pageReqVO); CommonResult operation(MaterialPlanPageReqVO pageReqVO); + + Boolean supplement(List list); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java index 9893372..be30ea3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java @@ -8,11 +8,14 @@ import com.chanko.yunxi.mes.framework.common.util.object.ObjectUtils; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.AttentiontodoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; +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.processbom.ProcessBomDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; @@ -77,6 +80,8 @@ public class MaterialPlanServiceImpl implements MaterialPlanService { private ProcessBomDetailMapper processBomDetailMapper; @Resource private TaskDispatchDetailMapper taskDispatchDetailMapper; + @Resource + private MaterialMapper materialMapper; @Override public Long createMaterialPlan(MaterialPlanSaveReqVO createReqVO) { // 插入 @@ -371,4 +376,35 @@ public class MaterialPlanServiceImpl implements MaterialPlanService { return CommonResult.success(true); } + @Override + public Boolean supplement(List list) { + MaterialPlanDO planDO = new MaterialPlanDO(); + SerialNumberDO serialNumberDO = new SerialNumberDO(); + serialNumberDO = serialNumberService.getSerialNumber(MATERIAL_PLAN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + planDO.setProjectMaterialPlanNo(MATERIAL_PLAN.getCode(serialNumberDO.getSerialNumber().toString())); + planDO.setMatType(2); + planDO.setMatPlanDate(new Date()); + materialPlanMapper.insert(planDO); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); + List materialPlanBoomDOList = new ArrayList<>(); + for (StorageLogNowDO nowDO : list) { + MaterialPlanBoomDO boomDO = new MaterialPlanBoomDO(); + boomDO.setProjectMaterialPlanId(planDO.getId()); + boomDO.setBoomAmount(nowDO.getStorageOkQtys()); + boomDO.setMplanStatus(0); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MaterialDO::getCode, nowDO.getMatCode()); + MaterialDO materialDO = materialMapper.selectOne(queryWrapper); + if (ObjectUtil.isNotEmpty(materialDO)){ + boomDO.setMatName(materialDO.getName()); + boomDO.setMaterialId(materialDO.getId()); + } + materialPlanBoomDOList.add(boomDO); + } + materialPlanBoomMapper.insertOrUpdateBatch(materialPlanBoomDOList); + return true; + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/matreq/MatReqService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/matreq/MatReqService.java index ef3fc96..c15fef9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/matreq/MatReqService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/matreq/MatReqService.java @@ -2,6 +2,8 @@ package com.chanko.yunxi.mes.module.heli.service.matreq; import java.util.*; import javax.validation.*; + +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.matreq.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.matreq.MatReqDO; @@ -53,5 +55,5 @@ public interface MatReqService { */ PageResult getMatReqPage(MatReqPageReqVO pageReqVO); - Boolean generate(List list); + CommonResult generate(List list); } 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 e3a7743..37882b9 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 @@ -1,16 +1,26 @@ package com.chanko.yunxi.mes.module.heli.service.matreq; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.matreqdetail.MatReqDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.matreqdetail.MatReqDetailMapper; +import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -23,6 +33,8 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.matreq.MatReqMapper; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.MAT_REQ; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PURCHASE_ORDER; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -39,7 +51,13 @@ public class MatReqServiceImpl implements MatReqService { @Resource private MaterialPlanBoomMapper materialPlanBoomMapper; @Resource + private MaterialPlanMapper materialPlanMapper; + @Resource private MatReqDetailMapper matReqDetailMapper; + @Resource + private SerialNumberService serialNumberService; + @Resource + private MaterialMapper materialMapper; @Override public Long createMatReq(MatReqSaveReqVO createReqVO) { @@ -98,9 +116,59 @@ public class MatReqServiceImpl implements MatReqService { } @Override - public Boolean generate(List list) { - - return null; + public CommonResult generate(List list) { + List ids = list.stream() + .map(MaterialPlanBoomDO::getId) + .collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(MaterialPlanBoomDO::getId,ids); + queryWrapper.ne(MaterialPlanBoomDO::getIsPurYard,1); + List materialPlanBoomDOS = materialPlanBoomMapper.selectList(queryWrapper); + if (ObjectUtil.isNotEmpty(materialPlanBoomDOS)) return CommonResult.error(400,"该物料信息状态非库存状态,请刷新界面!"); + MatReqDO matReqDO = new MatReqDO(); + SerialNumberDO serialNumberDO = new SerialNumberDO(); + serialNumberDO = serialNumberService.getSerialNumber(MAT_REQ.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); + matReqDO.setMatReqNo(MAT_REQ.getCode(serialNumberDO.getSerialNumber().toString())); + matReqDO.setGoodsType(1); + matReqDO.setStatus(0); + MaterialPlanDO planDO = materialPlanMapper.selectById(list.get(0).getProjectMaterialPlanId()); + matReqDO.setProjectId(planDO.getProjectId()); + matReqDO.setProjectName(planDO.getProjectName()); + matReqDO.setCustomerId(planDO.getCustomerId()); + matReqDO.setReqDate(LocalDate.now()); + matReqMapper.insert(matReqDO); + List matReqDetailDOS = new ArrayList<>(); + for (MaterialPlanBoomDO materialPlanBoomDO : list) { + MaterialPlanBoomDO boomDO = materialPlanBoomMapper.selectById(materialPlanBoomDO.getId()); + if (ObjectUtil.isNotEmpty(boomDO)){ + MaterialPlanDO plan = materialPlanMapper.selectById(boomDO.getProjectMaterialPlanId()); + MatReqDetailDO matReqDetailDO = new MatReqDetailDO(); + matReqDetailDO.setMatReqId(matReqDO.getId()); + matReqDetailDO.setBoomDetailId(boomDO.getBoomDetailId()); + MaterialDO materialDO = materialMapper.selectById(materialPlanBoomDO.getMatId()); + if (ObjectUtil.isNotEmpty(materialDO)){ + matReqDetailDO.setBoomName(materialDO.getName()); + matReqDetailDO.setBoomSpec(materialDO.getSpec()); + matReqDetailDO.setBoomUnit(materialDO.getUnit()); + } + matReqDetailDO.setBoomAmount(boomDO.getBoomAmount()); + matReqDetailDO.setRequireTime(boomDO.getBoomArriveDate()); + matReqDetailDO.setProjectPlanSubId(plan.getProjectPlanSubId()); + matReqDetailDO.setName(plan.getName()); + matReqDetailDO.setNameSim(plan.getNameSim()); + matReqDetailDO.setMaterialId(materialPlanBoomDO.getMatId()); + matReqDetailDO.setProjectMaterialPlanDetailId(boomDO.getId()); + matReqDetailDO.setProjectMaterialPlanId(boomDO.getProjectMaterialPlanId()); + matReqDetailDOS.add(matReqDetailDO); + boomDO.setIsPurYard(3); + materialPlanBoomMapper.updateById(boomDO); + } + } + matReqDetailMapper.insertOrUpdateBatch(matReqDetailDOS); + return CommonResult.success(true); } } 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 2444837..8277f9d 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 @@ -394,6 +394,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { BdgzsomthingDO.setAttr7(processDesignDO.getProjectName()); BdgzsomthingDO.setAttr8(processDesignDO.getProjectSubName()); BdgzsomthingDO.setAttr9(processDesignProgressDO.getRemark()); + BdgzsomthingDO.setAttr13("1"); bdgzsomthingMapper.insert(BdgzsomthingDO); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java index c70d350..46f60d7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java @@ -74,4 +74,6 @@ public interface StorageLogService { PageResult getStorageNowPricePage(StorageLogPageReqVO pageReqVO); void updatePrice(StorageLogSaveReqVO updateReqVO); + + PageResult getSupplementPage(StorageLogPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java index bf95252..ace7101 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java @@ -214,4 +214,8 @@ public class StorageLogServiceImpl implements StorageLogService { materialMapper.update(wrapper); } + @Override + public PageResult getSupplementPage(StorageLogPageReqVO pageReqVO) { + return storageLogNowMapper.getSupplementPage(pageReqVO); } + } diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts index e7bd9a8..f77fe5d 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts @@ -67,3 +67,6 @@ export const deleteMaterial = async (id: number) => { export const exportMaterial = async (params) => { return await request.download({ url: `/heli/material/export-excel`, params }) } +export const getbzjList = async () => { + return await request.get({ url: `/heli/material/getbzjList` }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts index c0a348e..cc06ab1 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts @@ -82,3 +82,11 @@ export const getStandardPartsPages = async (params) => { export const operation = async (params) => { return await request.get({ url: `/heli/material-plan/operation`, params }) } +// 导出物料需求计划 Excel +export const exportStandardParts = async (params) => { + return await request.download({ url: `/heli/material-plan/exportStandardParts`, params }) +} + +export const supplement = async (data) => { + return await request.post({ url: `/heli/material-plan/supplement`, data }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagelog/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagelog/index.ts index 732495b..645665c 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagelog/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagelog/index.ts @@ -85,3 +85,8 @@ export const deleteStorageLog = async (id: number) => { export const exportStorageLog = async (params) => { return await request.download({ url: `/heli/storage-log/export-excel`, params }) } +// 查询入/出库实时分页 +export const getSupplementPage = async (params) => { + return await request.get({ url: `/heli/storage-log/getSupplementPage`, params }) +} + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/materialNewSelect.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/materialNewSelect.vue new file mode 100644 index 0000000..bea9558 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/materialNewSelect.vue @@ -0,0 +1,121 @@ + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/standardParts.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/standardParts.vue index fd78a73..c0cd0e2 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/standardParts.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/standardParts.vue @@ -64,8 +64,11 @@ @@ -84,9 +87,9 @@