成本归集导出

This commit is contained in:
z 2026-03-18 09:46:40 +08:00
parent 41428661ea
commit 9a663001a5
37 changed files with 880 additions and 68 deletions

View File

@ -109,6 +109,13 @@ public class MaterialPlanController {
PageResult<MaterialPlanDO> pageResult = materialPlanService.getMaterialPlanPages(pageReqVO); PageResult<MaterialPlanDO> pageResult = materialPlanService.getMaterialPlanPages(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class)); return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class));
} }
@GetMapping("/pageData")
@Operation(summary = "获得库存补充管理分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
public CommonResult<PageResult<MaterialPlanRespVO>> getMaterialPlanPageData(@Valid MaterialPlanPageReqVO pageReqVO) {
PageResult<MaterialPlanDO> pageResult = materialPlanService.getMaterialPlanPageData(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class));
}
@DeleteMapping("/delMaterialPlanBoom") @DeleteMapping("/delMaterialPlanBoom")
@Operation(summary = "删除物料需求计划") @Operation(summary = "删除物料需求计划")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)

View File

@ -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.framework.operatelog.core.service.OperateLogFrameworkService;
import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.*; 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.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.orderys.OrderYsDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; 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.projectorder.ProjectOrderSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO; 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.storage.StorageDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; 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.orderys.OrderYsMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; 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.orderys.OrderYsService;
import com.chanko.yunxi.mes.module.heli.service.processbom.ProcessBomService; 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.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.storage.StorageService;
import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService; import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -49,6 +50,7 @@ import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -80,6 +82,10 @@ public class ProjectOrderController {
private DeliverOrderService deliverOrderService; private DeliverOrderService deliverOrderService;
@Resource @Resource
private ProjectOrderSubMapper projectOrderSubMapper; private ProjectOrderSubMapper projectOrderSubMapper;
@Resource
private StorageService storageService;
@Resource
private TaskDispatchService taskDispatchService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建项目订单") @Operation(summary = "创建项目订单")
@PreAuthorize("@ss.hasPermission('heli:project-order:create')") @PreAuthorize("@ss.hasPermission('heli:project-order:create')")
@ -200,10 +206,16 @@ public class ProjectOrderController {
projectOrderDO.setBiaoZhunJianCost(standardPartsCost); projectOrderDO.setBiaoZhunJianCost(standardPartsCost);
//协加工费 //部材料成本
BigDecimal outsourcedProcessingFee; BigDecimal outsourcedProcessingFee;
outsourcedProcessingFee=processBomService.outsourcedProcessingFee(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); outsourcedProcessingFee=processBomService.outsourcedProcessingFee(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setWaixeiCost(outsourcedProcessingFee); projectOrderDO.setWaixeiCost(outsourcedProcessingFee);
//外部材料加工费
BigDecimal jiagong;
jiagong=processBomService.outsourcedProcessingFee1(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setWaixeijiagong(jiagong);
//材料成本 //材料成本
BigDecimal materialCost; BigDecimal materialCost;
materialCost=processBomService.materialCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); materialCost=processBomService.materialCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
@ -223,7 +235,7 @@ public class ProjectOrderController {
yunFeiCost = deliverOrderService.getListYf(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); yunFeiCost = deliverOrderService.getListYf(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setYunFeiCost(yunFeiCost); 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); projectOrderDO.setSumCost(sum);
} }
return success(BeanUtils.toBean(pageResult, ProjectOrderCostRespVO.class)); return success(BeanUtils.toBean(pageResult, ProjectOrderCostRespVO.class));
@ -325,5 +337,21 @@ public class ProjectOrderController {
ExcelUtils.write(response, "项目成本归集.xlsx", "数据", ProjectOrderCostRespVO.class, ExcelUtils.write(response, "项目成本归集.xlsx", "数据", ProjectOrderCostRespVO.class,
BeanUtils.toBean(list, 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 <T> void exportExcelWithResult(HttpServletResponse response, ExportResult result) throws IOException {
@SuppressWarnings("unchecked")
List<T> dataList = (List<T>) result.getDataList();
@SuppressWarnings("unchecked")
Class<T> voClass = (Class<T>) result.getVoClass();
ExcelUtils.write(response, result.getFileName(), result.getSheetName(), voClass, dataList);
}
} }

View File

@ -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;
}

View File

@ -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;
}

View File

@ -37,7 +37,8 @@ public class ProjectOrderCostPageReqVO extends PageParam {
@Schema(description = "子项目Id", example = "赵六") @Schema(description = "子项目Id", example = "赵六")
private Long projectSubId; private Long projectSubId;
@Schema(description = "子项目Id", example = "赵六")
private String activeIndex;
} }

View File

@ -52,12 +52,15 @@ public class ProjectOrderCostRespVO {
@Schema(description = "标准件成本") @Schema(description = "标准件成本")
@ExcelProperty("标准件成本") @ExcelProperty("标准件成本")
private BigDecimal biaoZhunJianCost; private BigDecimal biaoZhunJianCost;
@ExcelProperty("材料成本") @ExcelProperty("内部材料成本")
private BigDecimal cailiaoCost; private BigDecimal cailiaoCost;
@Schema(description = "协加工费用") @Schema(description = "部材料成本")
@ExcelProperty("协加工费") @ExcelProperty("部材料成本")
private BigDecimal waixeiCost; private BigDecimal waixeiCost;
@Schema(description = "外部加工费")
@ExcelProperty("外部加工费")
private BigDecimal waixeijiagong;
@Schema(description = "内部工时费") @Schema(description = "内部工时费")
@ExcelProperty("内部工时费") @ExcelProperty("内部工时费")
private BigDecimal neibuCost; private BigDecimal neibuCost;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -27,4 +27,6 @@ public class ProjectOrderSubPageReqVO extends PageParam {
private String nameSim; private String nameSim;
@Schema(description = "客户简称", example = "赵六") @Schema(description = "客户简称", example = "赵六")
private String customerName; private String customerName;
@Schema(description = "发货状态", example = "赵六")
private Integer deliveryStatus;
} }

View File

@ -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;
}

