diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/PurchaseOrderMakeController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/PurchaseOrderMakeController.java index 864ab65..c69155b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/PurchaseOrderMakeController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/PurchaseOrderMakeController.java @@ -118,5 +118,21 @@ public class PurchaseOrderMakeController { public CommonResult updatePartCheckNo(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) { return success(partPurchaseOrderService.updatePartCheckStatusNo(updateReqVO)); } - + @PutMapping("/reject") + @Operation(summary = "采购审批驳回") + public CommonResult reject(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) { + return success(partPurchaseOrderService.reject(updateReqVO)); + } + @PutMapping("/approval") + @Operation(summary = "采购单批准") + public CommonResult approval(@RequestParam("id") Long id) { + return success(partPurchaseOrderService.approval(id)); + } + @GetMapping("/getDetail") + @Operation(summary = "获得采购单明细") +// @PreAuthorize("@ss.hasPermission('heli:material-plan:query')") + public CommonResult> getDetail(@Valid PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO) { + PageResult pageResult = partPurchaseOrderService.getDetail(partPurchaseOrderPageReqVO); + return success(pageResult); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/PurchaseOrderNoController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/PurchaseOrderNoController.java index 11c574a..df99e83 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/PurchaseOrderNoController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/PurchaseOrderNoController.java @@ -158,4 +158,5 @@ public class PurchaseOrderNoController { public CommonResult deleteForm(@RequestParam("id") Long id) { return purchaseOrderNoService.deleteForm(id); } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java index 663b457..1c0bd79 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java @@ -1,5 +1,8 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail; +import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderno.vo.PurchaseOrderNoPageReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderno.vo.PurchaseOrderNoRespVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -111,5 +114,23 @@ public class PurchaseOrderNoDetailController { public CommonResult receiveGoods(@Valid @RequestBody List list) { return purchaseOrderNoDetailService.receiveGoods(list); } - + @GetMapping("/received") + @Operation(summary = "获得标准件收货分页") + @PreAuthorize("@ss.hasPermission('project:purchase-order-no-detail:query')") + public CommonResult> received(@Valid PurchaseOrderNoDetailPageReqVO pageReqVO) { + PageResult pageResult = purchaseOrderNoDetailService.received(pageReqVO); + return success(pageResult); + } + @GetMapping("/exportReceived") + @Operation(summary = "导出采购订单主 Excel") + @PreAuthorize("@ss.hasPermission('project:purchase-order-no:export')") + @OperateLog(type = EXPORT) + public void exportPurchaseOrderNoExcel(@Valid PurchaseOrderNoDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = purchaseOrderNoDetailService.received(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "标准件收货.xlsx", "数据", ReceivedExcelVo.class, + BeanUtils.toBean(list, ReceivedExcelVo.class)); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/PurchaseOrderNoDetailPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/PurchaseOrderNoDetailPageReqVO.java index ea8ad79..f71074b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/PurchaseOrderNoDetailPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/PurchaseOrderNoDetailPageReqVO.java @@ -114,5 +114,10 @@ public class PurchaseOrderNoDetailPageReqVO extends PageParam { @Schema(description = "责任人id", example = "30495") private Long duEmpId; - + @Schema(description = "子项目名称") + private String projectSubName; + @Schema(description = "项目编码") + private String projectCode; + @Schema(description = "项目编码") + private Integer goodsType; } \ 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/purchaseordernodetail/vo/ReceivedExcelVo.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/ReceivedExcelVo.java new file mode 100644 index 0000000..3c45726 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/ReceivedExcelVo.java @@ -0,0 +1,50 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.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; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * Excel 导入 VO + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免BOM导入有问题 +public class ReceivedExcelVo { + @ExcelProperty("子项目编码") + private String projectSubCode; + + @ExcelProperty("物料编码") + private String matCode; + @ExcelProperty("标准件名称") + private String boomName; + @ExcelProperty("规格型号") + private String boomSpec; + @ExcelProperty("需求数量") + private String boomAmount; + @ExcelProperty("采购数量") + private String purchaseAmount; + + @ExcelProperty("剩余数量") + private String purchaseRemAmount; + @ExcelProperty("需求完成时间") + private String requireTimes; + @ExcelProperty("计划到货日期") + private String arriveTimes; + @ExcelProperty("供应商") + private String supplierName; + @ExcelProperty("价格") + private String estimatedPrice; + @ExcelProperty(value = "订单状态", converter = DictConvert.class) + @DictFormat("heli_purchase_receiving_status") + private String receivingStatus; + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagein/StorageInController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagein/StorageInController.java index c4dadaa..b207ac8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagein/StorageInController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagein/StorageInController.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.storagein; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -96,9 +97,20 @@ public class StorageInController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('heli:storage-in:query')") public CommonResult isPrint(@RequestParam("id") Long id) { - return success(storageInService.isPrint(id)); } - + @PostMapping("/standardPartsReceived") + @Operation(summary = "标准件收货") + @PreAuthorize("@ss.hasPermission('heli:storage-in:query')") + public CommonResult standardPartsReceived(@Valid @RequestBody List list) { + return storageInService.standardPartsReceived(list); + } + @GetMapping("/warehousing") + @Operation(summary = "采购入库") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:storage-in:query')") + public CommonResult warehousing(@RequestParam("id") Long id) { + return storageInService.warehousing(id); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagein/vo/StorageInRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagein/vo/StorageInRespVO.java index f579e58..28e595e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagein/vo/StorageInRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagein/vo/StorageInRespVO.java @@ -1,14 +1,10 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.storagein.vo; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.time.LocalDate; -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.*; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java index b1bdfbd..503176e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java @@ -184,6 +184,10 @@ public class PurchaseOrderNoDetailDO extends BaseDO { @TableField(exist = false) private String matType; @TableField(exist = false) + private String supplierName; + @TableField(exist = false) + private String purchaseNo; + @TableField(exist = false) private BigDecimal matRest; @TableField(exist = false) private BigDecimal unitPrice; @@ -200,4 +204,13 @@ public class PurchaseOrderNoDetailDO extends BaseDO { private String compositionName; @TableField(exist = false) private String procedureName; + /** + * 入库数量 + */ + @TableField(exist = false) + private Date boomArriveDates; + @TableField(exist = false) + private String arriveTimes; + @TableField(exist = false) + private String requireTimes; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storageindetail/StorageInDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storageindetail/StorageInDetailDO.java index 3ff66e2..009a54b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storageindetail/StorageInDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storageindetail/StorageInDetailDO.java @@ -142,6 +142,18 @@ public class StorageInDetailDO extends BaseDO { * 供应商id */ private Long supplierId; + /** + * 采购单明细id + */ + private Long purchaseOrderNoDetailId; + /** + * 采购单明细id + */ + private Long purchaseOrderNoId; + /** + * 到货日期 + */ + private Date acarrDate; /** * 入库数量 */ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java index a60612a..dcfc88f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java @@ -227,7 +227,7 @@ public interface ProcessBomDetailMapper extends BaseMapperX // .eq(MaterialPlanBoomDO::getDeleted,0) // .eq(MaterialPlanDO::getDeleted,0); if (ObjectUtils.isEmpty(pageReqVO.getProjectMaterialPlanNo())) { - query.eq(ProcessBomDO::getBomStatus,"2") + query.eq(ProcessBomDO::getBomStatus,"7") .ne(ProjectOrderDO::getOrderStatus,"64") .eq(ProcessBomDetailDO::getType,"1"); ; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java index c51fc36..c87a2a5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java @@ -86,6 +86,7 @@ public interface PurchaseOrderMakeMapper extends BaseMapperX getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(PurchaseOrderMakeDetailDO.class) + .select(PurchaseOrderMakeDO::getContractNo, + PurchaseOrderMakeDO::getGoodsType, + PurchaseOrderMakeDO::getBrief, + PurchaseOrderMakeDO::getProjectName, + PurchaseOrderMakeDO::getProjectNameSim, + PurchaseOrderMakeDO::getStatus) + .select("c.nickname as duEmpName") + .select("d.name as supplierName") + .select("e.name as procedureName") + .leftJoin(PurchaseOrderMakeDO.class,"a",PurchaseOrderMakeDO::getId,PurchaseOrderMakeDetailDO::getPurchaseOrderId) + .leftJoin(ProjectOrderDO.class,"b",ProjectOrderDO::getId,PurchaseOrderMakeDO::getProjectId) + .leftJoin(AdminUserDO.class,"c", AdminUserDO::getId,PurchaseOrderMakeDetailDO::getDuEmpId) + .leftJoin(SupplierDO.class, "d", SupplierDO::getId,PurchaseOrderMakeDetailDO::getSupplierId) + .leftJoin(ProcedureDO.class, "e", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId) + .disableLogicDel() + .disableSubLogicDel() + .eq(Objects.nonNull(partPurchaseOrderPageReqVO.getPurchaseOrderId()), PurchaseOrderMakeDO::getId, partPurchaseOrderPageReqVO.getPurchaseOrderId()) + .eq(StringUtils.isNotBlank(partPurchaseOrderPageReqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, partPurchaseOrderPageReqVO.getContractNo()) + .eq(Objects.nonNull(partPurchaseOrderPageReqVO.getDocumentStatus()), PurchaseOrderMakeDO::getStatus, partPurchaseOrderPageReqVO.getDocumentStatus()) + .like(StringUtils.isNotBlank(partPurchaseOrderPageReqVO.getProjectName()), PurchaseOrderMakeDO::getProjectName, partPurchaseOrderPageReqVO.getProjectName()) + .like(StringUtils.isNotBlank(partPurchaseOrderPageReqVO.getProjectSubName()), PurchaseOrderMakeDetailDO::getName, partPurchaseOrderPageReqVO.getProjectSubName()) + .like(StringUtils.isNotBlank(partPurchaseOrderPageReqVO.getMaterialName()), PurchaseOrderMakeDetailDO::getBoomName, partPurchaseOrderPageReqVO.getMaterialName()) + .eq(Objects.nonNull(partPurchaseOrderPageReqVO.getStatus()), PurchaseOrderMakeDetailDO::getOrderStatus, partPurchaseOrderPageReqVO.getStatus()) + .eq(Objects.nonNull(partPurchaseOrderPageReqVO.getProjectCode()), ProjectOrderDO::getCode, partPurchaseOrderPageReqVO.getProjectCode()) + .like(Objects.nonNull(partPurchaseOrderPageReqVO.getOwnerName()), AdminUserDO::getNickname, partPurchaseOrderPageReqVO.getOwnerName()) + .like(Objects.nonNull(partPurchaseOrderPageReqVO.getSupplierName()), SupplierDO::getName, partPurchaseOrderPageReqVO.getSupplierName()); + + String sqlStr= query.getTargetSql(); + + PageResult pageResult = selectJoinPage(partPurchaseOrderPageReqVO, PartPurchaseOrderPageRespVO.class, query); + return pageResult; + } } 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 f550741..853c1c7 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 @@ -9,10 +9,12 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.Pro import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial.vo.PurchaseOrderMaterialPageReqVO; 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.materialplan.MaterialPlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO; 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.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderboom.PurchaseOrderBoomDO; @@ -20,10 +22,13 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermaterial.Pur 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.storagelogNow.StorageMaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; +import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo.*; import org.springframework.beans.PropertyValues; +import org.springframework.util.StringUtils; /** * 采购订单明细 Mapper @@ -80,4 +85,28 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX received(PurchaseOrderNoDetailPageReqVO pageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + + query.selectAll(PurchaseOrderNoDetailDO.class) + .select("s.name as supplierName","m.code as matCode","p.purchase_no as purchaseNo","t.purchase_rem_amount as purchaseRemAmounts") + .select("DATE_FORMAT(t.require_time,'%Y-%m-%d') as requireTimes","DATE_FORMAT(t.arrive_time,'%Y-%m-%d') as arriveTimes") + .leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getId, PurchaseOrderNoDetailDO::getPurchaseOrderId) + .leftJoin(SupplierDO.class, "s", SupplierDO::getId, PurchaseOrderNoDO::getSupplierId) + .leftJoin(MaterialDO.class,"m", MaterialDO::getId, PurchaseOrderNoDetailDO::getMaterialId) + .leftJoin(ProjectOrderDO.class,"pro", ProjectOrderDO::getId, PurchaseOrderNoDetailDO::getProjectId) + .disableSubLogicDel() + .groupBy(PurchaseOrderNoDetailDO::getId) + .orderByDesc(PurchaseOrderNoDetailDO::getCreateTime); + query + .eq(pageReqVO.getReceivingStatus() != null, PurchaseOrderNoDetailDO::getReceivingStatus, pageReqVO.getReceivingStatus()) + .eq(pageReqVO.getGoodsType() != null, PurchaseOrderNoDO::getGoodsType, pageReqVO.getGoodsType()) + .like(!StringUtils.isEmpty(pageReqVO.getProjectName()), PurchaseOrderNoDetailDO::getProjectName, pageReqVO.getProjectName()) + .like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), PurchaseOrderNoDetailDO::getName, pageReqVO.getProjectSubName()) + .like(!StringUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode()) + .like(!StringUtils.isEmpty(pageReqVO.getBoomName()), PurchaseOrderNoDetailDO::getBoomName, pageReqVO.getBoomName()); + + 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/storageindetail/StorageInDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storageindetail/StorageInDetailMapper.java index d37e4c6..d10a606 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storageindetail/StorageInDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storageindetail/StorageInDetailMapper.java @@ -65,6 +65,7 @@ public interface StorageInDetailMapper extends BaseMapperX { .leftJoin(SupplierDO.class,"sup", SupplierDO::getId, StorageInDetailDO::getSupplierId) .leftJoin(MaterialDO.class,"m", MaterialDO::getId, StorageInDetailDO::getMaterialId) .groupBy(StorageInDetailDO::getId) + .disableSubLogicDel() .orderByDesc(StorageInDetailDO::getCreateTime); query.eq(pageReqVO.getStorageNoId() != null, StorageInDetailDO::getStorageNoId, pageReqVO.getStorageNoId()); return selectPage(pageReqVO, query); 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 434af8f..1758476 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 @@ -372,10 +372,16 @@ public class MaterialPlanServiceImpl implements MaterialPlanService { break; case "caigou": if (boomDO.getIsPurYard()!=1) return CommonResult.error(400,"该物料信息状态非库存状态,请刷新界面!"); - boomDO.setIsPurYard(5); +// boomDO.setIsPurYard(5); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(MaterialPlanBoomDO::getId,pageReqVO.getId()) + .set(MaterialPlanBoomDO::getIsPurYard,5) + .set(MaterialPlanBoomDO::getMaterialId,null) + .set(MaterialPlanBoomDO::getMatRest,0); + materialPlanBoomMapper.update(wrapper); break; } - materialPlanBoomMapper.updateById(boomDO); + if (!"caigou".equals(pageReqVO.getType())) materialPlanBoomMapper.updateById(boomDO); } return CommonResult.success(true); } 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 37882b9..3752174 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 @@ -139,6 +139,7 @@ public class MatReqServiceImpl implements MatReqService { matReqDO.setProjectName(planDO.getProjectName()); matReqDO.setCustomerId(planDO.getCustomerId()); matReqDO.setReqDate(LocalDate.now()); + matReqDO.setProjectPlanId(planDO.getProjectPlanId()); matReqMapper.insert(matReqDO); List matReqDetailDOS = new ArrayList<>(); for (MaterialPlanBoomDO materialPlanBoomDO : list) { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderService.java index 47ee9d9..eab5530 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderService.java @@ -56,4 +56,10 @@ public interface PartPurchaseOrderService { * @return 更新采购单审批状态 */ boolean updatePartCheckStatusNo(PurchaseOrderMakeSaveReqVO updateReqVO); + + Boolean reject(PurchaseOrderMakeSaveReqVO updateReqVO); + + Boolean approval(Long id); + + PageResult getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java index bf32841..1c45a4b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java @@ -1,6 +1,8 @@ package com.chanko.yunxi.mes.module.heli.service.partpurchaseorder; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.mybatis.core.query.QueryWrapperX; @@ -26,12 +28,15 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; import java.util.List; +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PURCHASE_ORDER; @Service @@ -154,4 +159,61 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ return true; } + + @Override + public Boolean reject(PurchaseOrderMakeSaveReqVO updateReqVO) { + PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(updateReqVO.getId()); + if (orderMakeDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!")); + + PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); + purchaseOrderMakeDO.setId(updateReqVO.getId()); + purchaseOrderMakeDO.setStatus(3); + purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO); + purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId()); + purchaseOrderMakeDetailMapper.delete(wrapper); + List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId()); + materialPlanBoomDOs.forEach(materialPlanBoom -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", materialPlanBoom.getId()) + .set("mplan_status", 3) + .set("project_purchase_order_make_id", null) + .set("purchase_no", null) + .set("project_purchase_order_make_detail_id", null) + .set("purchase_amount", BigDecimal.ZERO) + .set("estimated_price", BigDecimal.ZERO) + .set("arrive_time",null) + .set("supplier_id", null); + materialPlanBoomMapper.update(updateWrapper); + }); + return true; + } + + @Override + public Boolean approval(Long id) { + PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(id); + if (orderMakeDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!")); + PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); + purchaseOrderMakeDO.setId(id); + purchaseOrderMakeDO.setStatus(2); + purchaseOrderMakeDO.setAuditTime(LocalDateTime.now()); + purchaseOrderMakeDO.setAuditor(getLoginUser().getId()); + purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO); + + List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", id); + materialPlanBoomDOs.forEach(materialPlanBoomDO -> { + MaterialPlanBoomDO materialPlanBoom = new MaterialPlanBoomDO(); + materialPlanBoom.setId(materialPlanBoomDO.getId()); + materialPlanBoom.setMplanStatus(2); + materialPlanBoomMapper.updateById(materialPlanBoom); + }); + return true; + } + + @Override + public PageResult getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO) { + return purchaseOrderMakeDetailMapper.getDetail(partPurchaseOrderPageReqVO); + + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java index 1c43da7..67daa82 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java @@ -59,4 +59,6 @@ public interface PurchaseOrderNoDetailService { CommonResult verification(List list); CommonResult receiveGoods(List list); + + PageResult received(PurchaseOrderNoDetailPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java index 255e4b1..956801c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java @@ -180,4 +180,9 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe return success(true); } + @Override + public PageResult received(PurchaseOrderNoDetailPageReqVO pageReqVO) { + return purchaseOrderNoDetailMapper.received(pageReqVO); + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInService.java index d3e5ee8..cf8c289 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInService.java @@ -1,10 +1,15 @@ package com.chanko.yunxi.mes.module.heli.service.storagein; import javax.validation.*; + +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.storagein.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagein.StorageInDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import java.util.List; + /** * 入库单 Service 接口 * @@ -52,4 +57,8 @@ public interface StorageInService { StorageInDO isPrint(Long id); + + CommonResult standardPartsReceived(List list); + + CommonResult warehousing(Long id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java index 1eefd19..d0f20f5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java @@ -3,18 +3,27 @@ package com.chanko.yunxi.mes.module.heli.service.storagein; 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.controller.admin.storageindetail.vo.StorageInDetailPageReqVO; +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.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageindetail.StorageInDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storageindetail.StorageInDetailMapper; +import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import com.sun.corba.se.spi.ior.IdentifiableFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; + import com.chanko.yunxi.mes.module.heli.controller.admin.storagein.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagein.StorageInDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; @@ -24,6 +33,8 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagein.StorageInMapper; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PURCHASE_ORDER; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -41,6 +52,10 @@ public class StorageInServiceImpl implements StorageInService { private StorageInDetailMapper storageInDetailMapper; @Resource private PurchaseOrderNoDetailMapper purchaseOrderNoDetailMapper; + @Resource + private SerialNumberService serialNumberService; + @Resource + private PurchaseOrderNoMapper purchaseOrderNoMapper; @Override public Long createStorageIn(StorageInSaveReqVO createReqVO) { // 插入 @@ -70,21 +85,20 @@ public class StorageInServiceImpl implements StorageInService { if (ObjectUtil.isNotEmpty(storageInDetailDOS)){ for (StorageInDetailDO storageInDetailDO : storageInDetailDOS) { LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); - wrapper1.eq(PurchaseOrderNoDetailDO::getStorageId,storageInDetailDO.getStorageNoId()); - wrapper1.eq(PurchaseOrderNoDetailDO::getStorageMatId,storageInDetailDO.getId()); + wrapper1.eq(PurchaseOrderNoDetailDO::getId,storageInDetailDO.getPurchaseOrderNoDetailId()); PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectOne(wrapper1); if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){ LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(PurchaseOrderNoDetailDO::getId,purchaseOrderNoDetailDO.getId()); updateWrapper.set(PurchaseOrderNoDetailDO::getStorageId,null); updateWrapper.set(PurchaseOrderNoDetailDO::getStorageMatId,null); - + purchaseOrderNoDetailDO.setPurchaseRemAmount(purchaseOrderNoDetailDO.getPurchaseRemAmount().add(storageInDetailDO.getStorageAmount())); if (purchaseOrderNoDetailDO.getPurchaseAmount().compareTo(purchaseOrderNoDetailDO.getPurchaseRemAmount())==0){ updateWrapper.set(PurchaseOrderNoDetailDO::getReceivingStatus,1); }else { updateWrapper.set(PurchaseOrderNoDetailDO::getReceivingStatus,2); } - updateWrapper.set(PurchaseOrderNoDetailDO::getPurchaseRemAmount,purchaseOrderNoDetailDO.getPurchaseRemAmount().add(storageInDetailDO.getStorageAmount())); + updateWrapper.set(PurchaseOrderNoDetailDO::getPurchaseRemAmount,purchaseOrderNoDetailDO.getPurchaseRemAmount()); purchaseOrderNoDetailMapper.update(updateWrapper); } } @@ -123,4 +137,132 @@ public class StorageInServiceImpl implements StorageInService { return storageInDO; } + @Override + public CommonResult standardPartsReceived(List list) { + List idList = list.stream() + .filter(Objects::nonNull) // 过滤空对象 + .map(PurchaseOrderNoDetailDO::getId) + .filter(Objects::nonNull) // 过滤空ID + .collect(Collectors.toList()); + Map idToRemAmountMap = list.stream() + .collect(Collectors.toMap( + PurchaseOrderNoDetailDO::getId, // 键:id + PurchaseOrderNoDetailDO::getPurchaseRemAmounts, // 值:purchaseRemAmounts + (existing, replacement) -> existing // 键冲突时处理策略(保留现有值) + )); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(PurchaseOrderNoDetailDO::getId,idList); + List purchaseOrderNoDetailDOS = purchaseOrderNoDetailMapper.selectList(lambdaQueryWrapper); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDOS)) { + for (PurchaseOrderNoDetailDO purchaseOrderNoDetailDO : purchaseOrderNoDetailDOS){ + BigDecimal amount = (purchaseOrderNoDetailDO.getId() != null) + ? idToRemAmountMap.getOrDefault(purchaseOrderNoDetailDO.getId(), BigDecimal.ZERO) + : BigDecimal.ZERO; + if (purchaseOrderNoDetailDO.getPurchaseRemAmount().compareTo(amount)<0){ + return CommonResult.error(400,"标准件名称"+purchaseOrderNoDetailDO.getBoomName()+"剩余数量"+purchaseOrderNoDetailDO.getPurchaseRemAmount()+"小于入库数量"+amount+"请确认!"); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,purchaseOrderNoDetailDO.getId()); + wrapper.eq(StorageInDetailDO::getDeleted,0); + List storageInDetailDOS = storageInDetailMapper.selectList(wrapper); + if (ObjectUtil.isNotEmpty(storageInDetailDOS)){ + BigDecimal StorageAmount = storageInDetailDOS.stream() + .filter(Objects::nonNull) // 过滤掉空对象 + .map(StorageInDetailDO::getStorageAmount) + .filter(Objects::nonNull) // 过滤掉空值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 + BigDecimal sum = StorageAmount.add(amount); + if (sum.compareTo(purchaseOrderNoDetailDO.getBoomAmount())>0){ + return CommonResult.error(400,"标准件名称"+purchaseOrderNoDetailDO.getBoomName()+"入库数量"+sum+"+本次入库数量"+amount+"大于需求数量"+purchaseOrderNoDetailDO.getBoomAmount()+"请确认!"); + } + } + } + } + StorageInDO storageInDO = new StorageInDO(); + + // 月度流水号 + SerialNumberDO serialNumberDO = new SerialNumberDO(); + serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + storageInDO.setStorageNo(STOCK_IN.getCode(serialNumberDO.getSerialNumber().toString())); + storageInDO.setGoodsType(1); + storageInDO.setStatus(1); + storageInDO.setIsPrint("N"); + storageInDO.setOrdDate(new Date()); + storageInMapper.insert(storageInDO); + List storageInDetailDOList = new ArrayList<>(); + for (PurchaseOrderNoDetailDO orderNoDetailDO : list) { + StorageInDetailDO storageInDetailDO = new StorageInDetailDO(); + storageInDetailDO.setStorageNoId(storageInDO.getId()); + storageInDetailDO.setProjectSubCode(orderNoDetailDO.getProjectSubCode()); + storageInDetailDO.setBoomDetailId(orderNoDetailDO.getBoomDetailId()); + storageInDetailDO.setBoomName(orderNoDetailDO.getBoomName()); + storageInDetailDO.setBoomSpec(orderNoDetailDO.getBoomSpec()); + storageInDetailDO.setBoomUnit(orderNoDetailDO.getBoomUnit()); + storageInDetailDO.setComposition(orderNoDetailDO.getComposition()); + storageInDetailDO.setPurchaseAmount(orderNoDetailDO.getPurchaseAmount()); + storageInDetailDO.setEstimatedPrice(orderNoDetailDO.getEstimatedPrice()); + storageInDetailDO.setActualPrice(orderNoDetailDO.getActualPrice()); + storageInDetailDO.setBoomAmount(orderNoDetailDO.getBoomAmount()); + storageInDetailDO.setRequireTime(orderNoDetailDO.getRequireTime()); + storageInDetailDO.setProjectMaterialPlanId(orderNoDetailDO.getProjectMaterialPlanId()); + storageInDetailDO.setProjectMaterialPlanBoomId(orderNoDetailDO.getProjectMaterialPlanBoomId()); + storageInDetailDO.setProjectPlanSubId(orderNoDetailDO.getProjectPlanSubId()); + storageInDetailDO.setName(orderNoDetailDO.getName()); + storageInDetailDO.setNameSim(orderNoDetailDO.getNameSim()); + storageInDetailDO.setProjectId(orderNoDetailDO.getProjectId()); + storageInDetailDO.setProjectPlanId(orderNoDetailDO.getProjectPlanId()); + storageInDetailDO.setCustomerId(orderNoDetailDO.getCustomerId()); + storageInDetailDO.setBrief(orderNoDetailDO.getBrief()); + storageInDetailDO.setProjectName(orderNoDetailDO.getProjectName()); + storageInDetailDO.setProjectNameSim(orderNoDetailDO.getProjectNameSim()); + storageInDetailDO.setMaterialId(orderNoDetailDO.getMaterialId()); + storageInDetailDO.setStorageAmount(orderNoDetailDO.getPurchaseRemAmounts()); + PurchaseOrderNoDO purchaseOrderNoDO = purchaseOrderNoMapper.selectById(orderNoDetailDO.getPurchaseOrderId()); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDO)){ + storageInDetailDO.setSupplierId(purchaseOrderNoDO.getSupplierId()); + } + storageInDetailDO.setPurchaseOrderNoId(orderNoDetailDO.getPurchaseOrderId()); + storageInDetailDO.setPurchaseOrderNoDetailId(orderNoDetailDO.getId()); + storageInDetailDO.setAcarrDate(new Date()); + if (orderNoDetailDO.getPurchaseRemAmount().compareTo(orderNoDetailDO.getPurchaseRemAmounts())==0){ + orderNoDetailDO.setReceivingStatus(3); + }else { + orderNoDetailDO.setReceivingStatus(2); + } + orderNoDetailDO.setPurchaseRemAmount(orderNoDetailDO.getPurchaseRemAmount().subtract(orderNoDetailDO.getPurchaseRemAmounts())); + purchaseOrderNoDetailMapper.updateById(orderNoDetailDO); + storageInDetailDOList.add(storageInDetailDO); + } + storageInDetailMapper.insertBatch(storageInDetailDOList); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); + + return CommonResult.success(true); + } + + @Override + public CommonResult warehousing(Long id) { + PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectById(id); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,id); + wrapper.eq(StorageInDetailDO::getDeleted,0); + List storageInDetailDOS = storageInDetailMapper.selectList(wrapper); + BigDecimal sum=BigDecimal.ZERO; + if (ObjectUtil.isNotEmpty(storageInDetailDOS)){ + sum = storageInDetailDOS.stream() + .filter(Objects::nonNull) // 过滤掉空对象 + .map(StorageInDetailDO::getStorageAmount) + .filter(Objects::nonNull) // 过滤掉空值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 + } + if (sum.compareTo(purchaseOrderNoDetailDO.getBoomAmount())!=0){ + return CommonResult.error(400,"该入库数量"+sum+"!=需求数量"+purchaseOrderNoDetailDO.getBoomAmount()+"请确认!"); + } + purchaseOrderNoDetailDO.setReceivingStatus(3); + purchaseOrderNoDetailDO.setPurchaseRemAmount(BigDecimal.ZERO); + purchaseOrderNoDetailMapper.updateById(purchaseOrderNoDetailDO); + return CommonResult.success(true); + } + } 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 7b7bb86..7bc5c22 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 @@ -153,13 +153,14 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { .filter(o -> o.getId() != null) .map(TaskDispatchDetailDO::getId) .collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(idList)){ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(TaskDispatchDetailDO::getId, idList); wrapper.eq(TaskDispatchDetailDO::getDeleted, 0); List detailDOS = taskDispatchDetailMapper.selectList(wrapper); - for (TaskDispatchDetailDO dispatchDetailDO : detailDOS) { + TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(updateObj.getId()); + for (TaskDispatchDetailDO dispatchDetailDO : detailDOS) { if (dispatchDetailDO.getPlanStatus()==1){ - TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(dispatchDetailDO.getDispatchId()); ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId()); ProcedureDO procedureDO = procedureMapper.selectById(dispatchDetailDO.getProcedureId()); if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){ @@ -167,6 +168,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } } } + } } // 明细工序状态更新 diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/partpurchaseorder/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/partpurchaseorder/index.ts index 66a2484..74c8023 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/partpurchaseorder/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/partpurchaseorder/index.ts @@ -3,7 +3,7 @@ import request from '@/config/axios' -export interface PartPurchaseOrderVO { +export interface PartVO { id: number projectMaterialPlanNo: string projectId: number @@ -45,3 +45,13 @@ export const updatePurchaseOrderMakeNo = async (params) => { return await request.put({ url: `/heli/purchase-order-make/updatePartCheckNo`, params }) } +export const reject = async (params) => { + return await request.put({ url: `/heli/purchase-order-make/reject`, params }) +} +export const approval = async (id: number) => { + return await request.put({ url: `/heli/purchase-order-make/approval?id=` + id }) +} +// 获取零件采购订单生成分页 +export const getDetail = async (params) => { + return await request.get({ url: `/heli/purchase-order-make/getDetail`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts index 099daf1..dbf22f6 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts @@ -73,3 +73,11 @@ export const verification = async (data) => { export const receiveGoods= async (data) => { return await request.post({ url: `/heli/purchase-order-no-detail/receiveGoods`, data }) } +// 查询采购订单明细分页 +export const received = async (params) => { + return await request.get({ url: `/heli/purchase-order-no-detail/received`, params }) +} +// 导出采购订单明细 Excel +export const exportReceived = async (params) => { + return await request.download({ url: `/heli/purchase-order-no-detail/exportReceived`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagein/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagein/index.ts index e9e9447..9b87e74 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagein/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagein/index.ts @@ -48,3 +48,11 @@ export const exportStorageIn = async (params) => { export const isPrint = async (id: number) => { return await request.get({ url: `/heli/storage-in/isPrint?id=` + id }) } +// 新增入库单 +export const standardPartsReceived = async (data: StorageInVO) => { + return await request.post({ url: `/heli/storage-in/standardPartsReceived`, data }) +} +// 查询入库单详情 +export const warehousing = async (id: number) => { + return await request.get({ url: `/heli/storage-in/warehousing?id=` + id }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/detail.vue new file mode 100644 index 0000000..84b3491 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/detail.vue @@ -0,0 +1,189 @@ + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/index.vue new file mode 100644 index 0000000..54d4a6d --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/index.vue @@ -0,0 +1,197 @@ + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/received.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/received.vue new file mode 100644 index 0000000..71e9938 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/received.vue @@ -0,0 +1,270 @@ + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue index 80c93c4..fab2d78 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue @@ -24,6 +24,7 @@ + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/supplemanagementdetail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/supplemanagementdetail.vue index 4314dfe..dc4a7b8 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/supplemanagementdetail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/supplemanagementdetail.vue @@ -91,7 +91,6 @@ const message = useMessage() // 消息弹窗 const { query } = useRoute() const router = useRouter() const tagsViewStore = useTagsViewStore() - const dialogVisible = ref(false) // 弹窗的是否展示 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formData = ref({ @@ -126,7 +125,7 @@ const subBoomFormRef = ref() const closeForm = async () => { - router.push({ path: '/purchase/management' }) + router.push({ path: '/inventory/supplementManagement' ,query: { ...query }}) tagsViewStore.delVisitedView(router.currentRoute.value) } const userList = ref([]) // 用户列表 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/supplementManagement.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/supplementManagement.vue index 27a584e..81c568e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/supplementManagement.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/supplementManagement.vue @@ -89,7 +89,7 @@ import * as UserApi from '@/api/system/user' import dayjs from "dayjs"; -defineOptions({ name: 'MaterialPlan' }) +defineOptions({ name: 'supplementManagement' }) const router = useRouter() const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 @@ -156,7 +156,6 @@ const openForm = (type: string, id?: number) => { router.push({ path: '/purchase/materialplanedit', query: { id: id } }) break; case 'detail': - console.log("0000") router.push({ path: '/inventory/supplemanagementdetail', query: { id: id } }) break; default: @@ -189,9 +188,12 @@ const userInit = ref() /** 初始化 **/ onMounted(async () => { userInit.value = await UserApi.getSimpleUserList() - //用户列表数据 setDefaultDate() getList() }) +onActivated(() => { + console.log(11) + getList() +})