diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomRespVO.java index e2101b7f..7f7e0f57 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomRespVO.java @@ -94,5 +94,8 @@ public class MaterialPlanBoomRespVO extends PageParam { @Schema(description = "物料id") @ExcelProperty("物料id") private Long matId; + @Schema(description = "采购单id") + @ExcelProperty("采购单id") + private Long projectPurchaseOrderMakeId; } \ 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/orderys/OrderYsController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/OrderYsController.java index 42c7dd64..538c7d60 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/OrderYsController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/OrderYsController.java @@ -66,9 +66,8 @@ public class OrderYsController { @Operation(summary = "获得应收记录") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('heli:order-ys:query')") - public CommonResult getOrderYs(@RequestParam("id") Integer id) { - OrderYsDO orderYs = orderYsService.getOrderYs(id); - return success(BeanUtils.toBean(orderYs, OrderYsRespVO.class)); + public CommonResult getOrderYs(@RequestParam("id") Integer id) { + return success(orderYsService.getOrderYs(id)); } @GetMapping("/page") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/vo/OrderYsRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/vo/OrderYsRespVO.java index 4a1886de..9d3c378e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/vo/OrderYsRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/vo/OrderYsRespVO.java @@ -59,14 +59,14 @@ public class OrderYsRespVO { @ExcelProperty("备注") private String rem; - private BigDecimal shouFuKuanBiLi; + private BigDecimal shouFuKuan; - private BigDecimal twoFuKuanBiLi; + private BigDecimal twoFuKuan; - private BigDecimal threeFuKuanBiLi; + private BigDecimal threeFuKuan; - private BigDecimal fourFuKuanBiLi; - private BigDecimal fiveFuKuanBiLi; - private BigDecimal sixFuKuanBiLi; + private BigDecimal fourFuKuan; + private BigDecimal fiveFuKuan; + private BigDecimal sixFuKuan; } \ 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/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 c69155b6..9bc9872c 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 @@ -1,9 +1,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.service.partpurchaseorder.PartPurchaseOrderService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -118,12 +116,12 @@ public class PurchaseOrderMakeController { public CommonResult updatePartCheckNo(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) { return success(partPurchaseOrderService.updatePartCheckStatusNo(updateReqVO)); } - @PutMapping("/reject") + @GetMapping("/reject") @Operation(summary = "采购审批驳回") - public CommonResult reject(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) { - return success(partPurchaseOrderService.reject(updateReqVO)); + public CommonResult reject(@RequestParam("id") Long id) { + return success(partPurchaseOrderService.reject(id)); } - @PutMapping("/approval") + @GetMapping("/approval") @Operation(summary = "采购单批准") public CommonResult approval(@RequestParam("id") Long id) { return success(partPurchaseOrderService.approval(id)); @@ -135,4 +133,23 @@ public class PurchaseOrderMakeController { PageResult pageResult = partPurchaseOrderService.getDetail(partPurchaseOrderPageReqVO); return success(pageResult); } + + @PostMapping("/createPurchaseOrderMakeAndDetail") + @Operation(summary = "零件采购单送审生成") + @PreAuthorize("@ss.hasPermission('heli:material-plan:query')") + public CommonResult createPurchaseOrderMakeAndDetail(@Valid @RequestBody List saveReqVOs) { + return success(partPurchaseOrderService.createPurchaseOrderMakeAndDetailBatch(saveReqVOs)); + } + @GetMapping("/review") + @Operation(summary = "小程序采购单审核分页") + @PreAuthorize("@ss.hasPermission('heli:purchase-order-make:query')") + public CommonResult> review(@Valid PurchaseOrderMakePageReqVO pageReqVO) { + PageResult pageResult = purchaseOrderMakeService.review(pageReqVO); + return success(BeanUtils.toBean(pageResult, PurchaseOrderMakeRespVO.class)); + } + @GetMapping("/obtainReviewDetails") + @Operation(summary = "小程序采购单审核详情") + public CommonResult obtainReviewDetails(@RequestParam("id") Long id) { + return partPurchaseOrderService.obtainReviewDetails(id); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/Log.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/Log.java new file mode 100644 index 00000000..e1f2800a --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/Log.java @@ -0,0 +1,13 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.Date; + +@Data +public class Log { + private String operation; + private String operationName; + private LocalDateTime operationTime; +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PartPurchaseOrderPageRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PartPurchaseOrderPageRespVO.java index a2bb011e..8dba46aa 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PartPurchaseOrderPageRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PartPurchaseOrderPageRespVO.java @@ -171,4 +171,8 @@ public class PartPurchaseOrderPageRespVO extends BaseDO { * 单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1 */ private Integer status; + private String isFoam; + private Long projectId; + private Long projectPlanId; + private String customerId; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeRespVO.java index ce5dc652..59d573a3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeRespVO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -101,5 +102,10 @@ public class PurchaseOrderMakeRespVO { @Schema(description = "项目名称简码") @ExcelProperty("项目名称简码") private String projectNameSim; - + @Schema(description = "送审人姓名") + @ExcelProperty("送审人姓名") + private String submitUserName; + @Schema(description = "采购单类型") + @ExcelProperty("采购单类型") + private String purchaseOrderType; } \ 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/purchaseordermake/vo/PurchaseOrderMakeSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeSaveReqVO.java index 8737291a..d368d564 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeSaveReqVO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -79,4 +80,59 @@ public class PurchaseOrderMakeSaveReqVO { @Schema(description = "驳回原因") private String reason; + @Schema(description = "工艺boom明细id,零件类型:加工件") + private Long boomDetailId; + + @Schema(description = "零件名称") + private String matName; + + @Schema(description = "规格型号") + private String boomSpec; + + @Schema(description = "系统单位") + private String unit; + + @Schema(description = "材质") + private String compositionName; + + @Schema(description = "采购数量") + private BigDecimal purchaseAmount; + + @Schema(description = "预计到货日期") + private LocalDateTime arriveTime; + + @Schema(description = "需求数量") + private BigDecimal boomAmount; + + @Schema(description = "需求到货日期") + private LocalDateTime boomArriveDate; + + @Schema(description = "供应商id") + private Long supplierId; + + @Schema(description = "物料需求计划id") + private Long projectMaterialPlanId; + + @Schema(description = "订单子项目id") + private Long projectPlanSubId; + + @Schema(description = "子项目名称") + private String projectSubName; + + @Schema(description = "子项目简码") + private String projectSubNameSim; + @Schema(description = "工序id") + private Long procedureId; + @Schema(description = "理论重量") + private BigDecimal theWeight; + /** + * 责任人id + */ + private Long duEmpId; + + /** + * 泡沫 + */ + private String isFoam; + } 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 2d259610..9b5b2a62 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 @@ -177,4 +177,40 @@ public class MaterialPlanBoomDO extends BaseDO { */ @TableField(exist = false) private String brief; + + /** + * 客户id + */ + @TableField(exist = false) + private Long customerId; + + /** + * 项目简码 + */ + @TableField(exist = false) + private String projectNameSim; + + /** + * 子项目简码 + */ + @TableField(exist = false) + private String projectSubNameSim; + @TableField(exist = false) + private BigDecimal purchaseAmounts; + @TableField(exist = false) + private Long supplierIds; + @TableField(exist = false) + private BigDecimal estimatedPrices; + @TableField(exist = false) + private LocalDateTime arriveTimes; + @TableField(exist = false) + private String descriptions; + @TableField(exist = false) + private BigDecimal theWeight; + /** + * 泡沫否 Y 是 N 否 + */ + @TableField(exist = false) + private String isFoams; + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/orderys/OrderYsDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/orderys/OrderYsDO.java index b07cbb89..16157743 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/orderys/OrderYsDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/orderys/OrderYsDO.java @@ -70,17 +70,17 @@ public class OrderYsDO extends BaseDO { private BigDecimal amount; @TableField(exist = false) - private BigDecimal shouFuKuanBiLi; + private BigDecimal shouFuKuan; @TableField(exist = false) - private BigDecimal twoFuKuanBiLi; + private BigDecimal twoFuKuan; @TableField(exist = false) - private BigDecimal threeFuKuanBiLi; + private BigDecimal threeFuKuan; @TableField(exist = false) - private BigDecimal fourFuKuanBiLi; + private BigDecimal fourFuKuan; @TableField(exist = false) - private BigDecimal fiveFuKuanBiLi; + private BigDecimal fiveFuKuan; @TableField(exist = false) - private BigDecimal sixFuKuanBiLi; + private BigDecimal sixFuKuan; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermake/PurchaseOrderMakeDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermake/PurchaseOrderMakeDO.java index 231311e4..b26c3f08 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermake/PurchaseOrderMakeDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermake/PurchaseOrderMakeDO.java @@ -1,5 +1,7 @@ package com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake; +import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.Log; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; import lombok.*; import java.util.*; import java.math.BigDecimal; @@ -111,5 +113,12 @@ public class PurchaseOrderMakeDO extends BaseDO { * 项目名称简码 */ private String projectNameSim; - + @TableField(exist = false) + private String submitUserName; + @TableField(exist = false) + private List purchaseOrderMakeDetailDOList; + @TableField(exist = false) + private List logList; + @TableField(exist = false) + private String purchaseOrderType; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermakedetail/PurchaseOrderMakeDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermakedetail/PurchaseOrderMakeDetailDO.java index fe213893..8cac7be8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermakedetail/PurchaseOrderMakeDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermakedetail/PurchaseOrderMakeDetailDO.java @@ -156,5 +156,15 @@ public class PurchaseOrderMakeDetailDO extends BaseDO { */ @TableField(exist = false) private Long materialId; + /** + * 工序名称 + */ + @TableField(exist = false) + private Long procedureName; + + /** + * 泡沫 + */ + private String isFoam; } 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 cb738795..76336aae 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 @@ -20,6 +20,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; @@ -206,10 +207,15 @@ public interface MaterialPlanBoomMapper extends BaseMapperX default PageResult getPartsPages(MaterialPlanPageReqVO pageReqVO){ MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(MaterialPlanBoomDO.class) - .select("p.project_name as projectName","p.name as projectSubName") - .select("d.blueprint_no as blueprintNo","d.unit as unit","f.name as supplierName") + .select("p.project_name as projectName","p.name as projectSubName","p.name_sim as projectSubNameSim") + .select("d.spec as boomSpec","d.blueprint_no as blueprintNo","d.unit as unit","f.name as supplierName") .select("a.nickname as duEmpName","c.name as procedureName","e.name as compositionName") - .select(MaterialPlanDO::getBrief) + .select("m.the_weight as theWeight") + .select("COALESCE(m.purchase_amount, t.boom_amount) AS purchaseAmounts,m.supplier_id as supplierIds,m.estimated_price as estimatedPrices") + .select("m.arrive_time as arriveTimes,m.description as descriptions") + .select("m.is_foam as isFoams") + .leftJoin(PurchaseOrderMakeDetailDO.class,"m",PurchaseOrderMakeDetailDO::getId,MaterialPlanBoomDO::getProjectPurchaseOrderMakeDetailId) + .select(MaterialPlanDO::getBrief, MaterialPlanDO::getCustomerId, MaterialPlanDO::getProjectId, MaterialPlanDO::getProjectNameSim) .leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId) .leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId) .leftJoin(AdminUserDO.class, "a", AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId) @@ -226,9 +232,19 @@ public interface MaterialPlanBoomMapper extends BaseMapperX .like(!StringUtils.isEmpty(pageReqVO.getDuEmpName()), AdminUserDO::getNickname, pageReqVO.getDuEmpName()) .eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType()) .eq(!StringUtils.isEmpty(pageReqVO.getStatus()), MaterialPlanBoomDO::getIsPurYard, pageReqVO.getStatus()) - .in(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus() != 0 ? Arrays.asList(pageReqVO.getMplanStatus()) : Arrays.asList(0, 3)) + .in(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus() != null && pageReqVO.getMplanStatus() != 0 ? Arrays.asList(pageReqVO.getMplanStatus()) : Arrays.asList(0, 3)) .eq(Objects.nonNull(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo()); + if (Objects.nonNull(pageReqVO.getMplanStatus())) { + // 根据 mplanStatus 的值动态设置排序字段 + if (pageReqVO.getMplanStatus() == 1) { + query.orderByDesc(MaterialPlanBoomDO::getPurchaseNo); + } else { + query.orderByAsc(MaterialPlanBoomDO::getCreateTime); + + } + } + PageResult pageResult = selectPage(pageReqVO, query); return pageResult; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java index 936c82f5..113b57b4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java @@ -50,8 +50,8 @@ public interface OrderYsMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(OrderYsDO.class) .select("sum(i.amount) as amount") - .select("p.shou_Fu_Kuan_Bi_Li as shouFuKuanBiLi","p.two_Fu_Kuan_Bi_Li as twoFuKuanBiLi","p.three_Fu_Kuan_Bi_Li as threeFuKuanBiLi") - .select("p.four_Fu_Kuan_Bi_Li as fourFuKuanBiLi","p.five_Fu_Kuan_Bi_Li as fiveFuKuanBiLi","p.six_Fu_Kuan_Bi_Li as sixFuKuanBiLi") + .select("p.shou_Fu_Kuan as shouFuKuan","p.two_Fu_Kuan as twoFuKuan","p.three_Fu_Kuan as threeFuKuan") + .select("p.four_Fu_Kuan as fourFuKuan","p.five_Fu_Kuan as fiveFuKuan","p.six_Fu_Kuan as sixFuKuan") .leftJoin( "finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'") .leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode) 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 c87a2a5e..86a71cb1 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 @@ -9,6 +9,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; 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.purchaseordermake.vo.*; @@ -88,10 +89,26 @@ public interface PurchaseOrderMakeMapper extends BaseMapperX review(PurchaseOrderMakePageReqVO pageReqVO){ + // 引入 MPJLambdaWrapper(MyBatis-Plus-Join 提供) + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + // 构建查询条件 + wrapper.selectAll(PurchaseOrderMakeDO.class) + .select( + "CASE " + + "WHEN t.goods_type = 1 THEN '物料' " + + "WHEN t.goods_type = 2 THEN '加工件' " + + "ELSE '其他' " + + "END AS purchaseOrderType" + ) + .select("u.nickname as submitUserName")// 查询主表所有字段 + .leftJoin(AdminUserDO.class,"u", AdminUserDO::getId, PurchaseOrderMakeDO::getSubmitUserId); + wrapper.eq(PurchaseOrderMakeDO::getStatus, pageReqVO.getStatus()) + .eq(PurchaseOrderMakeDO::getSubmitUserId,pageReqVO.getSubmitUserId() ); + return selectPage(pageReqVO, wrapper); + } } \ 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/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java index ce8aee57..ae1be5cb 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java @@ -22,6 +22,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.Purchas import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; +import com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail.PurchaseOrderMakeDetailService; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @@ -91,6 +92,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX pageResult = selectJoinPage(pageReqVO, PartPurchaseOrderPageRespVO.class, query); return pageResult; } @@ -143,4 +143,15 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX pageResult = selectJoinPage(partPurchaseOrderPageReqVO, PartPurchaseOrderPageRespVO.class, query); return pageResult; } + + default List getByPurchaseOrderId(Long id){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(PurchaseOrderMakeDetailDO.class) + .select("p.name as procedureName,s.name as supplierName") + .leftJoin(ProcedureDO.class,"p", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId) + .leftJoin(SupplierDO.class,"s", SupplierDO::getId, PurchaseOrderMakeDetailDO::getSupplierId) + .disableSubLogicDel(); + query.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId,id); + return selectList(query); + } } 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 eab55300..fde0dcf6 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 @@ -1,13 +1,12 @@ package com.chanko.yunxi.mes.module.heli.service.partpurchaseorder; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakePageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakeSaveReqVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; import java.util.List; @@ -57,9 +56,13 @@ public interface PartPurchaseOrderService { */ boolean updatePartCheckStatusNo(PurchaseOrderMakeSaveReqVO updateReqVO); - Boolean reject(PurchaseOrderMakeSaveReqVO updateReqVO); + Boolean reject(Long id); Boolean approval(Long id); PageResult getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO); + + Boolean createPurchaseOrderMakeAndDetailBatch(List updateReqVOs); + + CommonResult obtainReviewDetails(Long id); } 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 1c45a4b1..d689eb7c 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,30 +1,47 @@ package com.chanko.yunxi.mes.module.heli.service.partpurchaseorder; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.annotation.TableField; 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.CommonResult; 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; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; +import com.chanko.yunxi.mes.module.heli.controller.admin.orderyf.vo.OrderYfSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.Log; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakeSaveReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; 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.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper; 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.supplier.SupplierMapper; +import com.chanko.yunxi.mes.module.heli.service.orderyf.OrderYfService; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.heli.service.supplier.SupplierService; +import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; +import com.chanko.yunxi.mes.module.system.service.user.AdminUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -32,8 +49,10 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Objects; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; @@ -54,6 +73,16 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ private SerialNumberService serialNumberService; @Resource private MaterialPlanBoomMapper materialPlanBoomMapper; + @Resource + private PlanMapper planMapper; + @Autowired + private PlanSubMapper planSubMapper; + @Autowired + private AdminUserService adminUserService; + @Autowired + private OrderYfService orderYfService; + @Autowired + private SupplierMapper supplierMapper; @Override public PageResult getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) { @@ -63,24 +92,36 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ @Override public boolean submit(List list) { + PurchaseOrderNoDO purchaseOrderNoDO = new PurchaseOrderNoDO(); + // 返回 + // 月度流水号 + SerialNumberDO serialNumberDO = new SerialNumberDO(); + serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); + + purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString())); + purchaseOrderNoDO.setPurchaseType(1); + purchaseOrderNoDO.setGoodsType(2); + purchaseOrderNoDO.setSupplierId(list.get(0).getSupplierId()); + purchaseOrderNoDO.setOrdDate(new Date()); + purchaseOrderNoMapper.insert(purchaseOrderNoDO); + long purchaseOrderId = purchaseOrderNoDO.getId(); + OrderYfSaveReqVO orderYfVO = new OrderYfSaveReqVO(); + orderYfVO.setCgOrderNum(purchaseOrderNoDO.getPurchaseNo()); + SupplierDO supplierDO = supplierMapper.selectById(list.get(0).getSupplierId()); + if (ObjectUtil.isNotEmpty(supplierDO)){ + orderYfVO.setCgGysname(supplierDO.getName()); + } + BigDecimal sum = list.stream() + .filter(Objects::nonNull) // 过滤掉空对象 + .map(PartPurchaseOrderPageRespVO::getEstimatedPrice) + .filter(Objects::nonNull) // 过滤掉空值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 + orderYfVO.setCgYf(sum); + orderYfService.createCg(orderYfVO); list.forEach(detailDO -> { - PurchaseOrderNoDO purchaseOrderNoDO = new PurchaseOrderNoDO(); - // 返回 - // 月度流水号 - SerialNumberDO serialNumberDO = new SerialNumberDO(); - serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); - serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); - // 回写序列记录 - serialNumberService.updateSerialNumber(serialNumberDO); - - purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString())); - purchaseOrderNoDO.setPurchaseType(1); - purchaseOrderNoDO.setGoodsType(2); - purchaseOrderNoDO.setSupplierId(detailDO.getSupplierId()); - purchaseOrderNoDO.setOrdDate(new Date()); - purchaseOrderNoMapper.insert(purchaseOrderNoDO); - long purchaseOrderId = purchaseOrderNoDO.getId(); - // PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = new PurchaseOrderNoDetailDO(); // purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId); // purchaseOrderNoDetailDO.setBoomDetailId(detailDO.getBoomDetailId()); @@ -93,14 +134,25 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ purchaseOrderNoDetailDO.setUpdateTime(null); purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId); purchaseOrderNoDetailDO.setPurchaseRemAmount(detailDO.getPurchaseAmount()); + PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(detailDO.getId()); + if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){ + PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(orderMakeDetailDO.getPurchaseOrderId()); + if (ObjectUtil.isNotEmpty(orderMakeDO)){ + purchaseOrderNoDetailDO.setProjectId(orderMakeDO.getProjectId()); + purchaseOrderNoDetailDO.setProjectPlanId(orderMakeDO.getProjectPlanId()); + purchaseOrderNoDetailDO.setCustomerId(orderMakeDO.getCustomerId()); + } + } purchaseOrderNoDetailMapper.insert(purchaseOrderNoDetailDO); long purchaseOrderDetailId = purchaseOrderNoDetailDO.getId(); + PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO(); purchaseOrderMakeDetailDO.setId(detailDO.getId()); purchaseOrderMakeDetailDO.setOrderStatus(2); purchaseOrderMakeDetailDO.setPurchaseOrderNoId(purchaseOrderId); purchaseOrderMakeDetailDO.setPurchaseOrderNoDetailId(purchaseOrderDetailId); + purchaseOrderMakeDetailDO.setPurchaseNo(purchaseOrderNoDO.getPurchaseNo()); purchaseOrderMakeDetailMapper.updateById(purchaseOrderMakeDetailDO); }); @@ -124,10 +176,12 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ 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); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", materialPlanBoomDO.getId()) + .set("mplan_status", 2) + .set("rej_remark", null); + + materialPlanBoomMapper.update(updateWrapper); }); return true; } @@ -140,11 +194,9 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO); purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO); - List list= purchaseOrderMakeDetailMapper.selectList("purchase_order_id", updateReqVO.getId()); - list.forEach(detailDO -> { - purchaseOrderNoDetailMapper.deleteById(detailDO); - }); - + 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<>(); @@ -161,30 +213,26 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ } @Override - public Boolean reject(PurchaseOrderMakeSaveReqVO updateReqVO) { - PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(updateReqVO.getId()); + public Boolean reject(Long id) { + PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(id); if (orderMakeDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!")); PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); - purchaseOrderMakeDO.setId(updateReqVO.getId()); + purchaseOrderMakeDO.setId(id); purchaseOrderMakeDO.setStatus(3); purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO); purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId()); + wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, id); purchaseOrderMakeDetailMapper.delete(wrapper); - List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId()); + List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", id); 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); + .set("project_purchase_order_make_detail_id", null); materialPlanBoomMapper.update(updateWrapper); }); return true; @@ -216,4 +264,122 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ return purchaseOrderMakeDetailMapper.getDetail(partPurchaseOrderPageReqVO); } + + @Override + public Boolean createPurchaseOrderMakeAndDetailBatch(List updateReqVOs) { + if (CollectionUtils.isEmpty(updateReqVOs)) { + return false; + } + + MaterialPlanBoomDO boomDO = updateReqVOs.get(0); + + PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); + // 返回 + // 月度流水号 + SerialNumberDO serialNumberDO = new SerialNumberDO(); + serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); + + purchaseOrderMakeDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString())); + purchaseOrderMakeDO.setGoodsType(2); + purchaseOrderMakeDO.setStatus(1); + purchaseOrderMakeDO.setSubmitUserId(getLoginUser().getId()); + purchaseOrderMakeDO.setSubmitTime(LocalDateTime.now()); + purchaseOrderMakeDO.setProjectId(boomDO.getProjectId()); + PlanDO planDO = planMapper.selectOne("project_id", boomDO.getProjectId()); + + if (ObjectUtil.isNotEmpty(planDO)) { + purchaseOrderMakeDO.setProjectPlanId(planDO.getId()); + } + purchaseOrderMakeDO.setCustomerId(boomDO.getCustomerId()); + purchaseOrderMakeDO.setBrief(boomDO.getBrief()); + purchaseOrderMakeDO.setProjectName(boomDO.getProjectName()); + purchaseOrderMakeDO.setProjectNameSim(boomDO.getProjectNameSim()); + purchaseOrderMakeMapper.insert(purchaseOrderMakeDO); + long purchaseOrderMakeId = purchaseOrderMakeDO.getId(); + String purchaseOrderMakeDOPurchaseNo = purchaseOrderMakeDO.getPurchaseNo(); + + updateReqVOs.forEach(updateReq -> { + createPurchaseOrderMakeAndDetail(updateReq,purchaseOrderMakeId, purchaseOrderMakeDOPurchaseNo,planDO.getId()); + }); + + return true; + } + + @Override + public CommonResult obtainReviewDetails(Long id) { + PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(id); + orderMakeDO.setPurchaseOrderType(orderMakeDO.getGoodsType()==1?"物料":"加工件"); + List purchaseOrderMakeDetail = purchaseOrderMakeDetailMapper.getByPurchaseOrderId(orderMakeDO.getId()); + orderMakeDO.setPurchaseOrderMakeDetailDOList(purchaseOrderMakeDetail); + List logList=new ArrayList<>(); + if (ObjectUtil.isNotEmpty(orderMakeDO.getSubmitUserId())){ + AdminUserDO user = adminUserService.getUser(orderMakeDO.getSubmitUserId()); + if (ObjectUtil.isNotEmpty(user)){ + Log log = new Log(); + log.setOperation("送审"); + log.setOperationName(user.getNickname()); + log.setOperationTime(orderMakeDO.getSubmitTime()); + logList.add(log); + orderMakeDO.setSubmitUserName(user.getNickname()); + } + } + + if (ObjectUtil.isNotEmpty(orderMakeDO.getAuditor())){ + AdminUserDO user = adminUserService.getUser(orderMakeDO.getAuditor()); + if (ObjectUtil.isNotEmpty(user)){ + Log log = new Log(); + log.setOperation("审批"); + log.setOperationName(user.getNickname()); + log.setOperationTime(orderMakeDO.getSubmitTime()); + logList.add(log); + } + } + orderMakeDO.setLogList(logList); + return CommonResult.success(orderMakeDO); + } + + public Boolean createPurchaseOrderMakeAndDetail(MaterialPlanBoomDO updateReqVO, long purchaseOrderMakeId, String purchaseOrderMakeDOPurchaseNo,Long planId) { + PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO(); + purchaseOrderMakeDetailDO.setPurchaseOrderId(purchaseOrderMakeId); + purchaseOrderMakeDetailDO.setBoomDetailId(updateReqVO.getBoomDetailId()); + purchaseOrderMakeDetailDO.setBoomName(updateReqVO.getMatName()); + purchaseOrderMakeDetailDO.setBoomSpec(updateReqVO.getBoomSpec()); + purchaseOrderMakeDetailDO.setBoomUnit(updateReqVO.getUnit()); + purchaseOrderMakeDetailDO.setComposition(updateReqVO.getCompositionName()); + purchaseOrderMakeDetailDO.setPurchaseAmount(updateReqVO.getPurchaseAmounts()); + purchaseOrderMakeDetailDO.setEstimatedPrice(updateReqVO.getEstimatedPrices()); + purchaseOrderMakeDetailDO.setArriveTime(updateReqVO.getArriveTimes()); + purchaseOrderMakeDetailDO.setBoomAmount(updateReqVO.getBoomAmount()); + purchaseOrderMakeDetailDO.setRequireTime(updateReqVO.getBoomArriveDate()); + purchaseOrderMakeDetailDO.setSupplierId(updateReqVO.getSupplierIds()); + purchaseOrderMakeDetailDO.setProjectMaterialPlanId(updateReqVO.getProjectMaterialPlanId()); + purchaseOrderMakeDetailDO.setProjectMaterialPlanBoomId(updateReqVO.getId()); + purchaseOrderMakeDetailDO.setProjectPlanSubId(updateReqVO.getProjectPlanSubId()); + purchaseOrderMakeDetailDO.setName(updateReqVO.getProjectSubName()); + purchaseOrderMakeDetailDO.setNameSim(updateReqVO.getProjectSubNameSim()); + purchaseOrderMakeDetailDO.setOrderStatus(1); + PlanSubDO planSubDO = planSubMapper.selectOne("project_sub_id", updateReqVO.getProjectPlanSubId()); + purchaseOrderMakeDetailDO.setProjectSubCode(Objects.nonNull(planSubDO)?planSubDO.getProjectSubCode(): null); + purchaseOrderMakeDetailDO.setProcedureId(updateReqVO.getProcedureId()); + purchaseOrderMakeDetailDO.setDescription(updateReqVO.getDescriptions()); + purchaseOrderMakeDetailDO.setTheWeight(updateReqVO.getTheWeight()); + purchaseOrderMakeDetailDO.setDuEmpId(updateReqVO.getDuEmpId()); + purchaseOrderMakeDetailDO.setIsFoam(updateReqVO.getIsFoam()); + purchaseOrderMakeDetailMapper.insert(purchaseOrderMakeDetailDO); + long purchaseOrderMakeDetailId = purchaseOrderMakeDetailDO.getId(); + + MaterialPlanBoomDO materialPlanBoomDO = new MaterialPlanBoomDO(); + materialPlanBoomDO.setId(updateReqVO.getId()); + materialPlanBoomDO.setMplanStatus(1); + materialPlanBoomDO.setRejRemark(""); + materialPlanBoomDO.setProjectPurchaseOrderMakeId(purchaseOrderMakeId); + materialPlanBoomDO.setPurchaseNo(purchaseOrderMakeDOPurchaseNo); + materialPlanBoomDO.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailId); + materialPlanBoomMapper.updateById(materialPlanBoomDO); + return true; + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeService.java index ecb74b24..d59af2b3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeService.java @@ -1,55 +1,56 @@ -package com.chanko.yunxi.mes.module.heli.service.purchaseordermake; - -import java.util.*; -import javax.validation.*; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; - -/** - * 采购单主 Service 接口 - * - * @author 管理员 - */ -public interface PurchaseOrderMakeService { - - /** - * 创建采购单主 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createPurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO createReqVO); - - /** - * 更新采购单主 - * - * @param updateReqVO 更新信息 - */ - void updatePurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO updateReqVO); - - /** - * 删除采购单主 - * - * @param id 编号 - */ - void deletePurchaseOrderMake(Long id); - - /** - * 获得采购单主 - * - * @param id 编号 - * @return 采购单主 - */ - PurchaseOrderMakeDO getPurchaseOrderMake(Long id); - - /** - * 获得采购单主分页 - * - * @param pageReqVO 分页查询 - * @return 采购单主分页 - */ - PageResult getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO); - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.purchaseordermake; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 采购单主 Service 接口 + * + * @author 管理员 + */ +public interface PurchaseOrderMakeService { + + /** + * 创建采购单主 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createPurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO createReqVO); + + /** + * 更新采购单主 + * + * @param updateReqVO 更新信息 + */ + void updatePurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO updateReqVO); + + /** + * 删除采购单主 + * + * @param id 编号 + */ + void deletePurchaseOrderMake(Long id); + + /** + * 获得采购单主 + * + * @param id 编号 + * @return 采购单主 + */ + PurchaseOrderMakeDO getPurchaseOrderMake(Long id); + + /** + * 获得采购单主分页 + * + * @param pageReqVO 分页查询 + * @return 采购单主分页 + */ + PageResult getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO); + + PageResult review(PurchaseOrderMakePageReqVO pageReqVO); +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeServiceImpl.java index 2cfe5696..711e1935 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeServiceImpl.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.service.purchaseordermake; +import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -15,6 +16,7 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper; 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.ErrorCodeConstants.*; /** @@ -71,4 +73,10 @@ public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService { return purchaseOrderMakeMapper.selectJoinPage(pageReqVO); } + @Override + public PageResult review(PurchaseOrderMakePageReqVO pageReqVO) { + pageReqVO.setSubmitUserId(getLoginUser().getId()); + return purchaseOrderMakeMapper.review(pageReqVO); + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java index 516de5ca..a8ae988a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java @@ -1,6 +1,8 @@ package com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.chanko.yunxi.mes.module.heli.controller.admin.orderyf.vo.OrderYfSaveReqVO; 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.purchaseorder.PurchaseOrderDO; @@ -8,11 +10,14 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.Purchas 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.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.composition.CompositionMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper; 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.supplier.SupplierMapper; +import com.chanko.yunxi.mes.module.heli.service.orderyf.OrderYfService; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import org.checkerframework.checker.units.qual.A; import org.springframework.stereotype.Service; @@ -20,6 +25,7 @@ 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.time.LocalDate; import java.time.LocalDateTime; @@ -61,6 +67,11 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta private MaterialMapper materialMapper; @Resource private CompositionMapper compositionMapper; + + @Resource + private OrderYfService orderYfService; + @Resource + private SupplierMapper supplierMapper; @Override public Long createPurchaseOrderMakeDetail(PurchaseOrderMakeDetailSaveReqVO createReqVO) { // 插入 @@ -90,6 +101,19 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta purchaseOrderNoDO.setSupplierId(updateList.get(0).getSupplierId()); purchaseOrderNoDO.setOrdDate(new Date()); purchaseOrderNoMapper.insert(purchaseOrderNoDO); + OrderYfSaveReqVO orderYfVO = new OrderYfSaveReqVO(); + orderYfVO.setCgOrderNum(code); + SupplierDO supplierDO = supplierMapper.selectById(updateList.get(0).getSupplierId()); + if (ObjectUtil.isNotEmpty(supplierDO)){ + orderYfVO.setCgGysname(supplierDO.getName()); + } + BigDecimal sum = updateList.stream() + .filter(Objects::nonNull) // 过滤掉空对象 + .map(PurchaseOrderMakeDetailDO::getEstimatedPrice) + .filter(Objects::nonNull) // 过滤掉空值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 + orderYfVO.setCgYf(sum); + orderYfService.createCg(orderYfVO); List insertList =new ArrayList<>(); HashMap insertMap = new HashMap<>(); HashMap insertMaterialMap = new HashMap<>(); 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 956801c7..d20c796f 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 @@ -10,19 +10,29 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.Materi import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplandetail.MaterialPlanDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; +import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; import com.chanko.yunxi.mes.module.heli.service.procedure.ProcedureService; +import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.heli.service.storage.StorageService; 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.time.LocalDateTime; import java.util.*; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; @@ -34,6 +44,9 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.Purchase import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; +import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_OUT; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -57,6 +70,16 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe private MaterialMapper materialMapper; @Resource private ProcessBomMapper pocessBomMapper; + @Resource + private SerialNumberService serialNumberService; + @Resource + private StorageMapper storageMapper; + @Resource + private StorageMatMapper storageMatMapper; + @Resource + private StorageService storageService; + + @Override public Long createPurchaseOrderNoDetail(PurchaseOrderNoDetailSaveReqVO createReqVO) { @@ -124,6 +147,36 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe @Transactional public CommonResult receiveGoods(List list) { List materialDOList=new ArrayList(); + //自动生成入库单 + StorageDO storageDO = new StorageDO(); + storageDO.setStockType(1); + // 月度流水号 + SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + // 入库前缀 + storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO.getSerialNumber().toString())); + serialNumberService.updateSerialNumber(serialNumberDO); + storageDO.setStatus(2); + storageDO.setKeeper(getLoginUser().getId()); + storageDO.setKeeperTime(LocalDateTime.now()); + storageMapper.insert(storageDO); + //自动生成出库单 + StorageDO out = new StorageDO(); + out.setStockType(2); + // 月度流水号 + SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1); + // 出库前缀 + out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString())); + serialNumberService.updateSerialNumber(serialNumber); + out.setStatus(2); + out.setOutbound(getLoginUser().getId()); + out.setOutboundTime(LocalDateTime.now()); + storageMapper.insert(out); + //入库物料集合 + ArrayList storageMatDOS = new ArrayList<>(); + //出库库物料集合 + ArrayList outList = new ArrayList<>(); for (PurchaseOrderNoDetailDO detailDO : list) { PurchaseOrderNoDetailDO byId = purchaseOrderNoDetailMapper.selectById(detailDO.getId()); if (ObjectUtil.isNotEmpty(byId)){ @@ -134,6 +187,16 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe } byId.setPurchaseRemAmount(byId.getPurchaseRemAmount().subtract(detailDO.getPurchaseRemAmounts())); purchaseOrderNoDetailMapper.updateById(byId); + StorageMatDO storageMatDO = new StorageMatDO(); + StorageMatDO outMat = new StorageMatDO(); + storageMatDO.setStockId(storageDO.getId()); + storageMatDO.setStorageOkQty(detailDO.getPurchaseRemAmounts()); + storageMatDO.setProjectNo(byId.getProjectPlanSubId().toString()); + storageMatDO.setProjectSubName(byId.getName()); + outMat.setStockId(out.getId()); + outMat.setStorageOkQty(detailDO.getPurchaseRemAmounts()); + outMat.setProjectNo(byId.getProjectPlanSubId().toString()); + outMat.setProjectSubName(byId.getName()); ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(detailDO.getBoomDetailId()); if (ObjectUtil.isNotEmpty(bomDetailDO)){ String bomCode=""; @@ -150,9 +213,7 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe } } if (ObjectUtil.isNotEmpty(bomDetailDO.getBlueprintNo())){ - if (ObjectUtil.isNotEmpty(processBomDO.getBlueprintNo())){ blueprintNo=bomDetailDO.getBlueprintNo(); - } } MaterialPlanBoomDO boomDO = materialPlanBoomMapper.selectById(detailDO.getProjectMaterialPlanBoomId()); if (ObjectUtil.isNotEmpty(boomDO)){ @@ -170,13 +231,25 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe materialDO.setVirtualPart("Y"); MaterialDO material = materialMapper.selectMaterial(code); if (ObjectUtil.isEmpty(material)){ - materialDOList.add(materialDO); - +// materialDOList.add(materialDO); + materialMapper.insert(materialDO); + storageMatDO.setMatId(materialDO.getId()); + outMat.setMatId(materialDO.getId()); + }else { + storageMatDO.setMatId(material.getId()); + outMat.setMatId(material.getId()); } } + storageMatDOS.add(storageMatDO); + outList.add(outMat); } } - materialMapper.insertBatch(materialDOList); + storageMatMapper.insertBatch(storageMatDOS); + storageMatMapper.insertBatch(outList); + storageService.updateMatLogList(storageDO.getId(),2); + storageService.updateMatLogList(out.getId(),2); + +// materialMapper.insertBatch(materialDOList); return success(true); } 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 d0f20f5b..dfc7b2f8 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 @@ -8,11 +8,17 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.storageindetail.vo.Stor 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.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageindetail.StorageInDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; 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.storage.StorageMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storageindetail.StorageInDetailMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; +import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.heli.service.storage.StorageService; import com.sun.corba.se.spi.ior.IdentifiableFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -20,7 +26,9 @@ import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -33,8 +41,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.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.*; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -56,6 +64,12 @@ public class StorageInServiceImpl implements StorageInService { private SerialNumberService serialNumberService; @Resource private PurchaseOrderNoMapper purchaseOrderNoMapper; + @Resource + private StorageMapper storageMapper; + @Resource + private StorageMatMapper storageMatMapper; + @Resource + private StorageService storageService; @Override public Long createStorageIn(StorageInSaveReqVO createReqVO) { // 插入 @@ -165,21 +179,29 @@ public class StorageInServiceImpl implements StorageInService { wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,purchaseOrderNoDetailDO.getId()); wrapper.eq(StorageInDetailDO::getDeleted,0); List storageInDetailDOS = storageInDetailMapper.selectList(wrapper); + BigDecimal sum=BigDecimal.ZERO; + BigDecimal StorageAmount=BigDecimal.ZERO; if (ObjectUtil.isNotEmpty(storageInDetailDOS)){ - BigDecimal StorageAmount = storageInDetailDOS.stream() + 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()+"请确认!"); - } + sum = StorageAmount.add(amount); + }else{ + sum = amount; + } + if (sum.compareTo(purchaseOrderNoDetailDO.getBoomAmount())>0){ + return CommonResult.error(400,"标准件名称"+purchaseOrderNoDetailDO.getBoomName()+"入库数量"+StorageAmount+"+本次入库数量"+amount+"大于需求数量"+purchaseOrderNoDetailDO.getBoomAmount()+"请确认!"); } } } StorageInDO storageInDO = new StorageInDO(); + //入库物料集合 + ArrayList storageMatDOS = new ArrayList<>(); + //出库库物料集合 + ArrayList outList = new ArrayList<>(); // 月度流水号 SerialNumberDO serialNumberDO = new SerialNumberDO(); serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); @@ -190,8 +212,54 @@ public class StorageInServiceImpl implements StorageInService { storageInDO.setIsPrint("N"); storageInDO.setOrdDate(new Date()); storageInMapper.insert(storageInDO); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); + //自动生成入库单 + StorageDO storageDO = new StorageDO(); + storageDO.setStockType(1); + // 月度流水号 + SerialNumberDO serialNumberDO1 = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO1.setSerialNumber(serialNumberDO1.getSerialNumber()+1); + // 入库前缀 + storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO1.getSerialNumber().toString())); + serialNumberService.updateSerialNumber(serialNumberDO1); + storageDO.setStatus(2); + storageDO.setKeeper(getLoginUser().getId()); + storageDO.setKeeperTime(LocalDateTime.now()); + storageMapper.insert(storageDO); + //自动生成出库单 + StorageDO out = new StorageDO(); + out.setStockType(2); + // 月度流水号 + SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1); + // 出库前缀 + out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString())); + serialNumberService.updateSerialNumber(serialNumber); + out.setStatus(2); + out.setOutbound(getLoginUser().getId()); + out.setOutboundTime(LocalDateTime.now()); + storageMapper.insert(out); List storageInDetailDOList = new ArrayList<>(); for (PurchaseOrderNoDetailDO orderNoDetailDO : list) { + //入库明细 + StorageMatDO storageMatDO = new StorageMatDO(); + storageMatDO.setStockId(storageDO.getId()); + storageMatDO.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts()); + storageMatDO.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString()); + storageMatDO.setProjectSubName(orderNoDetailDO.getName()); + storageMatDO.setMatId(orderNoDetailDO.getMaterialId()); + storageMatDOS.add(storageMatDO); + //出库明细 + StorageMatDO outMat = new StorageMatDO(); + outMat.setStockId(out.getId()); + outMat.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts()); + outMat.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString()); + outMat.setProjectSubName(orderNoDetailDO.getName()); + outMat.setMatId(orderNoDetailDO.getMaterialId()); + outList.add(outMat); + + StorageInDetailDO storageInDetailDO = new StorageInDetailDO(); storageInDetailDO.setStorageNoId(storageInDO.getId()); storageInDetailDO.setProjectSubCode(orderNoDetailDO.getProjectSubCode()); @@ -201,7 +269,23 @@ public class StorageInServiceImpl implements StorageInService { storageInDetailDO.setBoomUnit(orderNoDetailDO.getBoomUnit()); storageInDetailDO.setComposition(orderNoDetailDO.getComposition()); storageInDetailDO.setPurchaseAmount(orderNoDetailDO.getPurchaseAmount()); - storageInDetailDO.setEstimatedPrice(orderNoDetailDO.getEstimatedPrice()); + BigDecimal result = BigDecimal.ZERO; + BigDecimal estimatedPrice = orderNoDetailDO.getEstimatedPrice(); + BigDecimal purchaseAmount = orderNoDetailDO.getPurchaseAmount(); + // 检查两个值是否为null或0 + if (estimatedPrice != null && + purchaseAmount != null && + purchaseAmount.compareTo(BigDecimal.ZERO) != 0) { + // 当两个值非空且除数非零时才进行计算 + result = estimatedPrice.divide(purchaseAmount, 1, RoundingMode.HALF_UP); + } + if (result.compareTo(BigDecimal.ZERO)==0){ + storageInDetailDO.setEstimatedPrice(BigDecimal.ZERO); + + }else { + storageInDetailDO.setEstimatedPrice(orderNoDetailDO.getPurchaseRemAmounts().multiply( result).setScale(1, RoundingMode.HALF_UP)); + + } storageInDetailDO.setActualPrice(orderNoDetailDO.getActualPrice()); storageInDetailDO.setBoomAmount(orderNoDetailDO.getBoomAmount()); storageInDetailDO.setRequireTime(orderNoDetailDO.getRequireTime()); @@ -235,8 +319,10 @@ public class StorageInServiceImpl implements StorageInService { storageInDetailDOList.add(storageInDetailDO); } storageInDetailMapper.insertBatch(storageInDetailDOList); - // 回写序列记录 - serialNumberService.updateSerialNumber(serialNumberDO); + storageMatMapper.insertBatch(storageMatDOS); + storageMatMapper.insertBatch(outList); + storageService.updateMatLogList(storageDO.getId(),2); + storageService.updateMatLogList(out.getId(),2); 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 7bc5c22b..78609e88 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 @@ -1,5 +1,7 @@ package com.chanko.yunxi.mes.module.heli.service.taskdispatch; +import cn.hutool.core.bean.copier.BeanCopier; +import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -52,6 +54,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; +import cn.hutool.core.bean.BeanUtil; import javax.annotation.Resource; import java.math.BigDecimal; @@ -61,7 +64,6 @@ import java.time.LocalDateTime; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; - import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; @@ -130,6 +132,32 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { // 返回 return taskDispatch.getId(); } + public static boolean isDetailChanged(TaskDispatchDetailDO newDetail, TaskDispatchDetailDO oldDetail) { + String[] DETAIL_FIELDS = { + "owner", "workTime", "amount", "beforeAmount","summary","status","dispatchId","deviceModel","bomDetailId","startTime","detailOwnerId","testYn","checkYn","endTime" + ,"dispatchType","postId","isOutsourcing","projectMaterialPlanNo","projectMaterialPlanDetailId","planStatus" + }; + + if (newDetail == null || oldDetail == null) return true; + + for (String field : DETAIL_FIELDS) { + Object v1 = BeanUtil.getFieldValue(newDetail, field); + Object v2 = BeanUtil.getFieldValue(oldDetail, field); + if ("isOutsourcing".equals(field)){ + if ("true".equals(v2)){ + v2="Y"; + }else { + v2="N"; + } + } + if (!ObjectUtil.equal(v1, v2)) { + System.out.println(v1); + System.out.println(v2); + return true; + } + } + return false; + } @Override @Transactional(rollbackFor = Exception.class) @@ -149,23 +177,24 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { throw exception(INVALID_OPERATE); } if (updateReqVO.getDispatchType() != null && updateReqVO.getDispatchType().equals("PRODUCTION")){ - List idList = updateReqVO.getTaskDispatchDetails().stream() + List list = updateReqVO.getTaskDispatchDetails().stream() .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); + if (ObjectUtil.isNotEmpty(list)){ TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(updateObj.getId()); - for (TaskDispatchDetailDO dispatchDetailDO : detailDOS) { - if (dispatchDetailDO.getPlanStatus()==1){ - ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId()); - ProcedureDO procedureDO = procedureMapper.selectById(dispatchDetailDO.getProcedureId()); - if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){ - throw exception(new ErrorCode(400,bomDetailDO.getMaterialName()+" "+procedureDO.getName()+"已做物料需求计划,不能更改,请确认")); + for (TaskDispatchDetailDO dispatchDetailDO : list) { + TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(dispatchDetailDO.getId()); + if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){ + if (isDetailChanged(taskDispatchDetailDO, dispatchDetailDO)) { + if (taskDispatchDetailDO.getPlanStatus()==1){ + ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId()); + ProcedureDO procedureDO = procedureMapper.selectById(dispatchDetailDO.getProcedureId()); + if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){ + throw exception(new ErrorCode(400,bomDetailDO.getMaterialName()+" "+procedureDO.getName()+"已做物料需求计划,不能更改,请确认")); + } + } } + } } } 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 74c80237..29c51ffc 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 @@ -45,13 +45,25 @@ 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 reject = async (id:number) => { + return await request.get({ url: `/heli/purchase-order-make/reject?id=` +id }) } export const approval = async (id: number) => { - return await request.put({ url: `/heli/purchase-order-make/approval?id=` + id }) + return await request.get({ url: `/heli/purchase-order-make/approval?id=` + id }) } // 获取零件采购订单生成分页 export const getDetail = async (params) => { return await request.get({ url: `/heli/purchase-order-make/getDetail`, params }) } + +// 零件采购单送审生成 +export const createPurchaseOrderMakeAndDetail = async (data) => { + return await request.post({ url: `/heli/purchase-order-make/createPurchaseOrderMakeAndDetail`, data }) +} +export const review = async (params) => { + return await request.get({ url: `/heli/purchase-order-make/review`, params }) +} + +export const obtainReviewDetails = async (id:number) => { + return await request.get({ url: `/heli/purchase-order-make/obtainReviewDetails?id=` +id }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/assets/imgs/loginimg.png b/mes-ui/mes-ui-admin-vue3/src/assets/imgs/loginimg.png deleted file mode 100644 index a552a9e6..00000000 Binary files a/mes-ui/mes-ui-admin-vue3/src/assets/imgs/loginimg.png and /dev/null differ diff --git a/mes-ui/mes-ui-admin-vue3/src/assets/imgs/loginimg1.png b/mes-ui/mes-ui-admin-vue3/src/assets/imgs/loginimg1.png deleted file mode 100644 index 2159b077..00000000 Binary files a/mes-ui/mes-ui-admin-vue3/src/assets/imgs/loginimg1.png and /dev/null differ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/Home/Index.vue b/mes-ui/mes-ui-admin-vue3/src/views/Home/Index.vue index 3671c90a..8c5036b9 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/Home/Index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/Home/Index.vue @@ -280,7 +280,7 @@ import { pieOptions, barOptions } from './echarts-data' import { useCommonStore } from '@/store/modules/common' //all import * as bdgzsomthingApi from '@/api/heli/bdgzsomthing' -//采购订单审核 +// import * as PurchaseOrderApi from '@/api/heli/purchaseorder' //订单审核 import * as ProjectOrderApi from '@/api/heli/projectorder' diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue index 25af90ee..763716d3 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue @@ -68,33 +68,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -150,12 +158,9 @@ import * as purchaseOrderMakeDetailApi from '@/api/heli/purchaseordermakedetail' import { useCommonStateWithOut } from '@/store/modules/common' import * as matApi from '@/api/heli/material' import { useUserStore } from '@/store/modules/user' -import matLog from './storageLog.vue' +import matLog from './storageLogs.vue' import * as supplierApi from '@/api/heli/supplier' -import UserSelect from "@/views/heli/materialplan/userSelectNew.vue"; import {inject, ref} from "vue"; -import { update } from 'lodash-es' -import { Hash } from 'crypto' const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const userStore = useUserStore() const username = userStore.getUser.nickname @@ -170,7 +175,6 @@ import { formatDate, dateFormatter2 } from "@/utils/formatTime"; const meterialLoading = ref(false) -const matLogRef = ref() const loading = ref(true) // 列表的加载中 const list = ref([]) // 列表的数据 const total = ref(0) // 列表的总页数 @@ -200,6 +204,7 @@ const queryParams1 = reactive({ }) const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 +const matLogRef = ref() /** 查询列表 */ const getList = async () => { @@ -207,7 +212,7 @@ const getList = async () => { try { multipleTable.value.clearSelection(); const data = await purchaseOrderMakeDetailApi.page(queryParams) - + list.value = data.list for (const row of list.value ) { // 如果boomCode不为空,则调用remoteMethod进行查询 @@ -262,7 +267,9 @@ const getMateriallist = async(row) =>{ const data = await matApi.getMaterialPage(queryMaterialParams) row.materialSelectList = data.list } - +const serachLog = (row) => { + matLogRef.value.open(row.id) +} const handleSelectionChange = (selection) => { ids.value = selection; } @@ -283,13 +290,13 @@ const handleExportDetail = async () => { exportLoading.value = false } } -const getMat = async (rowids,amount,ids) => { +const getMat = async (rowids,ids,matCodes) => { //formData.value.boomItemDOList = arrBoom for(var i = 0 ; i < list.value.length ; i ++){ if(list.value[i].id == rowids){ - list.value[i].matRest = amount + list.value[i].boomCode = matCodes list.value[i].materialId = ids - await updateRow(2,list.value[i]); + // await updateRow(2,list.value[i]); break; } } @@ -315,14 +322,14 @@ const changeDate = async(e,row) => { await updateRow(5,row) } } -const serachLog = (row) => { - matLogRef.value.open(row.id,row.matCode) -} +// const serachLog = (row) => { +// matLogRef.value.open(row.id,row.matCode) +// } /** 搜索按钮操作 */ const handleQuery = () => { queryParams.pageNo = 1 getList() - + } const opearteForm = async(type) =>{ loading.value = true; diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLogs.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLogs.vue new file mode 100644 index 00000000..fa46ac25 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLogs.vue @@ -0,0 +1,175 @@ + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/index.vue index be6eb1e7..4ffdf104 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/index.vue @@ -29,7 +29,7 @@ 搜索 重置 - - - - - - - - - - - - - - - - - diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue index ca9bc41c..b589c8ea 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue @@ -78,35 +78,35 @@ > - - + + - - + + - - + + - - + + - - + + - - + + @@ -209,12 +209,12 @@ const formData = ref({ orderYsDetails: [], rem: undefined, amount:undefined, - shouFuKuanBiLi:undefined, - twoFuKuanBiLi:undefined, - threeFuKuanBiLi:undefined, - fourFuKuanBiLi:undefined, - fiveFuKuanBiLi:undefined, - sixFuKuanBiLi:undefined + shouFuKuan:undefined, + twoFuKuan:undefined, + threeFuKuan:undefined, + fourFuKuan:undefined, + fiveFuKuan:undefined, + sixFuKuan:undefined }) // const subFormRules = reactive({ // paymentDate: [{ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue index 59cc324c..b704a509 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue @@ -62,26 +62,19 @@ - + - - + + - - - - + + + + @@ -156,18 +162,15 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' import download from '@/utils/download' import { useCommonStateWithOut } from '@/store/modules/common' -import UserSelect from "@/views/heli/materialplan/userSelectNew.vue"; import {inject, ref} from "vue"; import * as MaterialPlanApi from "@/api/heli/materialplan"; +import * as MaterialPlanBoomApi from "@/api/heli/materialplanboom"; import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder"; import {ElTable} from "element-plus"; import {useUserStore} from "@/store/modules/user"; -import {dateFormatter1} from "@/utils/formatTime"; -import {getPartPurchasePages} from "@/api/heli/materialplan"; import SupplierSelect from "@/views/heli/hlvuestyle/supplierSelect.vue"; const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 -defineOptions({ name: 'standard' }) const userStore = useUserStore() const username = userStore.getUser.nickname const reload: any = inject('reload') @@ -207,8 +210,16 @@ const exportLoading = ref(false) // 导出的加载中 const getList = async () => { loading.value = true try { + list.value=[] const data = await MaterialPlanApi.getPartPurchasePages(queryParams) list.value = data.list + list.value.forEach(item=> { + if(item.isFoams == 'Y'){ + item.isFoams = true + }else{ + item.isFoams = false + } + }) total.value = data.total } finally { loading.value = false @@ -228,11 +239,17 @@ const handleExportDetail = async () => { exportLoading.value = false } } +const handleOutsourcingChange= async (row: any) => { + if(row.isFoams == false){ + row.isFoam = 'N' + }else{ + row.isFoam = 'Y' + } +} const handleSelectionChange = (val) => { // multipleTable.value.clearSelection() multipleTable.value=val - } /** 搜索按钮操作 */ const handleQuery = () => { @@ -244,17 +261,9 @@ const handleQuery = () => { // formData.value.supplierId = newValue?.id // } const handleSelectedUser = (currentIndex, newValue: any) => { - list.value[currentIndex].supplierId = newValue?.id + list.value[currentIndex].supplierIds = newValue?.id } -const singleSubmission= (val) =>{ - multipleTable.value=[] - multipleTable.value.push(val) - submitForm(); -} -const routerToPurchaseOrderNo=()=>{ - router.push({ path: '/purchase/purchaseorderno'}); -} const singleSubmissions=()=>{ submitForm(); } @@ -263,47 +272,69 @@ const submitForm = async () => { console.log("开始提交"); // 调试点1:确认函数是否触发 const list = multipleTable.value|| []; // 安全获取数据 - console.log("明细数据:", list); - console.log(list.length) + console.log(list); // 1. 检查空数据 if (!list || list.length==null) { message.error("提交明细不能为空,请确认"); return; } - for (let i = 0; i < list.length; i++) { - if (list[i].purchaseAmount === null || list[i].purchaseAmount === 0) { + let i; + for (i = 0; i < list.length; i++) { + if (list[i].purchaseAmounts === null || list[i].purchaseAmounts === 0) { message.error("采购数量为0或空"); break; } - if (list[i].supplierId === null) { + if (list[i].supplierIds === null) { message.error("供应商为空"); break; } - if (list[i].arriveTime === null) { + if (list[i].arriveTimes === null) { message.error("预计到货日期为空"); break; } - if (list[i].estimatedPrice === null) { + if (list[i].estimatedPrices === null) { message.error("预估总价为空"); break; } } + if (i < list.length){ + return; + } - // 2. 检查供应商一致性 - const firstSupplierId = list[0].supplierId; - if (list.some(item => item.supplierId !== firstSupplierId)) { - message.error("零件采购订单不属于同一个供应商,请确认"); + // 2. 检查项目一致性 + const firstProjectName = list[0].projectName; + if (list.some(item => item.projectName !== firstProjectName)) { + message.error("不同项目不能同时生成采购单"); + return; + } + + //3. 检查生成采购订单状态 + const checkMaterialPlans = async () => { + for (const item of list) { + const checkParams = await MaterialPlanBoomApi.getMaterialPlanBoom(item.id); + if (checkParams.projectPurchaseOrderMakeId !== null) { + message.warning("存在零件清单已生成采购订单,请刷新界面!"); + return false; // 提前终止检查 + } + } + return true; // 所有检查通过 + }; + +// 调用方法 + const allValid = await checkMaterialPlans(); + if (!allValid) { + // 继续后续操作 return; } // 4. 添加加载状态(Element Plus 兼容处理) formLoading.value = true; - + console.log(list) // 5. 提交数据(添加超时处理) const res = await Promise.race([ - PartPurchaseOrderApi.submitForm(list), + PartPurchaseOrderApi.createPurchaseOrderMakeAndDetail(list), new Promise((_, reject) => setTimeout(() => reject(new Error("请求超时")), 30000) ) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue index 63984c75..335d6384 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue @@ -39,9 +39,14 @@ - + + + + @@ -142,6 +147,9 @@ const approve = async () => { if (checkParams.status != 1){ message.warning("该单据状态非待审核,请刷新界面!"); return; + } else if (checkParams.deleted == 1){ + message.warning("改单据已驳回,请刷新界面!"); + return; } await PartPurchaseOrderApi.updatePurchaseOrderMake(formData.value.id) @@ -154,6 +162,9 @@ const handleReject = async () => { if (checkParams.status != 1){ message.warning("该单据状态非待审核,请刷新界面!"); return; + } else if (checkParams.deleted == 1){ + message.warning("改单据已驳回,请刷新界面!"); + return; } try { @@ -180,11 +191,14 @@ const reject = async(reason) => { // 这里可以执行提交驳回逻辑 await PartPurchaseOrderApi.updatePurchaseOrderMakeNo(updateParams) message.success("已驳回"); - getList(); + // getList(); + router.push({ path: '/purchase/PartPurchaseCheck'}); + tagsViewStore.delVisitedView(router.currentRoute.value) } const cancel = async () => { - router.push({ path: '/purchase/PartPurchaseCheck'}); + router.push({ path: '/purchase/PartPurchaseCheck' }); + tagsViewStore.delVisitedView(router.currentRoute.value) } const closeForm = async () => { diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue index 389b2cc8..d07ab2b0 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue @@ -175,9 +175,11 @@ const openForm = (type: string, id?: number) => { break; case 'detail': router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} }) + // window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self'); break; case 'check': router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} }) + // window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self'); break; default: break; diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchaseorder/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchaseorder/index.vue index c07f26e4..b1c8824a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchaseorder/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchaseorder/index.vue @@ -215,20 +215,13 @@ const submitForm = async () => { } // // 3. 校验每个零件 - // for (const item of list) { - // if (item.projectMaterialPlanNo) { - // message.error(`工序${item.procedureName}中零件 ${item.materialName} 已生成物料需求计划,请确认`); - // return; - // } - // if (!item.boomArriveDate) { // 注意:原代码是 boomArriveDate,确保拼写正确 - // message.error(`工序${item.procedureName}中零件 ${item.materialName} 要求完成日期为空,请确认`); - // return; - // } - // if (!item.duEmpId) { - // message.error(`工序${item.procedureName}中零件 ${item.materialName} 责任人为空,请确认`); - // return; - // } - // } + for (const item of list) { + if (item.orderStatus==2) { + message.error(`工序${item.procedureName}中零件 ${item.boomName} 已生成采购订单,请确认`); + return; + } + + } // 4. 添加加载状态(Element Plus 兼容处理) formLoading.value = true; diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/detail.vue index 248f2c96..4ddcec45 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/detail.vue @@ -669,6 +669,7 @@ const overProcess = () =>{ await ProcessDesignApi.over(formData.value.id) await queryData(formData.value.id) message.success("修改成功!") + reload() }) .catch(() => { @@ -807,9 +808,13 @@ const submitForm = async (operate) => { const onAddItem = async() => { //条件修改:没有时间就不填 var date = new Date(); + date.setHours(0,0,0,0) + var date2 = new Date(); if(processDesignType.value == 'BLUEPRINT_WORKBLANK'){ if(formData.value.blankDate != null ){ - if(formData.value.blankDate < date.getTime()){ + var date1 = new Date(formData.value.blankDate); + date1.setHours(0,0,0,0) + if(date1.getTime()< date.getTime()){ if(formData.value.isDelay == null || formData.value.isDelay == 0){ message.error("当前任务已超期,请延期后重试!") return @@ -822,7 +827,9 @@ const onAddItem = async() => { } if(processDesignType.value == 'BLUEPRINT_2D'){ if(formData.value.twoDimDate != null ){ - if(formData.value.twoDimDate < date.getTime()){ + var date1 = new Date(formData.value.twoDimDate); + date1.setHours(0,0,0,0) + if(date1.getTime()< date.getTime()){ if(formData.value.isDelay == null || formData.value.isDelay == 0){ message.error("当前任务已超期,请延期后重试!") return @@ -836,7 +843,9 @@ const onAddItem = async() => { } if(processDesignType.value == 'BLUEPRINT_3D'){ if(formData.value.threeDimDate != null ){ - if(formData.value.threeDimDate < date.getTime()){ + var date1 = new Date(formData.value.threeDimDate); + date1.setHours(0,0,0,0) + if(date1.getTime()< date.getTime()){ if(formData.value.isDelay == null || formData.value.isDelay == 0){ message.error("当前任务已超期,请延期后重试!") return @@ -850,9 +859,9 @@ const onAddItem = async() => { if(processDesignType.value == 'BLUEPRINT_FOUNDRY_TECHNOLOGY'){ console.log(formData.value.craftEndDate) if(formData.value.craftEndDate != null ){ - console.log(date.getTime()) - console.log(formData.value.craftEndDate) - if(formData.value.craftEndDate < date.getTime()){ + var date1 = new Date(formData.value.craftEndDate); + date1.setHours(0,0,0,0) + if(date1.getTime()< date.getTime()){ if(formData.value.isDelay == null || formData.value.isDelay == 0){ message.error("当前任务已超期,请延期后重试!") return @@ -892,8 +901,8 @@ const onAddItem = async() => { progress: undefined, blueprintLink: undefined, remark: '', - createTime: date.getTime(), - beginTime:date.getTime(), + createTime: date2.getTime(), + beginTime:date2.getTime(), endTime:undefined, isOver:0, workTime:undefined, diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/audit.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/audit.vue index 2b9984b5..e9ffc7db 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/audit.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/audit.vue @@ -1,7 +1,7 @@