成本归集导出
This commit is contained in:
parent
41428661ea
commit
9a663001a5
@ -109,6 +109,13 @@ public class MaterialPlanController {
|
||||
PageResult<MaterialPlanDO> pageResult = materialPlanService.getMaterialPlanPages(pageReqVO);
|
||||
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")
|
||||
@Operation(summary = "删除物料需求计划")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
|
||||
@ -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 <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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -37,7 +37,8 @@ public class ProjectOrderCostPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "子项目Id", example = "赵六")
|
||||
private Long projectSubId;
|
||||
|
||||
@Schema(description = "子项目Id", example = "赵六")
|
||||
private String activeIndex;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
||||
}
|
||||
@ -27,4 +27,6 @@ public class ProjectOrderSubPageReqVO extends PageParam {
|
||||
private String nameSim;
|
||||
@Schema(description = "客户简称", example = "赵六")
|
||||
private String customerName;
|
||||
@Schema(description = "发货状态", example = "赵六")
|
||||
private Integer deliveryStatus;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -276,8 +276,8 @@ public class TaskDispatchController {
|
||||
@GetMapping("/getListCl")
|
||||
@Operation(summary = "获得外部材料成本")
|
||||
@PreAuthorize("@ss.hasPermission('heli:deliver-order:query')")
|
||||
public CommonResult<List<TaskDispatchDO>> getListCl(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ) {
|
||||
List<TaskDispatchDO> list= taskDispatchService.getListCl(id,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, type);
|
||||
return success( list);
|
||||
}
|
||||
@GetMapping("/getListNg")
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -175,6 +175,9 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
|
||||
.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<Long> qualifiedMatCodes = this.selectList(subQuery)
|
||||
.stream()
|
||||
|
||||
@ -102,6 +102,23 @@ public interface MaterialPlanMapper extends BaseMapperX<MaterialPlanDO> {
|
||||
void delMaterialPlan(@Param("id") Long id);
|
||||
|
||||
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) {
|
||||
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanDO>()
|
||||
// .eqIfPresent(MaterialPlanDO::getId, reqVO.getId())
|
||||
|
||||
@ -223,4 +223,6 @@ public interface ProcessBomMapper extends BaseMapperX<ProcessBomDO> {
|
||||
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);
|
||||
}
|
||||
|
||||
@ -177,7 +177,7 @@ public interface ProjectOrderMapper extends BaseMapperX<ProjectOrderDO> {
|
||||
" AND pso.tenant_id =2")
|
||||
Map<String, BigDecimal> getOnTimeCompletionRate();
|
||||
|
||||
default List<ProjectOrderDO> selectOrder(){
|
||||
default List<ProjectOrderDO> selectOrder(){
|
||||
LocalDateTime startTime = LocalDate.of(2025, 6, 1).atStartOfDay(); // 2025-06-01 00:00:00
|
||||
return selectList(new LambdaQueryWrapper<ProjectOrderDO>()
|
||||
.ne(ProjectOrderDO::getDeliveryStatus,3)
|
||||
|
||||
@ -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<ProjectOrderSubDO> {
|
||||
.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}")
|
||||
|
||||
@ -1081,4 +1081,16 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,4 +86,6 @@ public interface MaterialPlanService {
|
||||
CommonResult<Boolean> delMaterialPlanBoom(Long id, String projectMaterialPlanNo);
|
||||
|
||||
Boolean saveLog(TaskDispatchDetailDO detailDO);
|
||||
|
||||
PageResult<MaterialPlanDO> getMaterialPlanPageData(MaterialPlanPageReqVO pageReqVO);
|
||||
}
|
||||
|
||||
@ -631,4 +631,9 @@ public class MaterialPlanServiceImpl implements MaterialPlanService {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MaterialPlanDO> getMaterialPlanPageData(MaterialPlanPageReqVO pageReqVO) {
|
||||
return materialPlanMapper.getMaterialPlanPageData(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -122,4 +122,6 @@ public interface ProcessBomService {
|
||||
CommonResult<Boolean> selectPlanTaskStatus(String id);
|
||||
|
||||
List<ProcessBomDetailDO> getProcessBomExcel(List<Long> collect);
|
||||
|
||||
BigDecimal outsourcedProcessingFee1(Long id, Long projectSubId);
|
||||
}
|
||||
|
||||
@ -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<ProcessBomDetailDO> list,Integer num) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
@ -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<ProjectOrderDO> getProjectOrderCostPage(ProjectOrderCostPageReqVO pageReqVO);
|
||||
|
||||
ProjectOrderDO getProjectOrderCost(Long id,Long projectSubId);
|
||||
|
||||
/**
|
||||
* 导出项目成本归集明细数据
|
||||
*
|
||||
* @param pageReqVO 导出条件
|
||||
* @return 导出结果
|
||||
*/
|
||||
ExportResult exportExcelData(ProjectOrderCostPageReqVO pageReqVO);
|
||||
|
||||
// ==================== 子表(项目订单子项目) ====================
|
||||
|
||||
/**
|
||||
|
||||
@ -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<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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ public interface TaskDispatchService {
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@ -1316,7 +1316,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
||||
}
|
||||
|
||||
@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);
|
||||
// for (TaskDispatchDO taskDispatchDO : taskDispatchDOS) {
|
||||
// LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
@ -1362,7 +1362,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 2. 批量查询所有TaskDispatchDetailDO
|
||||
List<TaskDispatchDetailDO> allDetailDOS = getTaskDispatchDetailsBatch(dispatchIds);
|
||||
List<TaskDispatchDetailDO> 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<TaskDispatchDetailDO> getTaskDispatchDetailsBatch1(List<Long> dispatchIds,Integer type) {
|
||||
|
||||
return taskDispatchDetailMapper.getTaskDispatchDetailsBatch(dispatchIds,type);
|
||||
}
|
||||
private List<TaskDispatchDetailDO> getTaskDispatchDetails(List<Long> dispatchIds) {
|
||||
return taskDispatchDetailMapper.getTaskDispatchDetails(dispatchIds);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
</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
|
||||
where t.deleted=0 and t.dispatch_type='PRODUCTION' and t.project_id=#{id} and t.project_sub_id= #{projectSubId}
|
||||
</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 pro_process_bom_detail
|
||||
|
||||
@ -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 })
|
||||
|
||||
@ -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 })
|
||||
}
|
||||
|
||||
@ -49,7 +49,11 @@
|
||||
<el-input class="!w-265px" v-model="formData.waixeiCost" disabled />
|
||||
</el-form-item>
|
||||
</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-form-item label="内部加工费" prop="neiBuCost">
|
||||
<el-input class="!w-265px" v-model="formData.neiBuCost" disabled />
|
||||
@ -73,11 +77,23 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注" prop="rem">
|
||||
<el-input class="!w-1825px" v-model="formData.rem" />
|
||||
</el-form-item>
|
||||
</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>
|
||||
|
||||
|
||||
@ -88,6 +104,7 @@
|
||||
<el-tab-pane label="标准件成本" name="biao">{{ }}</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="jiagong">{{ }}</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="yun">{{ }}</el-tab-pane>
|
||||
@ -161,11 +178,55 @@
|
||||
</el-table>
|
||||
|
||||
</el-card>
|
||||
<el-card class="hl-card-info" v-if="activeIndex == 'cai'">
|
||||
<el-card class="hl-card-info" v-if="activeIndex == 'cai'">
|
||||
<!-- <template #header>-->
|
||||
<!-- <div class="hl-card-info-icona"></div><span class="hl-card-info-text">材料成本</span>-->
|
||||
<!-- </template>-->
|
||||
<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 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">
|
||||
<template #default="{ row }">
|
||||
<template v-if="row.map && row.map['泡沫']">
|
||||
<span >
|
||||
<span >{{ row.map['泡沫'] }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="下料1" min-width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<template v-if="row.map && row.map['下料1']">
|
||||
<span >
|
||||
<span >{{ row.map['下料1'] }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="下料2" min-width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<template v-if="row.map && row.map['下料2']">
|
||||
<span >
|
||||
<span >{{ row.map['下料2'] }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</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="listcl" :stripe="true" :show-overflow-tooltip="true" border class="hl-table" height="500px">
|
||||
<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" />
|
||||
|
||||
|
||||
@ -174,33 +235,6 @@
|
||||
|
||||
<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">
|
||||
<template #default="{ row }">
|
||||
<template v-if="row.map && row.map['泡沫']">
|
||||
<span >
|
||||
<span >{{ row.map['泡沫'] }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="下料1" min-width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<template v-if="row.map && row.map['下料1']">
|
||||
<span >
|
||||
<span >{{ row.map['下料1'] }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="下料2" min-width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<template v-if="row.map && row.map['下料2']">
|
||||
<span >
|
||||
<span >{{ row.map['下料2'] }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="电焊" min-width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<template v-if="row.map && row.map['电焊']">
|
||||
@ -457,6 +491,7 @@
|
||||
</el-table>
|
||||
|
||||
</el-card>
|
||||
|
||||
<el-card class="hl-card-info" v-if="activeIndex == 'neigong'">
|
||||
<!-- <template #header>-->
|
||||
<!-- <div class="hl-card-info-icona"></div><span class="hl-card-info-text">材料成本</span>-->
|
||||
@ -836,6 +871,8 @@
|
||||
import {dateFormatter2} from "@/utils/formatTime";
|
||||
import {DICT_TYPE} from "@/utils/dict";
|
||||
import type {TabsPaneContext} from "element-plus";
|
||||
import download from "@/utils/download";
|
||||
import {exportExcel} from "@/api/heli/saleordercost";
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
@ -845,18 +882,24 @@
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const list = ref([]) // 标准件数据
|
||||
const listcl = ref([]) // 材料
|
||||
const listjiagong = ref([]) // 材料
|
||||
const listng = ref([]) // 材料
|
||||
const listnc = ref([]) // 材料
|
||||
// const listFzc = ref([]) // 副资材
|
||||
// const loading = ref(true) // 列表的加载中
|
||||
const activeName = ref('biao')
|
||||
const activeIndex = ref('biao')
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
// const listWx = ref([]) // 外协
|
||||
const listJg = ref([]) // 加工
|
||||
// const listQg = ref([]) // 钳工
|
||||
const listYf = ref([]) // 运费
|
||||
|
||||
const queryParams = reactive({
|
||||
activeIndex:"",
|
||||
id:undefined,
|
||||
projectSubId:undefined
|
||||
})
|
||||
const formData = ref({
|
||||
id:undefined,
|
||||
code:undefined,
|
||||
@ -881,13 +924,43 @@
|
||||
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 () => {
|
||||
console.log(query)
|
||||
formData.value.id = query.id
|
||||
formData.value.projectSubId = query.projectSubId
|
||||
|
||||
queryParams.id=query.id
|
||||
queryParams.projectSubId=query.projectSubId
|
||||
//查询子项目信息
|
||||
// const data = await SaleeOrderCost.getPlanCost(query.id,query.projectSubId)
|
||||
// formData.value = data
|
||||
@ -898,8 +971,10 @@
|
||||
listJg.value=listJgData
|
||||
const listData = await SaleeOrderCost.getList(query.id,query.projectSubId)
|
||||
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
|
||||
const listjiagongData = await SaleeOrderCost.getListcl(query.id,query.projectSubId,2)
|
||||
listjiagong.value=listjiagongData
|
||||
const listNgData = await SaleeOrderCost.getListNg(query.id,query.projectSubId)
|
||||
listng.value=listNgData
|
||||
const listNcData = await SaleeOrderCost.getListNc(query.id,query.projectSubId)
|
||||
@ -915,6 +990,7 @@
|
||||
formData.value.zpCost=query.zpCost
|
||||
formData.value.neiBuCost=query.neibuCost
|
||||
formData.value.waixeiCost=query.waixeiCost
|
||||
formData.value.waixeijiagong=query.waixeijiagong
|
||||
|
||||
|
||||
// if (listYf.value!=null){
|
||||
|
||||
@ -66,7 +66,7 @@
|
||||
<!-- 列表 -->
|
||||
<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 label="项目编号" align="center" prop="code" width="200px" />
|
||||
<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="cailiaoCost" 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="zpCost" width="220px"/>
|
||||
<el-table-column label="运费" align="center" prop="yunFeiCost" width="200px"/>
|
||||
|
||||
@ -89,7 +89,8 @@ const queryReqVo: any = reactive({
|
||||
projectCode: undefined,
|
||||
projectName: undefined,
|
||||
projectSubName: undefined,
|
||||
customerName:undefined
|
||||
customerName:undefined,
|
||||
deliveryStatus:3
|
||||
})
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = async () => {
|
||||
|
||||
@ -90,6 +90,7 @@ import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||
import * as UserApi from '@/api/system/user'
|
||||
import dayjs from "dayjs";
|
||||
import routeParamsCache from '@/utils/routeParamsCache'
|
||||
import {getMaterialPlanPageData} from "@/api/heli/materialplan";
|
||||
|
||||
defineOptions({ name: 'SupplementManagement' })
|
||||
const router = useRouter()
|
||||
@ -126,7 +127,7 @@ const exportLoading = ref(false) // 导出的加载中
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await MaterialPlanApi.getMaterialPlanPages(queryParams)
|
||||
const data = await MaterialPlanApi.getMaterialPlanPageData(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user