View File

@ -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;
}

View File

@ -276,8 +276,8 @@ public class TaskDispatchController {
@GetMapping("/getListCl") @GetMapping("/getListCl")
@Operation(summary = "获得外部材料成本") @Operation(summary = "获得外部材料成本")
@PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')")
public CommonResult<List<TaskDispatchDO>> getListCl(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ) { public CommonResult<List<TaskDispatchDO>> getListCl(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ,@RequestParam("type") Integer type) {
List<TaskDispatchDO> list= taskDispatchService.getListCl(id,projectSubId); List<TaskDispatchDO> list= taskDispatchService.getListCl(id,projectSubId, type);
return success( list); return success( list);
} }
@GetMapping("/getListNg") @GetMapping("/getListNg")

View File

@ -298,6 +298,8 @@ public class ProjectOrderDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private BigDecimal waixeiCost; private BigDecimal waixeiCost;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal waixeijiagong;
@TableField(exist = false)
private BigDecimal sumCost; private BigDecimal sumCost;
@TableField(exist = false) @TableField(exist = false)

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch; 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.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -169,6 +170,76 @@ public class TaskDispatchDO extends BaseDO {
private BigDecimal assemblyLaborCost; private BigDecimal assemblyLaborCost;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal assemblyLaborSum; 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(){ public boolean canSave(){
return TaskDispatchStatusEnum.SAVE.getCode() == this.dispatchStatus.intValue(); return TaskDispatchStatusEnum.SAVE.getCode() == this.dispatchStatus.intValue();
} }

View File

@ -175,6 +175,9 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
.disableSubLogicDel() .disableSubLogicDel()
.groupBy(MaterialDO::getId) .groupBy(MaterialDO::getId)
.having("COALESCE(SUM(s.yard_amount), 0) < COALESCE(MAX(t.inv_safe), 0)"); .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 //执行子查询获取符合条件的matCode
List<Long> qualifiedMatCodes = this.selectList(subQuery) List<Long> qualifiedMatCodes = this.selectList(subQuery)
.stream() .stream()

View File

@ -102,6 +102,23 @@ public interface MaterialPlanMapper extends BaseMapperX<MaterialPlanDO> {
void delMaterialPlan(@Param("id") Long id); void delMaterialPlan(@Param("id") Long id);
void delMaterialPlanBoom(@Param("bomDetailId")Long bomDetailId, @Param("procedureId")Long procedureId); void delMaterialPlanBoom(@Param("bomDetailId")Long bomDetailId, @Param("procedureId")Long procedureId);
default PageResult<MaterialPlanDO> getMaterialPlanPageData(MaterialPlanPageReqVO pageReqVO){
MPJLambdaWrapper<MaterialPlanDO> 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<MaterialPlanDO> selectPage(MaterialPlanPageReqVO reqVO) { // default PageResult<MaterialPlanDO> selectPage(MaterialPlanPageReqVO reqVO) {
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanDO>() // return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanDO>()
// .eqIfPresent(MaterialPlanDO::getId, reqVO.getId()) // .eqIfPresent(MaterialPlanDO::getId, reqVO.getId())

View File

@ -223,4 +223,6 @@ public interface ProcessBomMapper extends BaseMapperX<ProcessBomDO> {
void deleteOrderId(@Param("id") Long id); void deleteOrderId(@Param("id") Long id);
BigDecimal cuttingMaterials(@Param("id") Long id, @Param("projectSubId")Long projectSubId); BigDecimal cuttingMaterials(@Param("id") Long id, @Param("projectSubId")Long projectSubId);
BigDecimal outsourcingExpenses1(@Param("id") Long id,@Param("projectSubId") Long projectSubId);
} }

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder; 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.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderSubPageReqVO; 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.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.*;
import org.aspectj.weaver.ast.Not;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.List; import java.util.List;
@ -146,8 +148,8 @@ public interface ProjectOrderSubMapper extends BaseMapperX<ProjectOrderSubDO> {
.like(!StringUtils.isEmpty(pageReqVO.getProjectName()), ProjectOrderDO::getProjectName, pageReqVO.getProjectName()) .like(!StringUtils.isEmpty(pageReqVO.getProjectName()), ProjectOrderDO::getProjectName, pageReqVO.getProjectName())
.like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName()) .like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName())
.like(!StringUtils.isEmpty(pageReqVO.getProjectSubCode()), PlanSubDO::getProjectSubCode, pageReqVO.getProjectSubCode()) .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); return selectPage(pageReqVO, query);
} }
@Delete("delete from project_sale_order_sub where project_order_id = #{id}") @Delete("delete from project_sale_order_sub where project_order_id = #{id}")

