diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java index 4bfa6964..f96868a5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java @@ -109,6 +109,13 @@ public class MaterialPlanController { PageResult pageResult = materialPlanService.getMaterialPlanPages(pageReqVO); return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class)); } + @GetMapping("/pageData") + @Operation(summary = "获得库存补充管理分页") + @PreAuthorize("@ss.hasPermission('heli:material-plan:query')") + public CommonResult> getMaterialPlanPageData(@Valid MaterialPlanPageReqVO pageReqVO) { + PageResult pageResult = materialPlanService.getMaterialPlanPageData(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class)); + } @DeleteMapping("/delMaterialPlanBoom") @Operation(summary = "删除物料需求计划") @Parameter(name = "id", description = "编号", required = true) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java index b77c4684..f9b7d51d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java @@ -12,12 +12,14 @@ import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService; import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderys.OrderYsDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; +import com.chanko.yunxi.mes.module.heli.service.projectorder.dto.ExportResult; import com.chanko.yunxi.mes.module.heli.dal.mysql.orderys.OrderYsMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; @@ -27,7 +29,6 @@ import com.chanko.yunxi.mes.module.heli.service.deliverorder.DeliverOrderService import com.chanko.yunxi.mes.module.heli.service.orderys.OrderYsService; import com.chanko.yunxi.mes.module.heli.service.processbom.ProcessBomService; import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService; -import com.chanko.yunxi.mes.module.heli.service.purchaseorder.PurchaseOrderService; import com.chanko.yunxi.mes.module.heli.service.storage.StorageService; import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService; import io.swagger.v3.oas.annotations.Operation; @@ -49,6 +50,7 @@ import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -80,6 +82,10 @@ public class ProjectOrderController { private DeliverOrderService deliverOrderService; @Resource private ProjectOrderSubMapper projectOrderSubMapper; + @Resource + private StorageService storageService; + @Resource + private TaskDispatchService taskDispatchService; @PostMapping("/create") @Operation(summary = "创建项目订单") @PreAuthorize("@ss.hasPermission('heli:project-order:create')") @@ -200,10 +206,16 @@ public class ProjectOrderController { projectOrderDO.setBiaoZhunJianCost(standardPartsCost); - //外协加工费 + //外部材料成本 BigDecimal outsourcedProcessingFee; outsourcedProcessingFee=processBomService.outsourcedProcessingFee(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); projectOrderDO.setWaixeiCost(outsourcedProcessingFee); + + //外部材料加工费 + BigDecimal jiagong; + jiagong=processBomService.outsourcedProcessingFee1(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); + projectOrderDO.setWaixeijiagong(jiagong); + //材料成本 BigDecimal materialCost; materialCost=processBomService.materialCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); @@ -223,7 +235,7 @@ public class ProjectOrderController { yunFeiCost = deliverOrderService.getListYf(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); projectOrderDO.setYunFeiCost(yunFeiCost); - BigDecimal sum = projectOrderDO.getYunFeiCost().add(projectOrderDO.getCailiaoCost()).add(projectOrderDO.getBiaoZhunJianCost()).add(projectOrderDO.getZpCost().add(projectOrderDO.getNeibuCost()).add(projectOrderDO.getWaixeiCost())); + BigDecimal sum = projectOrderDO.getYunFeiCost().add(projectOrderDO.getCailiaoCost()).add(projectOrderDO.getBiaoZhunJianCost()).add(projectOrderDO.getZpCost().add(projectOrderDO.getNeibuCost()).add(projectOrderDO.getWaixeiCost()).add(projectOrderDO.getWaixeijiagong())); projectOrderDO.setSumCost(sum); } return success(BeanUtils.toBean(pageResult, ProjectOrderCostRespVO.class)); @@ -325,5 +337,21 @@ public class ProjectOrderController { ExcelUtils.write(response, "项目成本归集.xlsx", "数据", ProjectOrderCostRespVO.class, BeanUtils.toBean(list, ProjectOrderCostRespVO.class)); } + @GetMapping("/exportExcel") + @Operation(summary = "导出项目成本归集明细 Excel") + @PreAuthorize("@ss.hasPermission('heli:project-order:export')") + @OperateLog(type = EXPORT) + public void exportExcel(@Valid ProjectOrderCostPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + ExportResult result = projectOrderService.exportExcelData(pageReqVO); + exportExcelWithResult(response, result); + } + private void exportExcelWithResult(HttpServletResponse response, ExportResult result) throws IOException { + @SuppressWarnings("unchecked") + List dataList = (List) result.getDataList(); + @SuppressWarnings("unchecked") + Class voClass = (Class) result.getVoClass(); + ExcelUtils.write(response, result.getFileName(), result.getSheetName(), voClass, dataList); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderBiaoRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderBiaoRespVO.java new file mode 100644 index 00000000..79a35ebd --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderBiaoRespVO.java @@ -0,0 +1,45 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 项目订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProjectOrderBiaoRespVO { + + + @ExcelProperty("物料编号") + private String materialCode; + + @ExcelProperty("物料名称") + private String materialName; + + @ExcelProperty("单据类型") + private String orderType; + + @ExcelProperty(value = "物料类型", converter = DictConvert.class) + @DictFormat("heli_material_type") + private Integer materialType; + + @ExcelProperty("规格型号") + private String materialSpec; + @ExcelProperty("数量") + private String amount; + @ExcelProperty(value = "单位", converter = DictConvert.class) + @DictFormat("heli_material_unit") + private Integer unit; + @ExcelProperty("价格(元)") + private String caiGouMoney; + @ExcelProperty("单据编号") + private String stockNo; + + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCaiRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCaiRespVO.java new file mode 100644 index 00000000..7d404af9 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCaiRespVO.java @@ -0,0 +1,35 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 项目订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProjectOrderCaiRespVO { + + + @ExcelProperty("零件名称") + private String materialName; + + @ExcelProperty("材质") + private String compositionName; + + @ExcelProperty("规格型号") + private String spec; + @ExcelProperty("数量") + private String amount; + @ExcelProperty("泡沫") + private String paomo; + @ExcelProperty("下料1") + private String xialiao1; + @ExcelProperty("下料2") + private String xialiao2; + @ExcelProperty("单件成本") + private String assemblyLaborCost; + + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostPageReqVO.java index 3b466b87..dfbd2ede 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostPageReqVO.java @@ -37,7 +37,8 @@ public class ProjectOrderCostPageReqVO extends PageParam { @Schema(description = "子项目Id", example = "赵六") private Long projectSubId; - + @Schema(description = "子项目Id", example = "赵六") + private String activeIndex; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostRespVO.java index 6160132d..163e5cb5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostRespVO.java @@ -52,12 +52,15 @@ public class ProjectOrderCostRespVO { @Schema(description = "标准件成本") @ExcelProperty("标准件成本") private BigDecimal biaoZhunJianCost; - @ExcelProperty("材料成本") + @ExcelProperty("内部材料成本") private BigDecimal cailiaoCost; - @Schema(description = "外协加工费用") - @ExcelProperty("外协加工费") + @Schema(description = "外部材料成本") + @ExcelProperty("外部材料成本") private BigDecimal waixeiCost; + @Schema(description = "外部加工费") + @ExcelProperty("外部加工费") + private BigDecimal waixeijiagong; @Schema(description = "内部工时费") @ExcelProperty("内部工时费") private BigDecimal neibuCost; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderJiaGongRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderJiaGongRespVO.java new file mode 100644 index 00000000..28f62324 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderJiaGongRespVO.java @@ -0,0 +1,84 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 项目订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProjectOrderJiaGongRespVO { + + + @ExcelProperty("零件名称") + private String materialName; + + @ExcelProperty("材质") + private String compositionName; + + @ExcelProperty("规格型号") + private String spec; + @ExcelProperty("数量") + private String amount; + @ExcelProperty("电焊") + private String dianhan; + @ExcelProperty("编程") + private String biacheng; + @ExcelProperty("开粗1") + private String kaicu1; + @ExcelProperty("开粗2") + private String kaicu2; + @ExcelProperty("铣床1") + private String xianchuang1; + @ExcelProperty("铣床2") + private String xianchuang2; + @ExcelProperty("车床1") + private String chechuang1; + @ExcelProperty("车床2") + private String chechuang2; + @ExcelProperty("热处理1") + private String renchuli1; + @ExcelProperty("热处理2") + private String renchuli2; + @ExcelProperty("热处理3") + private String renchuli3; + @ExcelProperty("磨床1") + private String mochuang1; + @ExcelProperty("磨床2") + private String mochuang2; + @ExcelProperty("数控1") + private String shukong1; + @ExcelProperty("数控2") + private String shukong2; + @ExcelProperty("数控3") + private String shukong3; + @ExcelProperty("线切割1") + private String xianqeige1; + @ExcelProperty("线切割2") + private String xianqeige2; + @ExcelProperty("电极") + private String dianji; + @ExcelProperty("火花1") + private String huohua1; + @ExcelProperty("火花2") + private String huohua2; + @ExcelProperty("刻字") + private String kezi; + @ExcelProperty("网格1") + private String wangge1; + @ExcelProperty("网格2") + private String wangge2; + @ExcelProperty("深孔钻1") + private String shengkongzuan1; + @ExcelProperty("深孔钻2") + private String shengkongzuan2; + @ExcelProperty("钻孔1") + private String zuankong1; + @ExcelProperty("钻孔2") + private String zuankong2; + @ExcelProperty("单件成本") + private String assemblyLaborCost; + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderNCRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderNCRespVO.java new file mode 100644 index 00000000..48c4c5c0 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderNCRespVO.java @@ -0,0 +1,35 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 项目订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProjectOrderNCRespVO { + + + @ExcelProperty("零件名称") + private String materialName; + + @ExcelProperty("材质") + private String compositionName; + + @ExcelProperty("规格型号") + private String spec; + @ExcelProperty("数量") + private String amount; + @ExcelProperty("下料1") + private String xialiao1; + @ExcelProperty("下料2") + private String xialiao2; + @ExcelProperty("单件成本") + private String assemblyLaborCost; + + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderNGRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderNGRespVO.java new file mode 100644 index 00000000..c52ea458 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderNGRespVO.java @@ -0,0 +1,90 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 项目订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProjectOrderNGRespVO { + + + @ExcelProperty("零件名称") + private String materialName; + + @ExcelProperty("材质") + private String compositionName; + + @ExcelProperty("规格型号") + private String spec; + @ExcelProperty("数量") + private String amount; + @ExcelProperty("泡沫") + private String paomo; + @ExcelProperty("下料1") + private String xialiao1; + @ExcelProperty("下料2") + private String xialiao2; + @ExcelProperty("电焊") + private String dianhan; + @ExcelProperty("编程") + private String biacheng; + @ExcelProperty("开粗1") + private String kaicu1; + @ExcelProperty("开粗2") + private String kaicu2; + @ExcelProperty("铣床1") + private String xianchuang1; + @ExcelProperty("铣床2") + private String xianchuang2; + @ExcelProperty("车床1") + private String chechuang1; + @ExcelProperty("车床2") + private String chechuang2; + @ExcelProperty("热处理1") + private String renchuli1; + @ExcelProperty("热处理2") + private String renchuli2; + @ExcelProperty("热处理3") + private String renchuli3; + @ExcelProperty("磨床1") + private String mochuang1; + @ExcelProperty("磨床2") + private String mochuang2; + @ExcelProperty("数控1") + private String shukong1; + @ExcelProperty("数控2") + private String shukong2; + @ExcelProperty("数控3") + private String shukong3; + @ExcelProperty("线切割1") + private String xianqeige1; + @ExcelProperty("线切割2") + private String xianqeige2; + @ExcelProperty("电极") + private String dianji; + @ExcelProperty("火花1") + private String huohua1; + @ExcelProperty("火花2") + private String huohua2; + @ExcelProperty("刻字") + private String kezi; + @ExcelProperty("网格1") + private String wangge1; + @ExcelProperty("网格2") + private String wangge2; + @ExcelProperty("深孔钻1") + private String shengkongzuan1; + @ExcelProperty("深孔钻2") + private String shengkongzuan2; + @ExcelProperty("钻孔1") + private String zuankong1; + @ExcelProperty("钻孔2") + private String zuankong2; + @ExcelProperty("单件成本") + private String assemblyLaborCost; + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSubPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSubPageReqVO.java index be3d45f6..0581eb61 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSubPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSubPageReqVO.java @@ -27,4 +27,6 @@ public class ProjectOrderSubPageReqVO extends PageParam { private String nameSim; @Schema(description = "客户简称", example = "赵六") private String customerName; + @Schema(description = "发货状态", example = "赵六") + private Integer deliveryStatus; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderYunRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderYunRespVO.java new file mode 100644 index 00000000..7075e0c3 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderYunRespVO.java @@ -0,0 +1,42 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; +import com.chanko.yunxi.mes.framework.excel.core.convert.TimestampToDateConvert; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.*; + +@Schema(description = "管理后台 - 项目订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProjectOrderYunRespVO { + @ExcelProperty(value = "发货日期", converter = TimestampToDateConvert.class) + private LocalDateTime deliverDate; + + @ExcelProperty("发货数量") + private String amount; + + @ExcelProperty("重量") + private String weight; + + @ExcelProperty("发货人") + private String deliverPersonName; + @ExcelProperty("运费") + private String yunFei; + + + + + + + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderZPRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderZPRespVO.java new file mode 100644 index 00000000..db794531 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderZPRespVO.java @@ -0,0 +1,41 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 项目订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProjectOrderZPRespVO { + + + @ExcelProperty("子项目编码") + private String projectSubCode; + + @ExcelProperty("子项目名称") + private String projectSubName; + @ExcelProperty("数量") + private String amount; + @ExcelProperty("装配") + private String zhuangpei; + @ExcelProperty("包装") + private String baozhuang; + @ExcelProperty("钻孔") + private String zhuankong; + @ExcelProperty("检验成本") + private String jianyan; + @ExcelProperty("单件成本") + private String assemblyLaborCost; + + + + + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java index 22000807..aac08bf6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java @@ -276,8 +276,8 @@ public class TaskDispatchController { @GetMapping("/getListCl") @Operation(summary = "获得外部材料成本") @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") - public CommonResult> getListCl(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ) { - List list= taskDispatchService.getListCl(id,projectSubId); + public CommonResult> getListCl(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ,@RequestParam("type") Integer type) { + List list= taskDispatchService.getListCl(id,projectSubId, type); return success( list); } @GetMapping("/getListNg") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java index 9f50cce0..8da47d81 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java @@ -298,6 +298,8 @@ public class ProjectOrderDO extends BaseDO { @TableField(exist = false) private BigDecimal waixeiCost; @TableField(exist = false) + private BigDecimal waixeijiagong; + @TableField(exist = false) private BigDecimal sumCost; @TableField(exist = false) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java index 2a1bb169..112d3074 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -169,6 +170,76 @@ public class TaskDispatchDO extends BaseDO { private BigDecimal assemblyLaborCost; @TableField(exist = false) private BigDecimal assemblyLaborSum; + @TableField(exist = false) + private BigDecimal paomo; + @TableField(exist = false) + private BigDecimal xialiao1; + @TableField(exist = false) + private BigDecimal xialiao2; + @TableField(exist = false) + private BigDecimal dianhan; + @TableField(exist = false) + private BigDecimal biacheng; + @TableField(exist = false) + private BigDecimal kaicu1; + @TableField(exist = false) + private BigDecimal kaicu2; + @TableField(exist = false) + private BigDecimal xianchuang1; + @TableField(exist = false) + private BigDecimal xianchuang2; + @TableField(exist = false) + private BigDecimal chechuang1; + @TableField(exist = false) + private BigDecimal chechuang2; + @TableField(exist = false) + private BigDecimal renchuli1; + @TableField(exist = false) + private BigDecimal renchuli2; + @TableField(exist = false) + private BigDecimal renchuli3; + @TableField(exist = false) + private BigDecimal mochuang1; + @TableField(exist = false) + private BigDecimal mochuang2; + @TableField(exist = false) + private BigDecimal shukong1; + @TableField(exist = false) + private BigDecimal shukong2; + @TableField(exist = false) + private BigDecimal shukong3; + @TableField(exist = false) + private BigDecimal xianqeige1; + @TableField(exist = false) + private BigDecimal xianqeige2; + @TableField(exist = false) + private BigDecimal dianji; + @TableField(exist = false) + private BigDecimal huohua1; + @TableField(exist = false) + private BigDecimal huohua2; + @TableField(exist = false) + private BigDecimal kezi; + @TableField(exist = false) + private BigDecimal wangge1; + @TableField(exist = false) + private BigDecimal wangge2; + @TableField(exist = false) + private BigDecimal shengkongzuan1; + @TableField(exist = false) + private BigDecimal shengkongzuan2; + @TableField(exist = false) + private BigDecimal zuankong1; + @TableField(exist = false) + private BigDecimal zuankong2; + @TableField(exist = false) + private BigDecimal zhuangpei; + @TableField(exist = false) + private BigDecimal baozhuang; + @TableField(exist = false) + private BigDecimal zhuankong; + @TableField(exist = false) + private BigDecimal jianyan; public boolean canSave(){ return TaskDispatchStatusEnum.SAVE.getCode() == this.dispatchStatus.intValue(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java index 9ce683cf..d7c67ef1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java @@ -175,6 +175,9 @@ public interface MaterialMapper extends BaseMapperX { .disableSubLogicDel() .groupBy(MaterialDO::getId) .having("COALESCE(SUM(s.yard_amount), 0) < COALESCE(MAX(t.inv_safe), 0)"); + subQuery .eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name()) + .eq(MaterialDO::getStatus,1) + .eq(MaterialDO::getTenantId, 2); //执行子查询获取符合条件的matCode List qualifiedMatCodes = this.selectList(subQuery) .stream() diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplan/MaterialPlanMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplan/MaterialPlanMapper.java index 1cf80934..c63d4dd7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplan/MaterialPlanMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplan/MaterialPlanMapper.java @@ -102,6 +102,23 @@ public interface MaterialPlanMapper extends BaseMapperX { void delMaterialPlan(@Param("id") Long id); void delMaterialPlanBoom(@Param("bomDetailId")Long bomDetailId, @Param("procedureId")Long procedureId); + + default PageResult getMaterialPlanPageData(MaterialPlanPageReqVO pageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(MaterialPlanDO.class) + .leftJoin(MaterialPlanBoomDO.class, "b", MaterialPlanBoomDO::getProjectMaterialPlanId, MaterialPlanDO::getId) + .groupBy(MaterialPlanDO::getId) + .orderByDesc(MaterialPlanDO::getCreateTime); + query.like(!StringUtils.isEmpty(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo()) + .like(!StringUtils.isEmpty(pageReqVO.getMaterialName()), MaterialPlanBoomDO::getMatName, pageReqVO.getMaterialName()) + .eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType()); + if (pageReqVO.getMatPlanDate() != null) { + query.between( MaterialPlanDO::getMatPlanDate, pageReqVO.getMatPlanDate()[0], pageReqVO.getMatPlanDate()[1]); + } + + return selectPage(pageReqVO, query); + } + // default PageResult selectPage(MaterialPlanPageReqVO reqVO) { // return selectPage(reqVO, new LambdaQueryWrapperX() // .eqIfPresent(MaterialPlanDO::getId, reqVO.getId()) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java index 15330be5..a0b534f1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java @@ -223,4 +223,6 @@ public interface ProcessBomMapper extends BaseMapperX { void deleteOrderId(@Param("id") Long id); BigDecimal cuttingMaterials(@Param("id") Long id, @Param("projectSubId")Long projectSubId); + + BigDecimal outsourcingExpenses1(@Param("id") Long id,@Param("projectSubId") Long projectSubId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java index 53a71a59..28294776 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java @@ -177,7 +177,7 @@ public interface ProjectOrderMapper extends BaseMapperX { " AND pso.tenant_id =2") Map getOnTimeCompletionRate(); - default List selectOrder(){ + default List selectOrder(){ LocalDateTime startTime = LocalDate.of(2025, 6, 1).atStartOfDay(); // 2025-06-01 00:00:00 return selectList(new LambdaQueryWrapper() .ne(ProjectOrderDO::getDeliveryStatus,3) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java index 352e3863..735a9aff 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder; +import cn.hutool.core.util.ObjectUtil; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderSubPageReqVO; @@ -18,6 +19,7 @@ import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.*; +import org.aspectj.weaver.ast.Not; import org.springframework.util.StringUtils; import java.util.List; @@ -146,8 +148,8 @@ public interface ProjectOrderSubMapper extends BaseMapperX { .like(!StringUtils.isEmpty(pageReqVO.getProjectName()), ProjectOrderDO::getProjectName, pageReqVO.getProjectName()) .like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName()) .like(!StringUtils.isEmpty(pageReqVO.getProjectSubCode()), PlanSubDO::getProjectSubCode, pageReqVO.getProjectSubCode()) - .like(!StringUtils.isEmpty(pageReqVO.getCustomerName()), CustomerDO::getName, pageReqVO.getCustomerName()); - + .like(!StringUtils.isEmpty(pageReqVO.getCustomerName()), CustomerDO::getName, pageReqVO.getCustomerName()) + .ne(ObjectUtil.isNotEmpty(pageReqVO.getDeliveryStatus()),ProjectOrderDO::getDeliveryStatus,pageReqVO.getDeliveryStatus()); return selectPage(pageReqVO, query); } @Delete("delete from project_sale_order_sub where project_order_id = #{id}") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index 2000eb32..cdfe8ea5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -1081,4 +1081,16 @@ public interface TaskDispatchDetailMapper extends BaseMapperX getTaskDispatchDetailsBatch(List dispatchIds, Integer type){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(TaskDispatchDetailDO.class) + .leftJoin(ProcedureDO.class,"a",ProcedureDO::getId,TaskDispatchDetailDO::getProcedureId); + query.in(TaskDispatchDetailDO::getDispatchId,dispatchIds); + if (type == 1){ + query.in(ProcedureDO::getName,"泡沫","下料1","下料2"); + }else{ + query.notIn(ProcedureDO::getName,"泡沫","下料1","下料2"); + } + return selectList(query); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java index 03992aaa..ffe19a28 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java @@ -240,4 +240,21 @@ public interface TaskDispatchMapper extends BaseMapperX { } + default List getListCl1(Long id, Long projectSubId, Integer type){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(TaskDispatchDO.class) + .select("p.material_name as materialName","z.name as compositionName","p.spec as spec","p.amount*s.amount as amount") + .leftJoin(ProcessBomDetailDO.class, "p", ProcessBomDetailDO::getId,TaskDispatchDO::getBomDetailId) + .leftJoin(CompositionDO.class, "z", CompositionDO::getId, ProcessBomDetailDO::getCompositionId) + .leftJoin(ProjectOrderSubDO.class,"s", ProjectOrderSubDO::getId, TaskDispatchDO::getProjectSubId); + query.eq(TaskDispatchDO::getProjectId, id) + .eq(TaskDispatchDO::getProjectSubId,projectSubId) + .eq(TaskDispatchDO::getDispatchType,"PRODUCTION"); + if (type == 1){ + + } + + return selectList(query); + + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java index 9872409c..55d13be5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java @@ -86,4 +86,6 @@ public interface MaterialPlanService { CommonResult delMaterialPlanBoom(Long id, String projectMaterialPlanNo); Boolean saveLog(TaskDispatchDetailDO detailDO); + + PageResult getMaterialPlanPageData(MaterialPlanPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java index 85da35fb..c41f8b0c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java @@ -631,4 +631,9 @@ public class MaterialPlanServiceImpl implements MaterialPlanService { return true; } + @Override + public PageResult getMaterialPlanPageData(MaterialPlanPageReqVO pageReqVO) { + return materialPlanMapper.getMaterialPlanPageData(pageReqVO); + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java index ae74a0a6..f4b96739 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java @@ -122,4 +122,6 @@ public interface ProcessBomService { CommonResult selectPlanTaskStatus(String id); List getProcessBomExcel(List collect); + + BigDecimal outsourcedProcessingFee1(Long id, Long projectSubId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java index 19823ff0..8db689cb 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java @@ -1704,6 +1704,13 @@ public class ProcessBomServiceImpl implements ProcessBomService { return processBomDetailMapper.getProcessBomExcel( collect); } + @Override + public BigDecimal outsourcedProcessingFee1(Long id, Long projectSubId) { + BigDecimal cost=processBomMapper.outsourcingExpenses1(id,projectSubId); + if (ObjectUtil.isEmpty(cost)) cost=BigDecimal.ZERO; + return cost; + } + private void createProcessBomDetailList(String bomCode,Long bomId, List list,Integer num) { LocalDateTime now = LocalDateTime.now(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java index 2464e393..effc2255 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java @@ -8,6 +8,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.Project import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderSubPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; +import com.chanko.yunxi.mes.module.heli.service.projectorder.dto.ExportResult; import javax.validation.Valid; import java.util.List; @@ -60,6 +61,15 @@ public interface ProjectOrderService { PageResult getProjectOrderCostPage(ProjectOrderCostPageReqVO pageReqVO); ProjectOrderDO getProjectOrderCost(Long id,Long projectSubId); + + /** + * 导出项目成本归集明细数据 + * + * @param pageReqVO 导出条件 + * @return 导出结果 + */ + ExportResult exportExcelData(ProjectOrderCostPageReqVO pageReqVO); + // ==================== 子表(项目订单子项目) ==================== /** diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java index 352b1d73..58d6f897 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java @@ -9,29 +9,22 @@ 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.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; -import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderCostPageReqVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderPageReqVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderSaveReqVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderSubPageReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.AttentiontodoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderys.OrderYsDO; -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.plansubdetail.PlanSubDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantaskbom.PlanTaskBomDO; 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.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.orderys.OrderYsMapper; @@ -54,9 +47,13 @@ import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.heli.manager.CrossOrderManager; import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService; import com.chanko.yunxi.mes.module.heli.service.customer.CustomerService; +import com.chanko.yunxi.mes.module.heli.service.deliverorder.DeliverOrderService; import com.chanko.yunxi.mes.module.heli.service.processbom.ProcessBomService; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.heli.service.storage.StorageService; import com.chanko.yunxi.mes.module.heli.service.storagelog.StorageLogService; +import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService; +import com.chanko.yunxi.mes.module.heli.service.projectorder.dto.ExportConfig; import com.chanko.yunxi.mes.module.infra.controller.admin.file.vo.file.FilePageReqVO; import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO; import com.chanko.yunxi.mes.module.infra.service.file.FileService; @@ -64,20 +61,19 @@ import com.chanko.yunxi.mes.module.system.api.user.AdminUserApi; import com.github.dadiyang.equator.FieldInfo; import com.github.dadiyang.equator.GetterBaseEquator; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import jodd.system.SystemUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.lang.reflect.Method; import java.math.BigDecimal; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_ORDER; @@ -147,6 +143,13 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { private ProcessBomDetailMapper processBomDetailMapper; @Resource private ProcessDesignMapper ProcessDesignMapper; + @Resource + private StorageService storageService; + @Resource + private TaskDispatchService taskDispatchService; + @Resource + @Lazy + private DeliverOrderService deliverOrderService; @Override @Transactional(rollbackFor = Exception.class) @@ -794,4 +797,141 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { projectOrderSubMapper.deleteByProjectOrderId(projectOrderId); } + @Override + public com.chanko.yunxi.mes.module.heli.service.projectorder.dto.ExportResult exportExcelData(ProjectOrderCostPageReqVO pageReqVO) { + ExportConfig config = getExportConfig(pageReqVO); + Object dataList = config.getDataSupplier().get(); + if (config.getProcessor() != null && dataList instanceof List) { + config.getProcessor().process((List) dataList); + } + @SuppressWarnings("unchecked") + List voList = BeanUtils.toBean((List) dataList, config.getVoClass()); + return new com.chanko.yunxi.mes.module.heli.service.projectorder.dto.ExportResult( + config.getFileName(), "数据", config.getVoClass(), voList + ); + } + + private ExportConfig getExportConfig(ProjectOrderCostPageReqVO pageReqVO) { + String activeIndex = pageReqVO.getActiveIndex(); + switch (activeIndex) { + case "biao": + return new ExportConfig( + () -> storageService.getList(pageReqVO.getId(), pageReqVO.getProjectSubId()), + "标准件成本.xlsx", ProjectOrderBiaoRespVO.class, null + ); + case "neicai": + return new ExportConfig( + () -> taskDispatchService.getListNc(pageReqVO.getId(), pageReqVO.getProjectSubId()), + "内部材料成本.xlsx", ProjectOrderNCRespVO.class, null + ); + case "cai": + return new ExportConfig( + () -> taskDispatchService.getListCl(pageReqVO.getId(), pageReqVO.getProjectSubId(), 1), + "外部材料成本.xlsx", ProjectOrderCaiRespVO.class, new ExportConfig.FieldProcessor() { + @Override + public void process(List list) { + processMaterialFields((List) list); + } + } + ); + case "jiagong": + return new ExportConfig( + () -> taskDispatchService.getListCl(pageReqVO.getId(), pageReqVO.getProjectSubId(), 2), + "外部加工费.xlsx", ProjectOrderJiaGongRespVO.class, new ExportConfig.FieldProcessor() { + @Override + public void process(List list) { + processProcessingFields((List) list); + } + } + ); + case "neigong": + return new ExportConfig( + () -> taskDispatchService.getListNg(pageReqVO.getId(), pageReqVO.getProjectSubId()), + "内部工时费.xlsx", ProjectOrderNGRespVO.class, new ExportConfig.FieldProcessor() { + @Override + public void process(List list) { + processAllFields((List) list); + } + } + ); + case "zhuang": + return new ExportConfig( + () -> taskDispatchService.getListZp(pageReqVO.getId(), pageReqVO.getProjectSubId()), + "装配成本.xlsx", ProjectOrderZPRespVO.class, new ExportConfig.FieldProcessor() { + @Override + public void process(List list) { + processAssemblyFields((List) list); + } + } + ); + default: + return new ExportConfig( + () -> deliverOrderService.getListYfDetails(pageReqVO.getId(), pageReqVO.getProjectSubId()), + "运费成本.xlsx", ProjectOrderYunRespVO.class, null + ); + } + } + + private void processMaterialFields(List list) { + processMapFields(list, new String[][]{ + {"泡沫", "setPaomo"}, + {"下料1", "setXialiao1"}, + {"下料2", "setXialiao2"} + }); + } + + private void processProcessingFields(List list) { + processMapFields(list, new String[][]{ + {"电焊", "setDianhan"}, {"编程", "setBiacheng"}, {"开粗1", "setKaicu1"}, {"开粗2", "setKaicu2"}, + {"铣床1", "setXianchuang1"}, {"铣床2", "setXianchuang2"}, {"车床1", "setChechuang1"}, {"车床2", "setChechuang2"}, + {"热处理1", "setRenchuli1"}, {"热处理2", "setRenchuli2"}, {"热处理3", "setRenchuli3"}, + {"磨床1", "setMochuang1"}, {"磨床2", "setMochuang2"}, {"数控1", "setShukong1"}, {"数控2", "setShukong2"}, + {"数控3", "setShukong3"}, {"线切割1", "setXianqeige1"}, {"线切割2", "setXianqeige2"}, + {"电极", "setDianji"}, {"火花1", "setHuohua1"}, {"火花2", "setHuohua2"}, {"刻字", "setKezi"}, + {"网格1", "setWangge1"}, {"网格2", "setWangge2"}, {"深孔钻1", "setShengkongzuan1"}, + {"深孔钻2", "setShengkongzuan2"}, {"钻孔1", "setZuankong1"}, {"钻孔2", "setZuankong2"} + }); + } + + private void processAllFields(List list) { + processMapFields(list, new String[][]{ + {"泡沫", "setPaomo"}, {"下料1", "setXialiao1"}, {"下料2", "setXialiao2"}, {"电焊", "setDianhan"}, + {"编程", "setBiacheng"}, {"开粗1", "setKaicu1"}, {"开粗2", "setKaicu2"}, {"铣床1", "setXianchuang1"}, + {"铣床2", "setXianchuang2"}, {"车床1", "setChechuang1"}, {"车床2", "setChechuang2"}, {"热处理1", "setRenchuli1"}, + {"热处理2", "setRenchuli2"}, {"热处理3", "setRenchuli3"}, {"磨床1", "setMochuang1"}, {"磨床2", "setMochuang2"}, + {"数控1", "setShukong1"}, {"数控2", "setShukong2"}, {"数控3", "setShukong3"}, {"线切割1", "setXianqeige1"}, + {"线切割2", "setXianqeige2"}, {"电极", "setDianji"}, {"火花1", "setHuohua1"}, {"火花2", "setHuohua2"}, + {"刻字", "setKezi"}, {"网格1", "setWangge1"}, {"网格2", "setWangge2"}, {"深孔钻1", "setShengkongzuan1"}, + {"深孔钻2", "setShengkongzuan2"}, {"钻孔1", "setZuankong1"}, {"钻孔2", "setZuankong2"} + }); + } + + private void processAssemblyFields(List list) { + processMapFields(list, new String[][]{ + {"装配", "setZhuangpei"}, {"包装", "setBaozhuang"}, {"钻孔", "setZhuankong"}, {"检验", "setJianyan"} + }); + } + + private void processMapFields(List list, String[][] fieldMappings) { + for (Object item : list) { + if (item instanceof TaskDispatchDO) { + TaskDispatchDO taskDispatchDO = (TaskDispatchDO) item; + Map map = taskDispatchDO.getMap(); + if (ObjectUtil.isNotEmpty(map)) { + for (String[] mapping : fieldMappings) { + BigDecimal value = map.get(mapping[0]); + if (ObjectUtil.isNotEmpty(value)) { + try { + Method method = taskDispatchDO.getClass().getMethod(mapping[1], BigDecimal.class); + method.invoke(taskDispatchDO, value); + } catch (Exception e) { + log.error("Failed to set field: {}, error: {}", mapping[1], e.getMessage(), e); + } + } + } + } + } + } + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java index fd98141e..cff64616 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java @@ -106,7 +106,7 @@ public interface TaskDispatchService { List getListZp(Long id, Long projectSubId); - List getListCl(Long id, Long projectSubId); + List getListCl(Long id, Long projectSubId,Integer type); List> getOwners(Long id); 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 025d10bb..402d5317 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 @@ -1316,7 +1316,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } @Override - public List getListCl(Long id, Long projectSubId) { + public List getListCl(Long id, Long projectSubId, Integer type) { // List taskDispatchDOS = taskDispatchMapper.getListCl(id, projectSubId); // for (TaskDispatchDO taskDispatchDO : taskDispatchDOS) { // LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -1362,7 +1362,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { .collect(Collectors.toList()); // 2. 批量查询所有TaskDispatchDetailDO - List allDetailDOS = getTaskDispatchDetailsBatch(dispatchIds); + List allDetailDOS = getTaskDispatchDetailsBatch1(dispatchIds, type); if (ObjectUtil.isEmpty(allDetailDOS)){ return taskDispatchDOS; } @@ -1435,6 +1435,10 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { wrapper.in(TaskDispatchDetailDO::getDispatchId, dispatchIds); return taskDispatchDetailMapper.selectList(wrapper); } + private List getTaskDispatchDetailsBatch1(List dispatchIds,Integer type) { + + return taskDispatchDetailMapper.getTaskDispatchDetailsBatch(dispatchIds,type); + } private List getTaskDispatchDetails(List dispatchIds) { return taskDispatchDetailMapper.getTaskDispatchDetails(dispatchIds); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml index 56c4e327..bcebc572 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml @@ -119,8 +119,9 @@ SUM(s.storage_amount) AS total_storage FROM project_purchase_order_no_detail t JOIN project_storage_in_detail s on s.purchase_order_no_detail_id=t.id and s.deleted=0 and s.tenant_id=2 - left join pro_process_bom_detail d on d.id=t.boom_detail_id - where t.deleted=0 and t.tenant_id=2 and d.type=2 and t.project_id=#{id} and t.project_plan_sub_id=#{projectSubId} + left join pro_process_bom_detail d on d.id=t.boom_detail_id and d.deleted=0 and d.tenant_id=2 + LEFT JOIN base_procedure P ON P.id = t.procedure_id AND P.deleted = 0 AND P.tenant_id = 2 + where t.deleted=0 and t.tenant_id=2 and d.type=2 and t.project_id=#{id} and t.project_plan_sub_id=#{projectSubId} AND P.name in ('泡沫','下料1','下料2') GROUP BY s.id ) AS subquery; @@ -131,6 +132,21 @@ left join pro_task_in_report r on r.dispatch_detail_id=t1.id and r.deleted=0 and r.tenant_id=2 where t.deleted=0 and t.dispatch_type='PRODUCTION' and t.project_id=#{id} and t.project_sub_id= #{projectSubId} + UPDATE pro_process_bom_detail diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts index 117ff85a..fb37f480 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts @@ -49,6 +49,10 @@ export const exportMaterialPlan = async (params) => { export const getMaterialPlanPages = async (params) => { return await request.get({ url: `/heli/material-plan/pages`, params }) } +// 查询库存补充管理分页 +export const getMaterialPlanPageData = async (params) => { + return await request.get({ url: `/heli/material-plan/pageData`, params }) +} // 删除物料需求计划 export const delMaterialPlan = async (id: number) => { return await request.delete({ url: `/heli/material-plan/delMaterialPlan?id=` + id }) diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts index 1a099c65..dabcea1d 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts @@ -44,8 +44,8 @@ export const getListYfDetails = async (id: number,projectSubId: number) => { return await request.get({ url: `/heli/deliver-order/getListYfDetails?id=`+id+`&projectSubId=`+projectSubId }) } //查询外部材料成本 -export const getListcl = async (id: number,projectSubId: number) => { - return await request.get({ url: `/heli/task-dispatch/getListCl?id=`+id+`&projectSubId=`+projectSubId }) +export const getListcl = async (id: number,projectSubId: number,type:number) => { + return await request.get({ url: `/heli/task-dispatch/getListCl?id=`+id+`&projectSubId=`+projectSubId+`&type=`+type }) } //查询内部材料成本 export const getListNc = async (id: number,projectSubId: number) => { @@ -64,3 +64,7 @@ export const getListZp = async (id: number,projectSubId: number) => { export const exportCost = async (params) => { return await request.download({ url: `/heli/project-order/exportCost`, params }) } +// 导出任务报工 Excel +export const exportExcel = async (params) => { + return await request.download({ url: `/heli/project-order/exportExcel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/edit.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/edit.vue index 6b18b16c..97e14010 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/edit.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/edit.vue @@ -49,7 +49,11 @@ - + + + + + @@ -73,11 +77,23 @@ - + + + + + 导出 + + @@ -88,6 +104,7 @@ {{ }} {{ }} {{ }} + {{ }} {{ }} {{ }} {{ }} @@ -161,11 +178,55 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -174,33 +235,6 @@ - - - - - - - - -