View File

@ -1081,4 +1081,16 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
return selectList(query); return selectList(query);
} }
default List<TaskDispatchDetailDO> getTaskDispatchDetailsBatch(List<Long> dispatchIds, Integer type){
MPJLambdaWrapper<TaskDispatchDetailDO> 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);
}
} }

View File

@ -240,4 +240,21 @@ public interface TaskDispatchMapper extends BaseMapperX<TaskDispatchDO> {
} }
default List<TaskDispatchDO> getListCl1(Long id, Long projectSubId, Integer type){
MPJLambdaWrapper<TaskDispatchDO> 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);
}
} }

View File

@ -86,4 +86,6 @@ public interface MaterialPlanService {
CommonResult<Boolean> delMaterialPlanBoom(Long id, String projectMaterialPlanNo); CommonResult<Boolean> delMaterialPlanBoom(Long id, String projectMaterialPlanNo);
Boolean saveLog(TaskDispatchDetailDO detailDO); Boolean saveLog(TaskDispatchDetailDO detailDO);
PageResult<MaterialPlanDO> getMaterialPlanPageData(MaterialPlanPageReqVO pageReqVO);
} }

View File

@ -631,4 +631,9 @@ public class MaterialPlanServiceImpl implements MaterialPlanService {
return true; return true;
} }
@Override
public PageResult<MaterialPlanDO> getMaterialPlanPageData(MaterialPlanPageReqVO pageReqVO) {
return materialPlanMapper.getMaterialPlanPageData(pageReqVO);
}
} }

View File

@ -122,4 +122,6 @@ public interface ProcessBomService {
CommonResult<Boolean> selectPlanTaskStatus(String id); CommonResult<Boolean> selectPlanTaskStatus(String id);
List<ProcessBomDetailDO> getProcessBomExcel(List<Long> collect); List<ProcessBomDetailDO> getProcessBomExcel(List<Long> collect);
BigDecimal outsourcedProcessingFee1(Long id, Long projectSubId);
} }

View File

@ -1704,6 +1704,13 @@ public class ProcessBomServiceImpl implements ProcessBomService {
return processBomDetailMapper.getProcessBomExcel( collect); 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<ProcessBomDetailDO> list,Integer num) { private void createProcessBomDetailList(String bomCode,Long bomId, List<ProcessBomDetailDO> list,Integer num) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();

View File

@ -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.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.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; 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 javax.validation.Valid;
import java.util.List; import java.util.List;
@ -60,6 +61,15 @@ public interface ProjectOrderService {
PageResult<ProjectOrderDO> getProjectOrderCostPage(ProjectOrderCostPageReqVO pageReqVO); PageResult<ProjectOrderDO> getProjectOrderCostPage(ProjectOrderCostPageReqVO pageReqVO);
ProjectOrderDO getProjectOrderCost(Long id,Long projectSubId); ProjectOrderDO getProjectOrderCost(Long id,Long projectSubId);
/**
* 导出项目成本归集明细数据
*
* @param pageReqVO 导出条件
* @return 导出结果
*/
ExportResult exportExcelData(ProjectOrderCostPageReqVO pageReqVO);
// ==================== 子表项目订单子项目 ==================== // ==================== 子表项目订单子项目 ====================
/** /**

View File

@ -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.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; 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.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.*;
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.storagelog.vo.StorageLogPageReqVO; 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.attentiontodo.AttentiontodoDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; 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.DeliverOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; 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.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.plansub.PlanSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansubdetail.PlanSubDetailDO; 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.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.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; 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.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; 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.serialnumber.SerialNumberDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; 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.bdgzsomthing.bdgzsomthingMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.orderys.OrderYsMapper; 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.manager.CrossOrderManager;
import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService; 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.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.processbom.ProcessBomService;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; 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.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.controller.admin.file.vo.file.FilePageReqVO;
import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO; import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO;
import com.chanko.yunxi.mes.module.infra.service.file.FileService; 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.FieldInfo;
import com.github.dadiyang.equator.GetterBaseEquator; import com.github.dadiyang.equator.GetterBaseEquator;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import jodd.system.SystemUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; 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.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_ORDER; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_ORDER;
@ -147,6 +143,13 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
private ProcessBomDetailMapper processBomDetailMapper; private ProcessBomDetailMapper processBomDetailMapper;
@Resource @Resource
private ProcessDesignMapper ProcessDesignMapper; private ProcessDesignMapper ProcessDesignMapper;
@Resource
private StorageService storageService;
@Resource
private TaskDispatchService taskDispatchService;
@Resource
@Lazy
private DeliverOrderService deliverOrderService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -794,4 +797,141 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
projectOrderSubMapper.deleteByProjectOrderId(projectOrderId); 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<TaskDispatchDO>) 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<TaskDispatchDO>) 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<TaskDispatchDO>) 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<TaskDispatchDO>) list);
}
}
);
default:
return new ExportConfig(
() -> deliverOrderService.getListYfDetails(pageReqVO.getId(), pageReqVO.getProjectSubId()),
"运费成本.xlsx", ProjectOrderYunRespVO.class, null
);
}
}
private void processMaterialFields(List<TaskDispatchDO> list) {
processMapFields(list, new String[][]{
{"泡沫", "setPaomo"},
{"下料1", "setXialiao1"},
{"下料2", "setXialiao2"}
});
}
private void processProcessingFields(List<TaskDispatchDO> 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<TaskDispatchDO> 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<TaskDispatchDO> 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<String, BigDecimal> 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);
}
}
}
}
}
}
}
} }

View File

@ -106,7 +106,7 @@ public interface TaskDispatchService {
List<TaskDispatchDO> getListZp(Long id, Long projectSubId); List<TaskDispatchDO> getListZp(Long id, Long projectSubId);
List<TaskDispatchDO> getListCl(Long id, Long projectSubId); List<TaskDispatchDO> getListCl(Long id, Long projectSubId,Integer type);
List<HashMap<String, String>> getOwners(Long id); List<HashMap<String, String>> getOwners(Long id);

View File

@ -1316,7 +1316,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
} }
@Override @Override
public List<TaskDispatchDO> getListCl(Long id, Long projectSubId) { public List<TaskDispatchDO> getListCl(Long id, Long projectSubId, Integer type) {
// List<TaskDispatchDO> taskDispatchDOS = taskDispatchMapper.getListCl(id, projectSubId); // List<TaskDispatchDO> taskDispatchDOS = taskDispatchMapper.getListCl(id, projectSubId);
// for (TaskDispatchDO taskDispatchDO : taskDispatchDOS) { // for (TaskDispatchDO taskDispatchDO : taskDispatchDOS) {
// LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
@ -1362,7 +1362,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
.collect(Collectors.toList()); .collect(Collectors.toList());
// 2. 批量查询所有TaskDispatchDetailDO // 2. 批量查询所有TaskDispatchDetailDO
List<TaskDispatchDetailDO> allDetailDOS = getTaskDispatchDetailsBatch(dispatchIds); List<TaskDispatchDetailDO> allDetailDOS = getTaskDispatchDetailsBatch1(dispatchIds, type);
if (ObjectUtil.isEmpty(allDetailDOS)){ if (ObjectUtil.isEmpty(allDetailDOS)){
return taskDispatchDOS; return taskDispatchDOS;
} }
@ -1435,6 +1435,10 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
wrapper.in(TaskDispatchDetailDO::getDispatchId, dispatchIds); wrapper.in(TaskDispatchDetailDO::getDispatchId, dispatchIds);
return taskDispatchDetailMapper.selectList(wrapper); return taskDispatchDetailMapper.selectList(wrapper);
} }
private List<TaskDispatchDetailDO> getTaskDispatchDetailsBatch1(List<Long> dispatchIds,Integer type) {
return taskDispatchDetailMapper.getTaskDispatchDetailsBatch(dispatchIds,type);
}
private List<TaskDispatchDetailDO> getTaskDispatchDetails(List<Long> dispatchIds) { private List<TaskDispatchDetailDO> getTaskDispatchDetails(List<Long> dispatchIds) {
return taskDispatchDetailMapper.getTaskDispatchDetails(dispatchIds); return taskDispatchDetailMapper.getTaskDispatchDetails(dispatchIds);
} }

View File

@ -119,8 +119,9 @@
SUM(s.storage_amount) AS total_storage SUM(s.storage_amount) AS total_storage
FROM project_purchase_order_no_detail t 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 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 left join pro_process_bom_detail d on d.id=t.boom_detail_id and d.deleted=0 and d.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} 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 GROUP BY s.id
) AS subquery; ) AS subquery;
</select> </select>
@ -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 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} where t.deleted=0 and t.dispatch_type='PRODUCTION' and t.project_id=#{id} and t.project_sub_id= #{projectSubId}
</select> </select>
<select id="outsourcingExpenses1" resultType="java.math.BigDecimal">
SELECT
ROUND(SUM(unit_price * total_storage), 1) AS cost
FROM (
SELECT
ROUND(t.estimated_price / t.purchase_amount, 1) AS unit_price,
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
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 NOT IN ('泡沫','下料1','下料2')
GROUP BY s.id
) AS subquery;
</select>
<update id="updateDetailEditStatusById" parameterType="Long"> <update id="updateDetailEditStatusById" parameterType="Long">
UPDATE pro_process_bom_detail UPDATE pro_process_bom_detail

View File

@ -49,6 +49,10 @@ export const exportMaterialPlan = async (params) => {
export const getMaterialPlanPages = async (params) => { export const getMaterialPlanPages = async (params) => {
return await request.get({ url: `/heli/material-plan/pages`, 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) => { export const delMaterialPlan = async (id: number) => {
return await request.delete({ url: `/heli/material-plan/delMaterialPlan?id=` + id }) return await request.delete({ url: `/heli/material-plan/delMaterialPlan?id=` + id })

View File

@ -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 }) return await request.get({ url: `/heli/deliver-order/getListYfDetails?id=`+id+`&projectSubId=`+projectSubId })
} }
//查询外部材料成本 //查询外部材料成本
export const getListcl = async (id: number,projectSubId: number) => { export const getListcl = async (id: number,projectSubId: number,type:number) => {
return await request.get({ url: `/heli/task-dispatch/getListCl?id=`+id+`&projectSubId=`+projectSubId }) return await request.get({ url: `/heli/task-dispatch/getListCl?id=`+id+`&projectSubId=`+projectSubId+`&type=`+type })
} }
//查询内部材料成本 //查询内部材料成本
export const getListNc = async (id: number,projectSubId: number) => { 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) => { export const exportCost = async (params) => {
return await request.download({ url: `/heli/project-order/exportCost`, 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 })
}

View File

@ -49,7 +49,11 @@
<el-input class="!w-265px" v-model="formData.waixeiCost" disabled /> <el-input class="!w-265px" v-model="formData.waixeiCost" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6">
<el-form-item label="外部加工费" prop="waixeijiagong">
<el-input class="!w-265px" v-model="formData.waixeijiagong" disabled />
</el-form-item>
</el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="内部加工费" prop="neiBuCost"> <el-form-item label="内部加工费" prop="neiBuCost">
<el-input class="!w-265px" v-model="formData.neiBuCost" disabled /> <el-input class="!w-265px" v-model="formData.neiBuCost" disabled />
@ -73,11 +77,23 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="12">
<el-form-item label="备注" prop="rem"> <el-form-item label="备注" prop="rem">
<el-input class="!w-1825px" v-model="formData.rem" /> <el-input class="!w-1825px" v-model="formData.rem" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="" prop="rem">
<el-button
type="success"
plain
@click="handleExport(activeIndex)"
:loading="exportLoading"
v-hasPermi="['heli:shenhe:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button> </el-form-item>
</el-col>
</el-row> </el-row>
@ -88,6 +104,7 @@
<el-tab-pane label="标准件成本" name="biao">{{ }}</el-tab-pane> <el-tab-pane label="标准件成本" name="biao">{{ }}</el-tab-pane>
<el-tab-pane label="内部材料成本" name="neicai">{{ }}</el-tab-pane> <el-tab-pane label="内部材料成本" name="neicai">{{ }}</el-tab-pane>
<el-tab-pane label="外部材料成本" name="cai">{{ }}</el-tab-pane> <el-tab-pane label="外部材料成本" name="cai">{{ }}</el-tab-pane>
<el-tab-pane label="外部加工费" name="jiagong">{{ }}</el-tab-pane>
<el-tab-pane label="内部工时费" name="neigong">{{ }}</el-tab-pane> <el-tab-pane label="内部工时费" name="neigong">{{ }}</el-tab-pane>
<el-tab-pane label="装配成本" name="zhuang">{{ }}</el-tab-pane> <el-tab-pane label="装配成本" name="zhuang">{{ }}</el-tab-pane>
<el-tab-pane label="运费成本" name="yun">{{ }}</el-tab-pane> <el-tab-pane label="运费成本" name="yun">{{ }}</el-tab-pane>
@ -162,9 +179,9 @@
</el-card> </el-card>
<el-card class="hl-card-info" v-if="activeIndex == 'cai'"> <el-card class="hl-card-info" v-if="activeIndex == 'cai'">
<!-- <template #header>--> <!-- <template #header>-->
<!-- <div class="hl-card-info-icona"></div><span class="hl-card-info-text">材料成本</span>--> <!-- <div class="hl-card-info-icona"></div><span class="hl-card-info-text">材料成本</span>-->
<!-- </template>--> <!-- </template>-->
<el-table v-loading="loading" :data="listcl" :stripe="true" :show-overflow-tooltip="true" border class="hl-table" height="500px"> <el-table v-loading="loading" :data="listcl" :stripe="true" :show-overflow-tooltip="true" border class="hl-table" height="500px">
<el-table-column type="index" width="70" fixed label="序号" align="center" /> <el-table-column type="index" width="70" fixed label="序号" align="center" />
@ -201,6 +218,23 @@
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单件成本" align="center" prop="assemblyLaborCost" width="120px"/>
</el-table>
</el-card>
<el-card class="hl-card-info" v-if="activeIndex == 'jiagong'">
<!-- <template #header>-->
<!-- <div class="hl-card-info-icona"></div><span class="hl-card-info-text">材料成本</span>-->
<!-- </template>-->
<el-table v-loading="loading" :data="listjiagong" :stripe="true" :show-overflow-tooltip="true" border class="hl-table" height="500px">
<el-table-column type="index" width="70" fixed label="序号" align="center" />
<el-table-column label="零件名称" align="center" prop="materialName" width="200px" />
<el-table-column label="材质" align="center" prop="compositionName" width="150px"/>
<el-table-column label="规格型号" align="center" prop="spec" width="100"/>
<el-table-column label="数量" align="center" prop="amount" width="100"/>
<el-table-column label="电焊" min-width="100" align="center"> <el-table-column label="电焊" min-width="100" align="center">
<template #default="{ row }"> <template #default="{ row }">
<template v-if="row.map && row.map['电焊']"> <template v-if="row.map && row.map['电焊']">
@ -457,6 +491,7 @@
</el-table> </el-table>
</el-card> </el-card>
<el-card class="hl-card-info" v-if="activeIndex == 'neigong'"> <el-card class="hl-card-info" v-if="activeIndex == 'neigong'">
<!-- <template #header>--> <!-- <template #header>-->
<!-- <div class="hl-card-info-icona"></div><span class="hl-card-info-text">材料成本</span>--> <!-- <div class="hl-card-info-icona"></div><span class="hl-card-info-text">材料成本</span>-->
@ -836,6 +871,8 @@
import {dateFormatter2} from "@/utils/formatTime"; import {dateFormatter2} from "@/utils/formatTime";
import {DICT_TYPE} from "@/utils/dict"; import {DICT_TYPE} from "@/utils/dict";
import type {TabsPaneContext} from "element-plus"; import type {TabsPaneContext} from "element-plus";
import download from "@/utils/download";
import {exportExcel} from "@/api/heli/saleordercost";
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -845,18 +882,24 @@
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const list = ref([]) // const list = ref([]) //
const listcl = ref([]) // const listcl = ref([]) //
const listjiagong = ref([]) //
const listng = ref([]) // const listng = ref([]) //
const listnc = ref([]) // const listnc = ref([]) //
// const listFzc = ref([]) // // const listFzc = ref([]) //
// const loading = ref(true) // // const loading = ref(true) //
const activeName = ref('biao') const activeName = ref('biao')
const activeIndex = ref('biao') const activeIndex = ref('biao')
const exportLoading = ref(false) //
// const listWx = ref([]) // // const listWx = ref([]) //
const listJg = ref([]) // const listJg = ref([]) //
// const listQg = ref([]) // // const listQg = ref([]) //
const listYf = ref([]) // const listYf = ref([]) //
const queryParams = reactive({
activeIndex:"",
id:undefined,
projectSubId:undefined
})
const formData = ref({ const formData = ref({
id:undefined, id:undefined,
code:undefined, code:undefined,
@ -881,13 +924,43 @@
activeIndex.value = tabIndex; activeIndex.value = tabIndex;
} }
const handleExport = async (activeIndex: string) => {
try {
//
await message.exportConfirm()
//
const fileNameMap: Record<string, string> = {
'biao': '标准件成本.xlsx',
'neicai': '内部材料成本.xlsx',
'cai': '外部材料成本.xlsx',
'jiagong': '外部加工费.xlsx',
'neigong': '内部工时费.xlsx',
'zhuang': '装配成本.xlsx',
'yun': '运费成本.xlsx'
}
//
queryParams.activeIndex = activeIndex
exportLoading.value = true
const data = await SaleeOrderCost.exportExcel(queryParams)
//
const fileName = fileNameMap[activeIndex]
if (fileName) {
download.excel(data, fileName)
}
} catch {
} finally {
exportLoading.value = false
}
}
// //
onMounted(async () => { onMounted(async () => {
console.log(query)
formData.value.id = query.id formData.value.id = query.id
formData.value.projectSubId = query.projectSubId formData.value.projectSubId = query.projectSubId
queryParams.id=query.id
queryParams.projectSubId=query.projectSubId
// //
// const data = await SaleeOrderCost.getPlanCost(query.id,query.projectSubId) // const data = await SaleeOrderCost.getPlanCost(query.id,query.projectSubId)
// formData.value = data // formData.value = data
@ -898,8 +971,10 @@
listJg.value=listJgData listJg.value=listJgData
const listData = await SaleeOrderCost.getList(query.id,query.projectSubId) const listData = await SaleeOrderCost.getList(query.id,query.projectSubId)
list.value=listData list.value=listData
const listclData = await SaleeOrderCost.getListcl(query.id,query.projectSubId) const listclData = await SaleeOrderCost.getListcl(query.id,query.projectSubId,1)
listcl.value=listclData listcl.value=listclData
const listjiagongData = await SaleeOrderCost.getListcl(query.id,query.projectSubId,2)
listjiagong.value=listjiagongData
const listNgData = await SaleeOrderCost.getListNg(query.id,query.projectSubId) const listNgData = await SaleeOrderCost.getListNg(query.id,query.projectSubId)
listng.value=listNgData listng.value=listNgData
const listNcData = await SaleeOrderCost.getListNc(query.id,query.projectSubId) const listNcData = await SaleeOrderCost.getListNc(query.id,query.projectSubId)
@ -915,6 +990,7 @@
formData.value.zpCost=query.zpCost formData.value.zpCost=query.zpCost
formData.value.neiBuCost=query.neibuCost formData.value.neiBuCost=query.neibuCost
formData.value.waixeiCost=query.waixeiCost formData.value.waixeiCost=query.waixeiCost
formData.value.waixeijiagong=query.waixeijiagong
// if (listYf.value!=null){ // if (listYf.value!=null){

View File

@ -66,7 +66,7 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" border class="hl-table" show-summary :summary-method="getSummaries" height="500px"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" border class="hl-table" show-summary :summary-method="getSummaries" >
<el-table-column type="index" width="70" fixed label="序号" align="center" /> <el-table-column type="index" width="70" fixed label="序号" align="center" />
<el-table-column label="项目编号" align="center" prop="code" width="200px" /> <el-table-column label="项目编号" align="center" prop="code" width="200px" />
<el-table-column label="项目名称" align="center" prop="projectName" width="240px"/> <el-table-column label="项目名称" align="center" prop="projectName" width="240px"/>
@ -81,6 +81,7 @@
<el-table-column label="标准件成本" align="center" prop="biaoZhunJianCost" width="200px"/> <el-table-column label="标准件成本" align="center" prop="biaoZhunJianCost" width="200px"/>
<el-table-column label="内部材料成本" align="center" prop="cailiaoCost" width="200px"/> <el-table-column label="内部材料成本" align="center" prop="cailiaoCost" width="200px"/>
<el-table-column label="外部材料成本" align="center" prop="waixeiCost" width="200px"/> <el-table-column label="外部材料成本" align="center" prop="waixeiCost" width="200px"/>
<el-table-column label="外部加工费" align="center" prop="waixeijiagong" width="200px"/>
<el-table-column label="内部工时费" align="center" prop="neibuCost" width="220px"/> <el-table-column label="内部工时费" align="center" prop="neibuCost" width="220px"/>
<el-table-column label="装配工时费" align="center" prop="zpCost" width="220px"/> <el-table-column label="装配工时费" align="center" prop="zpCost" width="220px"/>
<el-table-column label="运费" align="center" prop="yunFeiCost" width="200px"/> <el-table-column label="运费" align="center" prop="yunFeiCost" width="200px"/>

View File

@ -89,7 +89,8 @@ const queryReqVo: any = reactive({
projectCode: undefined, projectCode: undefined,
projectName: undefined, projectName: undefined,
projectSubName: undefined, projectSubName: undefined,
customerName:undefined customerName:undefined,
deliveryStatus:3
}) })
/** 搜索按钮操作 */ /** 搜索按钮操作 */
const handleQuery = async () => { const handleQuery = async () => {

View File

@ -90,6 +90,7 @@ import * as MaterialPlanApi from '@/api/heli/materialplan'
import * as UserApi from '@/api/system/user' import * as UserApi from '@/api/system/user'
import dayjs from "dayjs"; import dayjs from "dayjs";
import routeParamsCache from '@/utils/routeParamsCache' import routeParamsCache from '@/utils/routeParamsCache'
import {getMaterialPlanPageData} from "@/api/heli/materialplan";
defineOptions({ name: 'SupplementManagement' }) defineOptions({ name: 'SupplementManagement' })
const router = useRouter() const router = useRouter()
@ -126,7 +127,7 @@ const exportLoading = ref(false) // 导出的加载中
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
const data = await MaterialPlanApi.getMaterialPlanPages(queryParams) const data = await MaterialPlanApi.getMaterialPlanPageData(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
} finally { } finally {