diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/BgMasterLineController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/BgMasterLineController.java index 5dee2f79..c1c5998e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/BgMasterLineController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/BgMasterLineController.java @@ -61,8 +61,8 @@ public class BgMasterLineController { @Operation(summary = "更新过程检报工") @PreAuthorize("@ss.hasPermission('heli:bg-master-line:update')") public CommonResult updateBgMasterLine(@Valid @RequestBody BgMasterLineSaveReqVO updateReqVO) { - bgMasterLineService.updateBgMasterLine(updateReqVO); - return success(true); + return bgMasterLineService.updateBgMasterLine(updateReqVO); + } @DeleteMapping("/delete") @@ -70,8 +70,8 @@ public class BgMasterLineController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('heli:bg-master-line:delete')") public CommonResult deleteBgMasterLine(@RequestParam("id") Integer id) { - bgMasterLineService.deleteBgMasterLine(id); - return success(true); + + return bgMasterLineService.deleteBgMasterLine(id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineRespVO.java index fe527793..100d35c6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineRespVO.java @@ -63,4 +63,5 @@ public class BgMasterLineRespVO { private Integer auditor; private LocalDateTime audit_time; private List fileUrlList; + private String modRemark; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineSaveReqVO.java index d1380773..ec3cad6b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineSaveReqVO.java @@ -44,4 +44,7 @@ public class BgMasterLineSaveReqVO { private String auditOpinion; private Integer auditor; private LocalDateTime audit_time; + @Schema(description = "原因说明") + private String modRemark; + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/composition/vo/CompositionRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/composition/vo/CompositionRespVO.java index 28bd82c3..f42708a3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/composition/vo/CompositionRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/composition/vo/CompositionRespVO.java @@ -47,5 +47,7 @@ public class CompositionRespVO { @Schema(description = "密度") @ExcelProperty("密度") private BigDecimal density; - + @Schema(description = "单价") + @ExcelProperty("单价") + private BigDecimal price; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/composition/vo/CompositionSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/composition/vo/CompositionSaveReqVO.java index c3f1eb49..d7fb3849 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/composition/vo/CompositionSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/composition/vo/CompositionSaveReqVO.java @@ -34,5 +34,6 @@ public class CompositionSaveReqVO { @Schema(description = "密度") private BigDecimal density; - + @Schema(description = "密度") + private BigDecimal price; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/DeliverOrderController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/DeliverOrderController.java index cfd0b51e..66c10d06 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/DeliverOrderController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/DeliverOrderController.java @@ -187,5 +187,12 @@ public class DeliverOrderController { List deliverOrderDO = deliverOrderService.getListYf(id,projectSubId); return success( deliverOrderDO); } + @GetMapping("/getListYfDetails") + @Operation(summary = "获得运费成本明细") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") + public CommonResult> getListYfDetails(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ) { + List deliverOrderDO = deliverOrderService.getListYfDetails(id,projectSubId); + return success( deliverOrderDO); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java index 2d1cdb50..7d41e501 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java @@ -77,5 +77,6 @@ public class MaterialPlanPageReqVO extends PageParam { private String duEmpName; @Schema(description = "责任人") private String blueprintNo; - + @Schema(description = "工序") + private String procedureName; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java index 0f8fd5b0..328add0b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java @@ -99,7 +99,13 @@ public class ProcessDesignController { PageResult pageResult = processDesignService.getProcessDesignPage(pageReqVO); return success(BeanUtils.toBean(pageResult, ProcessDesignRespVO.class)); } - + @GetMapping("/pages") + @Operation(summary = "获得工艺设计进度一览") + @PreAuthorize("@ss.hasPermission('heli:process-design:query')") + public CommonResult> getProcessDesignPages(@Valid ProcessDesignPageReqVO pageReqVO) { + PageResult pageResult = processDesignService.getProcessDesignPages(pageReqVO); + return success(pageResult); + } @GetMapping("/export-excel") @Operation(summary = "导出工艺设计 Excel") @PreAuthorize("@ss.hasPermission('heli:process-design:export')") @@ -112,6 +118,18 @@ public class ProcessDesignController { ExcelUtils.write(response, "工艺设计.xls", "数据", ProcessDesignRespVO.class, BeanUtils.toBean(list, ProcessDesignRespVO.class)); } + @GetMapping("/exportExcel") + @Operation(summary = "导出设计进度一览 Excel") + @PreAuthorize("@ss.hasPermission('heli:process-design:export')") + @OperateLog(type = EXPORT) + public void exportProcessDesignExcels(@Valid ProcessDesignPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processDesignService.getExportExcel(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "设计进度一览.xlsx", "数据", ExportExcelPageReqVO.class, + BeanUtils.toBean(list, ExportExcelPageReqVO.class)); + } // ==================== 子表(工艺设计进度) ==================== diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ExportExcelPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ExportExcelPageReqVO.java new file mode 100644 index 00000000..2013e0fb --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ExportExcelPageReqVO.java @@ -0,0 +1,47 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.math.BigDecimal; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 工艺设计 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ExportExcelPageReqVO { + + @ExcelProperty("客户名称") + private String customerName; + @ExcelProperty( "项目名称") + private String projectName; + @ExcelProperty( "子项目名称") + private String projectSubName; + @ExcelProperty( "负责人") + private String userName; + @ExcelProperty( "负责类型") + private String processDesignType; + @ExcelProperty( "计划起始") + private String startDates; + @ExcelProperty( "计划终止") + private String endDates; + @ExcelProperty( "起始报工时间") + private String startReportingTimes; + @ExcelProperty( "终止报工时间") + private String endReportingTimes; + @ExcelProperty( "已报工时") + private String workTimes; + @ExcelProperty( "状态") + private String completed; + @ExcelProperty( "备注") + private String remark; + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignPageReqVO.java index 758c0192..036cb81e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignPageReqVO.java @@ -91,4 +91,6 @@ public class ProcessDesignPageReqVO extends PageParam { @Schema(description = "是否完成") private Integer pgType; + @Schema(description = "负责人名称") + private String ownerName; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java index 3f1aa69e..79e24d3e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.PageParam; @@ -19,6 +20,7 @@ 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.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; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.manager.CrossOrderManager; import com.chanko.yunxi.mes.module.heli.service.deliverorder.DeliverOrderService; @@ -44,6 +46,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; +import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -71,6 +74,8 @@ public class ProjectOrderController { private ProcessBomService processBomService; @Resource private DeliverOrderService deliverOrderService; + @Resource + private ProjectOrderSubMapper projectOrderSubMapper; @PostMapping("/create") @Operation(summary = "创建项目订单") @PreAuthorize("@ss.hasPermission('heli:project-order:create')") @@ -99,6 +104,22 @@ public class ProjectOrderController { @Transactional(rollbackFor = Exception.class) public CommonResult operateProjectOrder(@Valid @RequestBody ProjectOrderSaveReqVO operateReqVO) { LocalDateTime startTime = LocalDateTime.now(); + if ("ALTER".equals(operateReqVO.getActive())) { + List list = operateReqVO.getProjectOrderSubs(); + List updateList = list.stream().filter(o -> o.getId() != null).collect(Collectors.toList()); + for (ProjectOrderSubDO projectOrderSubDO : updateList) { + ProjectOrderSubDO subDO = projectOrderSubMapper.selectById(projectOrderSubDO.getId()); + if (ObjectUtil.isNotEmpty(subDO)){ + if (ObjectUtil.isEmpty(subDO.getRemAmount())){ + subDO.setRemAmount(0); + } + int i = projectOrderSubDO.getAmount() - subDO.getAmount(); + if (subDO.getRemAmount()+i<0){ + return CommonResult.error(400,"剩余数量"+subDO.getRemAmount()+"+ 订单变更"+i+"小于0,不允许修改,请确认!"); + } + } + } + } projectOrderService.operateProjectOrder(operateReqVO); // 手动记录日志 @@ -171,7 +192,10 @@ public class ProjectOrderController { BigDecimal internalLaborCost; internalLaborCost=processBomService.internalLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); projectOrderDO.setNeibuCost(internalLaborCost); - + //装配工时费 + BigDecimal assemblyLaborCost; + assemblyLaborCost=processBomService.assemblyLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); + projectOrderDO.setZpCost(assemblyLaborCost); //运费成本 List deliverOrderDO = deliverOrderService.getListYf(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); @@ -202,7 +226,7 @@ public class ProjectOrderController { // }else { // projectOrderDO.setQitaCost(BigDecimal.ZERO); // } - BigDecimal sum = projectOrderDO.getYunFeiCost().add(projectOrderDO.getCailiaoCost()).add(projectOrderDO.getBiaoZhunJianCost()).add(projectOrderDO.getNeibuCost()).add(projectOrderDO.getWaixeiCost()); + BigDecimal sum = projectOrderDO.getYunFeiCost().add(projectOrderDO.getCailiaoCost()).add(projectOrderDO.getBiaoZhunJianCost()).add(projectOrderDO.getNeibuCost()).add(projectOrderDO.getWaixeiCost().add(projectOrderDO.getZpCost())); projectOrderDO.setSumCost(sum); } return success(BeanUtils.toBean(pageResult, ProjectOrderCostRespVO.class)); @@ -254,7 +278,13 @@ public class ProjectOrderController { public CommonResult> getProjectOrderSubListByProjectOrderId(@RequestParam("projectOrderId") Long projectOrderId) { return success(projectOrderService.getProjectOrderSubListByProjectOrderId(projectOrderId)); } - + @GetMapping("/project-order-sub/list-by-project-order-id-gt") + @Operation(summary = "发货获得项目订单子项目列表") + @Parameter(name = "projectOrderId", description = "项目订单id") + @PreAuthorize("@ss.hasPermission('heli:project-order:query')") + public CommonResult> getProjectOrderSubListByProjectOrderIdGt(@RequestParam("projectOrderId") Long projectOrderId) { + return success(projectOrderService.getProjectOrderSubListByProjectOrderIdGt(projectOrderId)); + } @DeleteMapping("/project-order-sub/delete") @Operation(summary = "删除项目订单子项目") @Parameter(name = "id", description = "编号", required = true) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostRespVO.java index c58e2a9e..b9e309dc 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderCostRespVO.java @@ -62,6 +62,9 @@ public class ProjectOrderCostRespVO { @Schema(description = "内部加工成本") @ExcelProperty("内部加工成本") private BigDecimal neibuCost; + @Schema(description = "装配工时费") + @ExcelProperty("装配工时费") + private BigDecimal zpCost; @Schema(description = "运费成本") @ExcelProperty("运费成本") private BigDecimal yunFeiCost; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java index 1c0bd79b..efb95b6b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java @@ -1,9 +1,5 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderno.vo.PurchaseOrderNoPageReqVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderno.vo.PurchaseOrderNoRespVO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -130,7 +126,27 @@ public class PurchaseOrderNoDetailController { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = purchaseOrderNoDetailService.received(pageReqVO).getList(); // 导出 Excel - ExcelUtils.write(response, "标准件收货.xlsx", "数据", ReceivedExcelVo.class, - BeanUtils.toBean(list, ReceivedExcelVo.class)); + ExcelUtils.write(response, "标准件收货.xlsx", "数据", OutsourcingExcelVo.class, + BeanUtils.toBean(list, OutsourcingExcelVo.class)); + } + + @GetMapping("/getOutsourcingExpenses") + @Operation(summary = "获得外协费用分页") + @PreAuthorize("@ss.hasPermission('project:purchase-order-no-detail:query')") + public CommonResult> getOutsourcingExpenses(@Valid PurchaseOrderNoDetailPageReqVO pageReqVO) { + PageResult pageResult = purchaseOrderNoDetailService.getOutsourcingExpenses(pageReqVO); + return success(pageResult); + } + @GetMapping("/exportOutsourcing") + @Operation(summary = "导出外协费用 Excel") + @PreAuthorize("@ss.hasPermission('project:purchase-order-no:export')") + @OperateLog(type = EXPORT) + public void exportOutsourcing(@Valid PurchaseOrderNoDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = purchaseOrderNoDetailService.exportOutsourcing(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "外协费用查询.xlsx", "数据", OutsourcingExcelVo.class, + BeanUtils.toBean(list, OutsourcingExcelVo.class)); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/OutsourcingExcelVo.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/OutsourcingExcelVo.java new file mode 100644 index 00000000..3ca49f0f --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/OutsourcingExcelVo.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.NumberFormat; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * Excel 导入 VO + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免BOM导入有问题 +public class OutsourcingExcelVo { + @ExcelProperty("订单日期") + private String ordDates; + @ExcelProperty("供应商简称") + private String supplierName; + + @ExcelProperty("BOM编号") + private String boomCode; + @ExcelProperty("件号") + private String blueprintNo; + @ExcelProperty("零件名称") + private String boomName; + @ExcelProperty("材料") + private String composition; + @ExcelProperty("规格") + private String boomSpec; + + @ExcelProperty("数量") + private String purchaseAmount; + @ExcelProperty("单价") + private String unitPrice; + @ExcelProperty("小计") + @NumberFormat("#0.00") // 强制保留 2 位小数 + private BigDecimal estimatedPrice; + @ExcelProperty("工序") + private String procedureName; + @ExcelProperty("到货日期") + private String acarrDates; + @ExcelProperty("采购员") + private String userName; + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/PurchaseOrderNoDetailPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/PurchaseOrderNoDetailPageReqVO.java index f71074bd..562173c8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/PurchaseOrderNoDetailPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/vo/PurchaseOrderNoDetailPageReqVO.java @@ -120,4 +120,10 @@ public class PurchaseOrderNoDetailPageReqVO extends PageParam { private String projectCode; @Schema(description = "项目编码") private Integer goodsType; + @Schema(description = "客户名称") + private String customerName; + @Schema(description = "供应商简称") + private String supplierName; + @Schema(description = "采购员") + private String ownerName; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java index 5507259c..49769030 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java @@ -240,7 +240,7 @@ public class StorageController { } } } - storageService.updateMatLogList(targetDo.getId(),status); + storageService.updateLogList(targetDo.getId(),status,targetDo.getStockType(),targetDo.getStockNo()); return success(true); } @PutMapping("/update-update-statusok") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java index 692c6bd2..e9497c7a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java @@ -84,8 +84,8 @@ public class StorageLogController { @GetMapping("/page") @Operation(summary = "获得入/出库日志分页") @PreAuthorize("@ss.hasPermission('heli:storage-log:query')") - public CommonResult> getStorageLogPage(@Valid StorageLogPageReqVO pageReqVO) { - PageResult pageResult = storageLogService.getStorageLogPage(pageReqVO); + public CommonResult> getStorageLogPage(@Valid StorageLogPageReqVO pageReqVO) { + PageResult pageResult = storageLogService.getStorageLogPage(pageReqVO); return success(pageResult); } @@ -161,11 +161,11 @@ public class StorageLogController { @OperateLog(type = EXPORT) public void exportStorageLogExcel(@Valid StorageLogPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = storageLogService.getStorageLogPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "入/出库日志.xls", "数据", StorageLogRespVO.class, - BeanUtils.toBean(list, StorageLogRespVO.class)); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// List list = storageLogService.getStorageLogPage(pageReqVO).getList(); +// // 导出 Excel +// ExcelUtils.write(response, "入/出库日志.xls", "数据", StorageLogRespVO.class, +// BeanUtils.toBean(list, StorageLogRespVO.class)); } @GetMapping("/getSupplementPage") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java index 466f0484..5637a744 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java @@ -17,6 +17,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.fpuserdetail.FpUserDetailMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService; +import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -230,6 +231,15 @@ public class TaskDispatchController { List> owner = taskDispatchService.getOwner(id, type); return success(owner); } + @GetMapping("/task-dispatch-detail/getOwnerUserList") + @Operation(summary = "获取责任人名单") + @Parameter(name = "id", description = "人员id", required = false) + @Parameter(name = "type", description = "类型", required = true) + @PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')") + public CommonResult> getOwnerUserList(@RequestParam("id") Long id, @RequestParam("type")Long type) { + if(id.intValue() ==0) id = null; + return success(taskDispatchService.getOwnerUserList(id, type)); + } @GetMapping("/assmebleDispatchPage") @Operation(summary = "获取装配报工责任人名单") @@ -246,6 +256,12 @@ public class TaskDispatchController { List list= taskDispatchService.getListJg(id,projectSubId); return success( list); } - + @GetMapping("/getListZp") + @Operation(summary = "获得装配成本") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") + public CommonResult> getListZp(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ) { + List list= taskDispatchService.getListZp(id,projectSubId); + return success( list); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskDispatchDetailVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskDispatchDetailVO.java index 63f34fac..03002eb0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskDispatchDetailVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskDispatchDetailVO.java @@ -17,7 +17,7 @@ public class TaskDispatchDetailVO { @NotNull(message = "id不能为空") private Long id; - @Min(value = 0, message = "报工数量超出限定范围") + @Min(value = 0, message = "报工数量不能小于0") @Schema(description = "报工数量") private Integer amount; @@ -28,7 +28,7 @@ public class TaskDispatchDetailVO { @Schema(description = "操作意见") private String activeOpinion; - @Positive(message = "报工工时超出限定范围") + @Positive(message = "报工工时必须大于0") @Schema(description = "报工工时") private BigDecimal workTime; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskPlanJDBaoBiaoPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskPlanJDBaoBiaoPageReqVO.java index 2f81c8fe..b7f94e19 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskPlanJDBaoBiaoPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskPlanJDBaoBiaoPageReqVO.java @@ -59,5 +59,6 @@ public class TaskPlanJDBaoBiaoPageReqVO extends PageParam { @Schema(description = "负责人") private Long owner; - + @Schema(description = "子项目简码") + private String projectSubCode; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/TaskReportController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/TaskReportController.java index 04e2e9c5..33ea9fa5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/TaskReportController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/TaskReportController.java @@ -37,6 +37,7 @@ public class TaskReportController { @Resource private TaskReportService taskReportService; + @PostMapping("/create") @Operation(summary = "创建任务报工") @PreAuthorize("@ss.hasPermission('heli:task-report:create')") @@ -48,8 +49,7 @@ public class TaskReportController { @Operation(summary = "更新任务报工") @PreAuthorize("@ss.hasPermission('heli:task-report:update')") public CommonResult updateTaskReport(@Valid @RequestBody TaskReportSaveReqVO updateReqVO) { - taskReportService.updateTaskReport(updateReqVO); - return success(true); + return taskReportService.updateTaskReport(updateReqVO); } @DeleteMapping("/delete") @@ -57,8 +57,8 @@ public class TaskReportController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('heli:task-report:delete')") public CommonResult deleteTaskReport(@RequestParam("id") Long id) { - taskReportService.deleteTaskReport(id); - return success(true); + + return taskReportService.deleteTaskReport(id); } @GetMapping("/get") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java index 3658c78a..9c0445d4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java @@ -1,6 +1,8 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; @@ -14,8 +16,12 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationRespVO; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationSaveReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotificationfile.UnqualifiedNotificationFileDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjbgmasterline.ZjBgMasterLineDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.bgmasterline.BgMasterLineMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.zjbgmasterline.ZjBgMasterLineMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.service.unqualifiednotification.UnqualifiedNotificationService; import com.chanko.yunxi.mes.module.heli.service.unqualifiednotificationfile.UnqualifiedNotificationFileService; @@ -45,6 +51,7 @@ import java.util.List; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.error; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; +import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; @Tag(name = "管理后台 - 品质异常通知单审核") @RestController @@ -56,6 +63,10 @@ public class UnqualifiedNotificationController { private UnqualifiedNotificationService unqualifiedNotificationService; @Resource private UnqualifiedNotificationFileService unqualifiedNotificationFileService; + @Resource + private BgMasterLineMapper bgMasterLineMapper; + @Resource + private ZjBgMasterLineMapper zjBgMasterLineMapper; @PostMapping("/create") @Operation(summary = "创建品质异常通知单审核") @PreAuthorize("@ss.hasPermission('heli:unqualified-notification:create')") @@ -246,6 +257,25 @@ public class UnqualifiedNotificationController { public CommonResult> getUnqualifiedNotificationStatisticPage(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { try { PageResult pageResult = unqualifiedNotificationService.getUnqualifiedNotificationStatisticPage(pageReqVO); + List list = pageResult.getList(); + if(CollUtil.isNotEmpty(list)){ + for (QualityStatistics qualityStatistics : list) { + List fileUrlList = new ArrayList<>(); + Integer type = 0; + if (qualityStatistics.getType()==0){ + type = 1; + }else if (qualityStatistics.getType()==1){ + type = 2; + } + List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(qualityStatistics.getId(),type); + if(CollUtil.isNotEmpty(unqualifiedNotificationFileDOS)){ + for (UnqualifiedNotificationFileDO unqualifiedNotificationFileDO : unqualifiedNotificationFileDOS) { + fileUrlList.add(unqualifiedNotificationFileDO.getFileUrl()); + } + qualityStatistics.setFileUrlList(fileUrlList); + } + } + } return success(pageResult); } catch (Exception e){ e.printStackTrace(); @@ -266,6 +296,20 @@ public class UnqualifiedNotificationController { @PostMapping("/review") @Operation(summary = "质量异常统计审核") public CommonResult review(@Valid @RequestBody UnqualifiedNotificationPageReqVO pageReqVO) { + if (pageReqVO.getStatus()==1){ + if ("0".equals(pageReqVO.getType())){ + BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.selectById(pageReqVO.getId()); + if (ObjectUtil.isNotEmpty(bgMasterLineDO)&&"2".equals(bgMasterLineDO.getAuditOpinion())&&bgMasterLineDO.getConStatus()==2){ + return CommonResult.error(400,"该过程检已确认,请刷新页面"); + } + + }else { + ZjBgMasterLineDO zjBgMasterLineDO = zjBgMasterLineMapper.selectById(pageReqVO.getId()); + if (ObjectUtil.isNotEmpty(zjBgMasterLineDO)&&"2".equals(zjBgMasterLineDO.getAuditOpinion())&&zjBgMasterLineDO.getConStatus()==2){ + return CommonResult.error(400,"该装配检已确认,请刷新页面"); + } + } + } unqualifiedNotificationService.review(pageReqVO); return success(true); } @@ -313,4 +357,16 @@ public class UnqualifiedNotificationController { public CommonResult countWx1(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { return success(unqualifiedNotificationService.countWx1(pageReqVO)); } + @GetMapping("/workrecord") + @Operation(summary = "获得检验报工分页") + @PreAuthorize("@ss.hasPermission('heli:unqualified-notification:query')") + public CommonResult> workrecord(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { + try { + PageResult pageResult = unqualifiedNotificationService.workrecord(pageReqVO); + return success(pageResult); + } catch (Exception e){ + e.printStackTrace(); + } + return success(null); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java index 364ee253..b36ed10c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java @@ -1,6 +1,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; @@ -12,6 +13,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -59,7 +61,10 @@ public class QualityStatistics { private Long id; private String notificationStatus; - + private String workTime; + private String modRemark; + private String conStatus; + private List fileUrlList; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationPageReqVO.java index 82fa3777..5db0b968 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationPageReqVO.java @@ -94,4 +94,13 @@ public class UnqualifiedNotificationPageReqVO extends PageParam { private LocalDateTime maxCreateTime; private Integer queryType; + @Schema(description = "报工人姓名") + private String userName; + @Schema(description = "零件名称") + private String materialName; + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime startTime; + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime endTime; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/ZjBgMasterLineController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/ZjBgMasterLineController.java index 42d1c281..0ec97d70 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/ZjBgMasterLineController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/ZjBgMasterLineController.java @@ -67,8 +67,8 @@ public class ZjBgMasterLineController { @Operation(summary = "更新终检报工") @PreAuthorize("@ss.hasPermission('heli:zj-bg-master-line:update')") public CommonResult updateZjBgMasterLine(@Valid @RequestBody ZjBgMasterLineSaveReqVO updateReqVO) { - zjBgMasterLineService.updateZjBgMasterLine(updateReqVO); - return success(true); + return zjBgMasterLineService.updateZjBgMasterLine(updateReqVO); + } @DeleteMapping("/delete") @@ -76,8 +76,8 @@ public class ZjBgMasterLineController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('heli:zj-bg-master-line:delete')") public CommonResult deleteZjBgMasterLine(@RequestParam("id") Long id) { - zjBgMasterLineService.deleteZjBgMasterLine(id); - return success(true); + + return zjBgMasterLineService.deleteZjBgMasterLine(id); } @GetMapping("/get") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineRespVO.java index 43222a09..34826469 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineRespVO.java @@ -62,5 +62,6 @@ public class ZjBgMasterLineRespVO { private Integer auditor; private LocalDateTime audit_time; private List fileUrlList; + private String modRemark; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/bgmasterline/BgMasterLineDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/bgmasterline/BgMasterLineDO.java index 463c8192..5196a608 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/bgmasterline/BgMasterLineDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/bgmasterline/BgMasterLineDO.java @@ -66,6 +66,8 @@ public class BgMasterLineDO extends BaseDO { private Integer notificationStatus; private Integer conStatus; private String auditOpinion; + private String modRemark; + private Integer auditor; private LocalDateTime audit_time; @TableField(exist = false) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/composition/CompositionDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/composition/CompositionDO.java index 790f3080..a9d30157 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/composition/CompositionDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/composition/CompositionDO.java @@ -54,5 +54,8 @@ public class CompositionDO extends BaseDO { * 密度 */ private BigDecimal density; - + /** + * 单价 + */ + private BigDecimal price; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderDO.java index 5e15355e..00435d06 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderDO.java @@ -122,10 +122,12 @@ public class DeliverOrderDO extends BaseDO { @TableField(exist = false) private String projectName; - + @TableField(exist = false) + private Integer amounts; @TableField(exist = false) private String property; - + @TableField(exist = false) + private BigDecimal weights; @TableField(exist = false) private String customerName; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java index 156b760a..b5781ca7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java @@ -100,5 +100,8 @@ public class DeliverOrderSubDO extends BaseDO { * 运费 */ private BigDecimal yunFei; - + @TableField(exist = false) + private Integer remAmount; + @TableField(exist = false) + private LocalDateTime deliverDate; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java index 0d2dab40..7e24cc4f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java @@ -174,4 +174,28 @@ public class ProcessDesignDO extends BaseDO { private String delayReason2d; @TableField(exist = false) private String delayReason3d; + @TableField(exist = false) + private String userName; + @TableField(exist = false) + private LocalDateTime startDate; + @TableField(exist = false) + private LocalDateTime endDate; + @TableField(exist = false) + private Date startReportingTime; + @TableField(exist = false) + private Date endReportingTime; + @TableField(exist = false) + private BigDecimal workTime; + @TableField(exist = false) + private String startDates; + @TableField(exist = false) + private String endDates; + @TableField(exist = false) + private String startReportingTimes; + @TableField(exist = false) + private String endReportingTimes; + @TableField(exist = false) + private String workTimes; + @TableField(exist = false) + private String completed; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java index 8b5c5126..955f317c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java @@ -292,6 +292,8 @@ public class ProjectOrderDO extends BaseDO { @TableField(exist = false) private BigDecimal neibuCost; @TableField(exist = false) + private BigDecimal zpCost; + @TableField(exist = false) private BigDecimal biaoZhunJianCost; @TableField(exist = false) private BigDecimal waixeiCost; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderSubDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderSubDO.java index c8261f38..06b38cef 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderSubDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderSubDO.java @@ -131,4 +131,6 @@ public class ProjectOrderSubDO extends BaseDO { // private Date projectStartTime; @TableField(exist = false) private Integer property; + private Integer remAmount; + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java index e10954de..4a63a009 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java @@ -215,4 +215,16 @@ public class PurchaseOrderNoDetailDO extends BaseDO { private String requireTimes; @TableField(exist = false) private Long projectSubId; + @TableField(exist = false) + private LocalDateTime acarrDate; + @TableField(exist = false) + private String userName; + @TableField(exist = false) + private String boomCode; + @TableField(exist = false) + private Date ordDate; + @TableField(exist = false) + private String ordDates; + @TableField(exist = false) + private String acarrDates; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java index 6c41bf99..33487f01 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java @@ -108,6 +108,7 @@ public class StorageDO extends BaseDO { private LocalDateTime createTime; private String vMatName; + private Integer stockMode; private String projectSubName; @@ -140,5 +141,6 @@ public class StorageDO extends BaseDO { private Date date; @TableField(exist = false) private Long headerId; - + @TableField(exist = false) + private String type; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelog/StorageLogDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelog/StorageLogDO.java index a3149927..23567562 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelog/StorageLogDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelog/StorageLogDO.java @@ -65,5 +65,27 @@ public class StorageLogDO extends BaseDO { * 状态 */ private Integer status; + private Integer isExport; + private Integer stockMode; + private Integer stockType; + private Integer goodsType; + private BigDecimal storageAft; + private BigDecimal storageBef; + private String codeNo; + @TableField(exist = false) + private String matCode; + @TableField(exist = false) + private String matName; + @TableField(exist = false) + private String matSpec; + @TableField(exist = false) + private String matUnit; + @TableField(exist = false) + private String whName; + @TableField(exist = false) + private String rgName; + @TableField(exist = false) + private String pnName; + } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java index 25da7915..2a1bb169 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java @@ -12,6 +12,8 @@ import lombok.*; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; /** * 派工单 DO @@ -133,7 +135,8 @@ public class TaskDispatchDO extends BaseDO { @TableField(exist = false) private BigDecimal amount; - + @TableField(exist = false) + private Integer quantity; @TableField(exist = false) private String unit; @@ -160,6 +163,12 @@ public class TaskDispatchDO extends BaseDO { private LocalDateTime assembleBeginDate; @TableField(exist = false) private LocalDateTime assembleEndDate; + @TableField(exist = false) + private Map map; + @TableField(exist = false) + private BigDecimal assemblyLaborCost; + @TableField(exist = false) + private BigDecimal assemblyLaborSum; public boolean canSave(){ return TaskDispatchStatusEnum.SAVE.getCode() == this.dispatchStatus.intValue(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjbgmasterline/ZjBgMasterLineDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjbgmasterline/ZjBgMasterLineDO.java index a26024b9..c247d7be 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjbgmasterline/ZjBgMasterLineDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjbgmasterline/ZjBgMasterLineDO.java @@ -69,6 +69,7 @@ public class ZjBgMasterLineDO extends BaseDO { private String auditOpinion; private Integer auditor; private LocalDateTime audit_time; + private String modRemark; @TableField(exist = false) private List fileUrlList; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjpgmaster/ZjPgMasterLineDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjpgmaster/ZjPgMasterLineDO.java index a8abf8c8..3b59a9fa 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjpgmaster/ZjPgMasterLineDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjpgmaster/ZjPgMasterLineDO.java @@ -131,8 +131,6 @@ public class ZjPgMasterLineDO extends BaseDO { @TableField(exist = false) private String nickName; - @TableField(exist = false) - private String creator; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java index 97245bd6..8395b8f9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java @@ -14,6 +14,7 @@ import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import com.chanko.yunxi.mes.module.heli.controller.admin.bgmasterline.vo.*; +import org.apache.ibatis.annotations.Param; /** * 过程检报工 Mapper @@ -115,4 +116,6 @@ public interface BgMasterLineMapper extends BaseMapperX { .eq(PgMasterLineDO::getDeleted,0); return selectCount(query); } + + void deleteByIds(@Param("id") Integer id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java index 3a82f3d6..0118448e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java @@ -243,6 +243,7 @@ public interface MaterialPlanBoomMapper extends BaseMapperX .like(!StringUtils.isEmpty(pageReqVO.getMatName()), MaterialPlanBoomDO::getMatName, pageReqVO.getMatName()) .like(!StringUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode()) .like(!StringUtils.isEmpty(pageReqVO.getDuEmpName()), AdminUserDO::getNickname, pageReqVO.getDuEmpName()) + .like(!StringUtils.isEmpty(pageReqVO.getProcedureName()), ProcedureDO::getName, pageReqVO.getProcedureName()) .eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType()) .eq(!StringUtils.isEmpty(pageReqVO.getStatus()), MaterialPlanBoomDO::getIsPurYard, pageReqVO.getStatus()) .in(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus() != null && pageReqVO.getMplanStatus() != 0 ? Arrays.asList(pageReqVO.getMplanStatus()) : Arrays.asList(0, 3)) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java index a15699c6..5c3994a0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java @@ -201,8 +201,9 @@ public interface ProcessBomDetailMapper extends BaseMapperX .select("d.name as projectSubName,d.id as projectSubId,d.name_sim as nameSim,f.name as compositionName") .select("b.id as projectId,g.plan_id as planId,c.id as customerId") .select("u.nickname as nickname,t.amount*d.amount as amounts") - .select("DATE_FORMAT(p.boom_arrive_date, '%Y-%m-%d') AS boomArriveDates") - .select("p.boom_arrive_date as boomArriveDate,p.du_emp_id as duEmpId,h.project_material_plan_no as projectMaterialPlanNo") + .select("DATE_FORMAT(COALESCE(p.boom_arrive_date, plan.require_end_date), '%Y-%m-%d') AS boomArriveDates") + .select("p.du_emp_id as duEmpId,h.project_material_plan_no as projectMaterialPlanNo") + .select("COALESCE(p.boom_arrive_date, plan.require_end_date) as boomArriveDate") .leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId) .leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId) .leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId) @@ -213,6 +214,7 @@ public interface ProcessBomDetailMapper extends BaseMapperX .leftJoin("project_material_plan h on (h.project_material_plan_no = t.project_material_plan_no and h.deleted=0)") .leftJoin("project_material_plan_boom p on (p.boom_detail_id = t.id and p.deleted=0)") .leftJoin(AdminUserDO.class,"u",AdminUserDO::getId,ProcessBomDetailDO::getDuEmpId) + .leftJoin(PlanTaskBomDO.class,"plan",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId) .groupBy(ProcessBomDetailDO::getId) .orderByDesc(ProcessBomDO::getId) .disableSubLogicDel(); @@ -257,6 +259,7 @@ public interface ProcessBomDetailMapper extends BaseMapperX .like(!ObjectUtils.isEmpty(pageReqVO.getProjectName()),ProjectOrderDO::getProjectName,pageReqVO.getProjectName()) .like(!ObjectUtils.isEmpty(pageReqVO.getTaskNo()),PlanTaskDO::getTaskNo,pageReqVO.getTaskNo()) .like(!ObjectUtils.isEmpty(pageReqVO.getProjectSubName()),ProjectOrderSubDO::getName,pageReqVO.getProjectSubName()) + .like(!ObjectUtils.isEmpty(pageReqVO.getProjectSubCode()),ProjectOrderSubDO::getNameSim,pageReqVO.getProjectSubCode()) .like(!ObjectUtils.isEmpty(pageReqVO.getMaterialName()),ProcessBomDetailDO::getMaterialName,pageReqVO.getMaterialName()) .like(!ObjectUtils.isEmpty(pageReqVO.getOwner()),AdminUserDO::getNickname,pageReqVO.getOwner()) .eq(ProcessBomDetailDO::getType,2); @@ -292,6 +295,7 @@ public interface ProcessBomDetailMapper extends BaseMapperX .like(!ObjectUtils.isEmpty(pageReqVO.getProjectName()),ProjectOrderDO::getProjectName,pageReqVO.getProjectName()) .like(!ObjectUtils.isEmpty(pageReqVO.getTaskNo()),PlanTaskDO::getTaskNo,pageReqVO.getTaskNo()) .like(!ObjectUtils.isEmpty(pageReqVO.getProjectSubName()),ProjectOrderSubDO::getName,pageReqVO.getProjectSubName()) + .like(!ObjectUtils.isEmpty(pageReqVO.getProjectSubCode()),ProjectOrderSubDO::getNameSim,pageReqVO.getProjectSubCode()) .like(!ObjectUtils.isEmpty(pageReqVO.getMaterialName()),ProcessBomDetailDO::getMaterialName,pageReqVO.getMaterialName()) .like(!ObjectUtils.isEmpty(pageReqVO.getOwner()),AdminUserDO::getNickname,pageReqVO.getOwner()) .eq(ProcessBomDetailDO::getType,1); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java index fad89a7a..2bc45141 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java @@ -195,4 +195,6 @@ public interface ProcessBomMapper extends BaseMapperX { BigDecimal bubbleFees(@Param("id") Long id,@Param("projectSubId") Long projectSubId); BigDecimal internalLaborCost(@Param("id") Long id,@Param("projectSubId") Long projectSubId); + + BigDecimal assemblyLaborCost(@Param("id") Long id,@Param("projectSubId") Long projectSubId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java index 898bfcd6..349f1899 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java @@ -162,4 +162,129 @@ public interface ProcessDesignMapper extends BaseMapperX { return selectPage(reqVO, query); } + default PageResult getProcessDesignPages(ProcessDesignPageReqVO reqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(ProcessDesignDO.class) + .select("e.brief as customerName","d.project_name as projectName","c.name as projectSubName") +// .select("b.blank_date as blankDate", "b.two_dim_date as twoDimDate", "b.three_dim_date as threeDimDate") +// .select("b.start_blank_date as startBlankDate", "b.start_two_dim_date as startTwoDimDate", "b.start_three_dim_date as startThreeDimDate") +// + .select("u3.nickname as blankOwnerName", "u4.nickname as twoDimOwnerName", "u5.nickname as threeDimOwnerName") + .select( "CASE t.process_design_type " + + "WHEN 'BLUEPRINT_WORKBLANK' THEN u3.nickname " + + "WHEN 'BLUEPRINT_2D' THEN u4.nickname " + + "WHEN 'BLUEPRINT_3D' THEN u5.nickname " + + "ELSE '' " + // 默认值 + "END as userName") + + .select( + "CASE t.process_design_type " + + "WHEN 'BLUEPRINT_WORKBLANK' THEN b.start_blank_date " + + "WHEN 'BLUEPRINT_2D' THEN b.start_two_dim_Date " + + "WHEN 'BLUEPRINT_3D' THEN b.start_three_dim_date " + + "ELSE '' " + + "END as startDate" + ) + .select( + "CASE t.process_design_type " + + "WHEN 'BLUEPRINT_WORKBLANK' THEN b.blank_date " + + "WHEN 'BLUEPRINT_2D' THEN b.two_dim_date " + + "WHEN 'BLUEPRINT_3D' THEN b.three_dim_date " + + "ELSE '' " + + "END as endDate" + ) + .leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessDesignDO::getPlanId) + .leftJoin("project_plan_sub b on b.project_plan_id = t.plan_id and b.project_sub_id = t.project_sub_id") + .leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, ProcessDesignDO::getProjectSubId) + .leftJoin(ProjectOrderDO.class, "d", ProjectOrderDO::getId, ProcessDesignDO::getProjectId) + .leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId) + .leftJoin(AdminUserDO.class, "u1", AdminUserDO::getId, PlanDO::getProjectOwner) + .leftJoin(AdminUserDO.class, "u2", AdminUserDO::getId, PlanDO::getCraftOwner) + .leftJoin("system_users u3 on u3.id = b.blank_owner") + .leftJoin("system_users u4 on u4.id = b.two_dim_owner") + .leftJoin("system_users u5 on u5.id = b.three_dim_owner") + .disableSubLogicDel(); + query.orderByDesc(ProcessDesignDO::getCreateTime); + query + .like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode()) + .like(!StringUtils.isEmpty(reqVO.getCustomerName()), CustomerDO::getName, reqVO.getCustomerName()) + .like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName()) + .like(!StringUtils.isEmpty(reqVO.getProjectSubName()), ProjectOrderSubDO::getName, reqVO.getProjectSubName()) + .in(reqVO.getProcessDesignTypeList() != null && !reqVO.getProcessDesignTypeList().isEmpty(), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignTypeList()) + ; + + if(!StringUtils.isEmpty(reqVO.getOwnerName())){ + query.and(QueryWrapper -> QueryWrapper.apply("u2.nickname = {0} and t.process_design_type = {1}", reqVO.getOwnerName(), ProcessDesignTypeEnum.BLUEPRINT_FOUNDRY_TECHNOLOGY.name()) + .or() + .apply("u3.nickname = {0} and t.process_design_type = {1}", reqVO.getOwnerName(), ProcessDesignTypeEnum.BLUEPRINT_WORKBLANK.name()) + .or() + .apply("u4.nickname = {0} and t.process_design_type = {1}", reqVO.getOwnerName(), ProcessDesignTypeEnum.BLUEPRINT_2D.name()) + .or() + .apply("u5.nickname = {0} and t.process_design_type = {1}", reqVO.getOwnerName(), ProcessDesignTypeEnum.BLUEPRINT_3D.name())); + } + return selectPage(reqVO, query); + } + default PageResult getExportExcel(ProcessDesignPageReqVO reqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(ProcessDesignDO.class) + .select("e.brief as customerName","d.project_name as projectName","c.name as projectSubName") +// .select("b.blank_date as blankDate", "b.two_dim_date as twoDimDate", "b.three_dim_date as threeDimDate") +// .select("b.start_blank_date as startBlankDate", "b.start_two_dim_date as startTwoDimDate", "b.start_three_dim_date as startThreeDimDate") +// + .select("u3.nickname as blankOwnerName", "u4.nickname as twoDimOwnerName", "u5.nickname as threeDimOwnerName") + .select( "CASE t.process_design_type " + + "WHEN 'BLUEPRINT_WORKBLANK' THEN u3.nickname " + + "WHEN 'BLUEPRINT_2D' THEN u4.nickname " + + "WHEN 'BLUEPRINT_3D' THEN u5.nickname " + + "ELSE '' " + // 默认值 + "END as userName") + + .select( + "CASE t.process_design_type " + + "WHEN 'BLUEPRINT_WORKBLANK' THEN DATE_FORMAT(b.start_blank_date, '%y-%m-%d') " + + "WHEN 'BLUEPRINT_2D' THEN DATE_FORMAT(b.start_two_dim_Date, '%y-%m-%d') " + + "WHEN 'BLUEPRINT_3D' THEN DATE_FORMAT(b.start_three_dim_date, '%y-%m-%d') " + + "ELSE '' " + + "END as startDates" + ) + .select( + "CASE t.process_design_type " + + "WHEN 'BLUEPRINT_WORKBLANK' THEN DATE_FORMAT(b.blank_date, '%y-%m-%d') " + + "WHEN 'BLUEPRINT_2D' THEN DATE_FORMAT(b.two_dim_date, '%y-%m-%d') " + + "WHEN 'BLUEPRINT_3D' THEN DATE_FORMAT(b.three_dim_date, '%y-%m-%d') " + + "ELSE '' " + + "END as endDates" + ) + .leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessDesignDO::getPlanId) + .leftJoin("project_plan_sub b on b.project_plan_id = t.plan_id and b.project_sub_id = t.project_sub_id") + .leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, ProcessDesignDO::getProjectSubId) + .leftJoin(ProjectOrderDO.class, "d", ProjectOrderDO::getId, ProcessDesignDO::getProjectId) + .leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId) + .leftJoin(AdminUserDO.class, "u1", AdminUserDO::getId, PlanDO::getProjectOwner) + .leftJoin(AdminUserDO.class, "u2", AdminUserDO::getId, PlanDO::getCraftOwner) + .leftJoin("system_users u3 on u3.id = b.blank_owner") + .leftJoin("system_users u4 on u4.id = b.two_dim_owner") + .leftJoin("system_users u5 on u5.id = b.three_dim_owner") + .disableSubLogicDel(); + query.orderByDesc(ProcessDesignDO::getCreateTime); + query + .like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode()) + .like(!StringUtils.isEmpty(reqVO.getCustomerName()), CustomerDO::getName, reqVO.getCustomerName()) + .like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName()) + .like(!StringUtils.isEmpty(reqVO.getProjectSubName()), ProjectOrderSubDO::getName, reqVO.getProjectSubName()) + .in(reqVO.getProcessDesignTypeList() != null && !reqVO.getProcessDesignTypeList().isEmpty(), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignTypeList()) + ; + + if(!StringUtils.isEmpty(reqVO.getOwnerName())){ + query.and(QueryWrapper -> QueryWrapper.apply("u2.nickname = {0} and t.process_design_type = {1}", reqVO.getOwnerName(), ProcessDesignTypeEnum.BLUEPRINT_FOUNDRY_TECHNOLOGY.name()) + .or() + .apply("u3.nickname = {0} and t.process_design_type = {1}", reqVO.getOwnerName(), ProcessDesignTypeEnum.BLUEPRINT_WORKBLANK.name()) + .or() + .apply("u4.nickname = {0} and t.process_design_type = {1}", reqVO.getOwnerName(), ProcessDesignTypeEnum.BLUEPRINT_2D.name()) + .or() + .apply("u5.nickname = {0} and t.process_design_type = {1}", reqVO.getOwnerName(), ProcessDesignTypeEnum.BLUEPRINT_3D.name())); + } + System.out.println(query.getSqlSelect()); // 查看实际执行的 SQL + return selectPage(reqVO, query); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java index be2dcaa3..2876060f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java @@ -55,10 +55,23 @@ public interface ProjectOrderSubMapper extends BaseMapperX { .leftJoin(CompositionDO.class, "b", CompositionDO::getId, ProjectOrderSubDO::getCompositionId) .disableSubLogicDel() .orderByAsc(ProjectOrderSubDO::getId) - .eq(ProjectOrderSubDO::getProjectOrderId, projectOrderId); + .eq(ProjectOrderSubDO::getProjectOrderId, projectOrderId) + ; + return selectList(query); + } + default List selectListByProjectOrderId1(Long projectOrderId) { + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(ProjectOrderSubDO.class) + .select("b.name as compositionName", "p.code as projectOrderCode","p.property as property ", "e.name as deviceName") + .leftJoin(EquipDO.class, "e", EquipDO::getId, ProjectOrderSubDO::getDeviceModel) + .leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, ProjectOrderSubDO::getProjectOrderId) + .leftJoin(CompositionDO.class, "b", CompositionDO::getId, ProjectOrderSubDO::getCompositionId) + .disableSubLogicDel() + .orderByAsc(ProjectOrderSubDO::getId) + .eq(ProjectOrderSubDO::getProjectOrderId, projectOrderId) + .gt(ProjectOrderSubDO::getRemAmount, 0); return selectList(query); } - default int deleteByProjectOrderId(Long projectOrderId) { return delete(ProjectOrderSubDO::getProjectOrderId, projectOrderId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java index 938f4c3e..a6b66db4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java @@ -60,7 +60,7 @@ public interface PurchaseOrderMakeMapper extends BaseMapperX pageResult = selectJoinPage(pageReqVO, PartPurchaseOrderPageRespVO.class, query); return pageResult; @@ -122,7 +122,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX getByPurchaseOrderId(Long id){ MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(PurchaseOrderMakeDetailDO.class) - .select("p.name as procedureName,s.name as supplierName") + .select("p.name as procedureName,s.brief as supplierName") .select("m.project_name as projectName") .leftJoin(PurchaseOrderMakeDO.class,"m",PurchaseOrderMakeDO::getId,PurchaseOrderMakeDetailDO::getPurchaseOrderId) .leftJoin(ProcedureDO.class,"p", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseorderno/PurchaseOrderNoMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseorderno/PurchaseOrderNoMapper.java index 3709d24c..3330812c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseorderno/PurchaseOrderNoMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseorderno/PurchaseOrderNoMapper.java @@ -32,7 +32,7 @@ public interface PurchaseOrderNoMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(PurchaseOrderNoDO.class) - .select("s.name as supplierName","m.project_material_plan_no as materialPlanNo") + .select("s.brief as supplierName","m.project_material_plan_no as materialPlanNo") .select("u1.nickname as submitUserName") .select("CASE " + " WHEN COUNT(d.id) = 0 THEN 1 " + // 无子记录 @@ -49,7 +49,7 @@ public interface PurchaseOrderNoMapper extends BaseMapperX { .groupBy(PurchaseOrderNoDO::getId) .orderByDesc(PurchaseOrderNoDO::getCreateTime); query.like(!StringUtils.isEmpty(reqVO.getPurchaseNo()), PurchaseOrderDO::getPurchaseNo, reqVO.getPurchaseNo()) - .like(!StringUtils.isEmpty(reqVO.getSupplierName()), "s.name", reqVO.getSupplierName()) + .like(!StringUtils.isEmpty(reqVO.getSupplierName()), "s.brief", reqVO.getSupplierName()) .like(!StringUtils.isEmpty(reqVO.getMaterialPlanNo()), "m.project_material_plan_no", reqVO.getMaterialPlanNo()) .apply(!StringUtils.isEmpty(reqVO.getCreateTime()), "DATE_FORMAT(t.create_time,'%Y-%m-%d') = {0}", reqVO.getCreateTime()) .eq(reqVO.getStatus() != null, PurchaseOrderNoDO::getStatus, reqVO.getStatus()) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java index ea7643ab..bea0ce06 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail; +import java.time.LocalDateTime; import java.util.*; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; @@ -8,12 +9,14 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.ProcessBoomPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial.vo.PurchaseOrderMaterialPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; @@ -25,10 +28,12 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.Pur import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo.*; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.PropertyValues; import org.springframework.util.StringUtils; @@ -93,7 +98,7 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX query = new MPJLambdaWrapper<>(); query.selectAll(PurchaseOrderNoDetailDO.class) - .select("s.name as supplierName","m.code as matCode","p.purchase_no as purchaseNo","t.purchase_rem_amount as purchaseRemAmounts") + .select("s.brief as supplierName","m.code as matCode","p.purchase_no as purchaseNo","t.purchase_rem_amount as purchaseRemAmounts") .select("DATE_FORMAT(t.require_time,'%Y-%m-%d') as requireTimes","DATE_FORMAT(t.arrive_time,'%Y-%m-%d') as arriveTimes") .leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getId, PurchaseOrderNoDetailDO::getPurchaseOrderId) .leftJoin(SupplierDO.class, "s", SupplierDO::getId, PurchaseOrderNoDO::getSupplierId) @@ -113,4 +118,77 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX getOutsourcingExpenses(PurchaseOrderNoDetailPageReqVO pageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + + query.selectAll(PurchaseOrderNoDetailDO.class) + .select("s.brief as supplierName","b.code as boomCode","bom.blueprint_no as blueprintNo") + .select("d.name as procedureName","a.nickname as userName","p.ord_date as ordDate") + .leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getId, PurchaseOrderNoDetailDO::getPurchaseOrderId) + .leftJoin(SupplierDO.class, "s", SupplierDO::getId, PurchaseOrderNoDO::getSupplierId) + .leftJoin(ProjectOrderDO.class,"pro", ProjectOrderDO::getId, PurchaseOrderNoDetailDO::getProjectId) + .leftJoin(CustomerDO.class,"c", CustomerDO::getId, PurchaseOrderNoDetailDO::getCustomerId) + .leftJoin(AdminUserDO.class,"a", AdminUserDO::getId, PurchaseOrderNoDO::getCreator) + .leftJoin(ProcessBomDetailDO.class,"bom", ProcessBomDetailDO::getId, PurchaseOrderNoDetailDO::getBoomDetailId) + .leftJoin(ProcessBomDO.class,"b", ProcessBomDO::getId, ProcessBomDetailDO::getBomId) + .leftJoin(ProcedureDO.class, "d", ProcedureDO::getId, PurchaseOrderNoDetailDO::getProcedureId) + .disableSubLogicDel() + .groupBy(PurchaseOrderNoDetailDO::getId) + .orderByDesc(PurchaseOrderNoDetailDO::getCreateTime); + query + .like(!StringUtils.isEmpty(pageReqVO.getProjectName()), PurchaseOrderNoDetailDO::getProjectName, pageReqVO.getProjectName()) + .like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), PurchaseOrderNoDetailDO::getName, pageReqVO.getProjectSubName()) + .like(!StringUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode()) + .like(!StringUtils.isEmpty(pageReqVO.getCustomerName()), CustomerDO::getName, pageReqVO.getCustomerName()) + .like(!StringUtils.isEmpty(pageReqVO.getSupplierName()), SupplierDO::getBrief, pageReqVO.getSupplierName()) + .like(!StringUtils.isEmpty(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName()); + if (pageReqVO.getCreateTime() != null) { + LocalDateTime endDateTime = pageReqVO.getCreateTime()[1]; + // 重置时间为 23:59:59 + LocalDateTime endOfDay = endDateTime + .withHour(23) + .withMinute(59) + .withSecond(59); + query.between(PurchaseOrderNoDO::getOrdDate, pageReqVO.getCreateTime() [0], endOfDay); + } + + return selectPage(pageReqVO, query); + } + default PageResult exportOutsourcing(PurchaseOrderNoDetailPageReqVO pageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + + query.selectAll(PurchaseOrderNoDetailDO.class) + .select("s.brief as supplierName","b.code as boomCode","bom.blueprint_no as blueprintNo") + .select("d.name as procedureName","a.nickname as userName","DATE_FORMAT(p.ord_date,'%Y-%m-%d') as ordDates") + .leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getId, PurchaseOrderNoDetailDO::getPurchaseOrderId) + .leftJoin(SupplierDO.class, "s", SupplierDO::getId, PurchaseOrderNoDO::getSupplierId) + .leftJoin(ProjectOrderDO.class,"pro", ProjectOrderDO::getId, PurchaseOrderNoDetailDO::getProjectId) + .leftJoin(CustomerDO.class,"c", CustomerDO::getId, PurchaseOrderNoDetailDO::getCustomerId) + .leftJoin(AdminUserDO.class,"a", AdminUserDO::getId, PurchaseOrderNoDO::getCreator) + .leftJoin(ProcessBomDetailDO.class,"bom", ProcessBomDetailDO::getId, PurchaseOrderNoDetailDO::getBoomDetailId) + .leftJoin(ProcessBomDO.class,"b", ProcessBomDO::getId, ProcessBomDetailDO::getBomId) + .leftJoin(ProcedureDO.class, "d", ProcedureDO::getId, PurchaseOrderNoDetailDO::getProcedureId) + .disableSubLogicDel() + .groupBy(PurchaseOrderNoDetailDO::getId) + .orderByDesc(PurchaseOrderNoDetailDO::getCreateTime); + query + .like(!StringUtils.isEmpty(pageReqVO.getProjectName()), PurchaseOrderNoDetailDO::getProjectName, pageReqVO.getProjectName()) + .like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), PurchaseOrderNoDetailDO::getName, pageReqVO.getProjectSubName()) + .like(!StringUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode()) + .like(!StringUtils.isEmpty(pageReqVO.getCustomerName()), CustomerDO::getName, pageReqVO.getCustomerName()) + .like(!StringUtils.isEmpty(pageReqVO.getSupplierName()), SupplierDO::getBrief, pageReqVO.getSupplierName()) + .like(!StringUtils.isEmpty(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName()); + if (pageReqVO.getCreateTime() != null) { + LocalDateTime endDateTime = pageReqVO.getCreateTime()[1]; + // 重置时间为 23:59:59 + LocalDateTime endOfDay = endDateTime + .withHour(23) + .withMinute(59) + .withSecond(59); + query.between(PurchaseOrderNoDO::getOrdDate, pageReqVO.getCreateTime() [0], endOfDay); + } + + return selectPage(pageReqVO, query); + } } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storage/StorageMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storage/StorageMapper.java index 8a716611..fcdcfb92 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storage/StorageMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storage/StorageMapper.java @@ -78,23 +78,9 @@ public interface StorageMapper extends BaseMapperX { // .orderByDesc(StorageDO::getId)); } - default List getList(Long id, Long projectSubId){ - MPJLambdaWrapper query = new MPJLambdaWrapper<>(); - query.selectAll(StorageDO.class) - .select("mat.code as materialCode","mat.name as materialName","mat.material_type as materialType","mat.unit as unit","mat.spec as materialSpec") - .select("COALESCE(ROUND(sm.storage_ok_qty * sm.price, 2), 0) AS caiGouMoney","sm.storage_ok_qty as amount") - .leftJoin(StorageMatDO.class, "sm", StorageMatDO::getStockId, StorageDO::getId) - .leftJoin(MaterialDO.class, "mat", MaterialDO::getId, StorageMatDO::getMatId) - .disableSubLogicDel() - .orderByDesc(StorageDO::getCreateTime); + List getList(@Param("id") Long id, @Param("projectSubId") Long projectSubId); + - query.eq(StorageDO::getProjectNo,projectSubId) - .eq(StorageDO::getStockType,2) - .eq(StorageMatDO::getDeleted,0) - .eq(MaterialDO::getDeleted,0) - .ne(StorageDO::getStatus,3); - return selectList(query); - } BigDecimal StandardPartsCost(@Param("id") Long id, @Param("projectSubId") Long projectSubId); } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagein/StorageInMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagein/StorageInMapper.java index ef47f0e4..118be381 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagein/StorageInMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagein/StorageInMapper.java @@ -28,7 +28,7 @@ public interface StorageInMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(StorageInDO.class) - .select("sup.name as supplierName") + .select("sup.brief as supplierName") .leftJoin(StorageInDetailDO.class, "s", StorageInDetailDO::getStorageNoId, StorageInDO::getId) .leftJoin(SupplierDO.class,"sup", SupplierDO::getId, StorageInDetailDO::getSupplierId) .disableSubLogicDel() @@ -37,7 +37,7 @@ public interface StorageInMapper extends BaseMapperX { query.like(!StringUtils.isEmpty(reqVO.getStorageNo()), StorageInDO::getStorageNo, reqVO.getStorageNo()); query.like(!StringUtils.isEmpty(reqVO.getProjectName()), StorageInDetailDO::getProjectName, reqVO.getProjectName()); query.like(!StringUtils.isEmpty(reqVO.getProjectSubName()), StorageInDetailDO::getName, reqVO.getProjectSubName()); - query.like(!StringUtils.isEmpty(reqVO.getSupplierName()), SupplierDO::getName, reqVO.getSupplierName()); + query.like(!StringUtils.isEmpty(reqVO.getSupplierName()), SupplierDO::getBrief, reqVO.getSupplierName()); query.eq(reqVO.getGoodsType() != null, StorageInDO::getGoodsType, reqVO.getGoodsType()); return selectPage(reqVO, query); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storageindetail/StorageInDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storageindetail/StorageInDetailMapper.java index 05d4eb6b..952e1e84 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storageindetail/StorageInDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storageindetail/StorageInDetailMapper.java @@ -62,7 +62,7 @@ public interface StorageInDetailMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(StorageInDetailDO.class) - .select("sup.name as supplierName","m.code as materialCode") + .select("sup.brief as supplierName","m.code as materialCode") .select("d.label as unit") .leftJoin(SupplierDO.class,"sup", SupplierDO::getId, StorageInDetailDO::getSupplierId) .leftJoin(MaterialDO.class,"m", MaterialDO::getId, StorageInDetailDO::getMaterialId) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogMapper.java index ffef076e..1d008b7a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogMapper.java @@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog; import java.util.*; +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.dal.dataobject.material.MaterialDO; @@ -24,28 +25,24 @@ import org.springframework.util.StringUtils; @Mapper public interface StorageLogMapper extends BaseMapperX { -// default PageResult selectPage(StorageLogPageReqVO reqVO) { -// MPJLambdaWrapper query = new MPJLambdaWrapper<>(); -// -// query.selectAll(StorageLogDO.class) -// .select("st.stock_no as stockNo", "st.stock_type as stockType","st.header_no as headerNo", "mat.name as matName","mat.code as matCode","mat.material_type as matType","wh.wh_name as whName","rg.rg_name as rgName","pn.pn_name as pnName") -// .leftJoin(StorageDO.class, "st", StorageDO::getId, StorageLogDO::getStockId) -// .leftJoin(MaterialDO.class,"mat", MaterialDO::getId,StorageLogDO::getMatId) -// .leftJoin(WarehouseDO.class,"wh", WarehouseDO::getId,StorageLogDO::getWhId) -// .leftJoin(RgDO.class,"rg", RgDO::getId,StorageLogDO::getRgId) -// .leftJoin(PnDO.class,"pn", PnDO::getId,StorageLogDO::getPnId) -// .disableSubLogicDel() -// .orderByDesc(StorageLogDO::getId); -// -// query.eq(reqVO.getMatType() != null,"mat.material_type", reqVO.getMatType()) -// .eq(reqVO.getStockType() != null,"st.stock_type", reqVO.getStockType()) -// .like(!StringUtils.isEmpty(reqVO.getMatName()), "mat.name", reqVO.getMatName()) -// .like(!StringUtils.isEmpty(reqVO.getMatCode()), "mat.code", reqVO.getMatCode()) -// .like(!StringUtils.isEmpty(reqVO.getStockNo()), "st.stock_no", reqVO.getStockNo()) -// .like(!StringUtils.isEmpty(reqVO.getHeaderNo()), "st.header_no", reqVO.getHeaderNo()) -// .like(!StringUtils.isEmpty(reqVO.getLotNo()),StorageLogDO::getLotNo, reqVO.getLotNo()); -// -// return selectPage(reqVO); -// } - //PageResult selectAllPage(StorageLogPageReqVO reqVO); + default PageResult selectPage(StorageLogPageReqVO reqVO) { + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + + query.selectAll(StorageLogDO.class) + .select( "mat.name as matName","mat.code as matCode","mat.unit as matUnit","wh.wh_name as whName","rg.rg_name as rgName","pn.pn_name as pnName") + .leftJoin(StorageDO.class, "st", StorageDO::getId, StorageLogDO::getStockId) + .leftJoin(MaterialDO.class,"mat", MaterialDO::getId,StorageLogDO::getMatId) + .leftJoin(WarehouseDO.class,"wh", WarehouseDO::getId,StorageLogDO::getWhId) + .leftJoin(RgDO.class,"rg", RgDO::getId,StorageLogDO::getRgId) + .leftJoin(PnDO.class,"pn", PnDO::getId,StorageLogDO::getPnId) + .disableSubLogicDel() + .orderByDesc(StorageLogDO::getId); + + query + .eq(reqVO.getStockType() != null,StorageLogDO::getStockType, reqVO.getStockType()) + .like(!StringUtils.isEmpty(reqVO.getMatName()), MaterialDO::getName, reqVO.getMatName()) + .eq(!ObjectUtil.isEmpty(reqVO.getWhId()), StorageLogDO::getWhId, reqVO.getWhId()); + return selectPage(reqVO,query); + } +// PageResult selectAllPage(StorageLogPageReqVO reqVO); } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index a52b23ca..cb8acbee 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -24,6 +24,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDeta 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.purchaseordermakedetail.PurchaseOrderMakeDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; 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.dataobject.taskdispatchdetailowner.TaskDispatchDetailOwnerDO; @@ -232,7 +233,7 @@ public interface TaskDispatchDetailMapper extends BaseMapperX { // query.between( TaskReportDO::getStartTime, reqVO.getStartTime()[0], reqVO.getStartTime()[1]); // } if (reqVO.getEndTime() != null) { - query.between(TaskReportDO::getReportTime, reqVO.getEndTime()[0], reqVO.getEndTime()[1]); + LocalDateTime endDateTime = reqVO.getEndTime()[1]; +// 重置时间为 23:59:59 + LocalDateTime endOfDay = endDateTime + .withHour(23) + .withMinute(59) + .withSecond(59); + query.between(TaskReportDO::getReportTime, reqVO.getEndTime()[0], endOfDay); } return selectPage(reqVO, query); } @@ -80,4 +86,5 @@ public interface TaskReportMapper extends BaseMapperX { } public Long hasReportNew(@Param("ownerId") Long dispatchOwnerId); + void deleteByIds(@Param("id")Long id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java index 7b034201..7910a81d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java @@ -146,4 +146,6 @@ public interface UnqualifiedNotificationMapper extends BaseMapperX workrecord(@Param("page") Page page, @Param("pageReqVO") UnqualifiedNotificationPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/zjbgmasterline/ZjBgMasterLineMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/zjbgmasterline/ZjBgMasterLineMapper.java index 3b19f1e1..4b0c37b0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/zjbgmasterline/ZjBgMasterLineMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/zjbgmasterline/ZjBgMasterLineMapper.java @@ -10,6 +10,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjbgmasterline.ZjBgMaster import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import com.chanko.yunxi.mes.module.heli.controller.admin.zjbgmasterline.vo.*; +import org.apache.ibatis.annotations.Param; /** * 终检报工 Mapper @@ -75,4 +76,6 @@ public interface ZjBgMasterLineMapper extends BaseMapperX { return selectOne(query); } + + void deleteByIds(@Param("id") Long id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java index 97dc1503..318c52c0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java @@ -195,9 +195,9 @@ public class CrossOrderManager { if(allDone){ projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.ALL.getCode()); - projectOrderDO.setDeliveryDate(deliverDate); - planDO.setStatus(3); - planService.updateById(planDO); +// projectOrderDO.setDeliveryDate(deliverDate); +// planDO.setStatus(3); +// planService.updateById(planDO); }else{ projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.PART.getCode()); } @@ -210,7 +210,58 @@ public class CrossOrderManager { } } + /** + * 刷新项目订单发货状态 + * @param deliverOrderSubs + */ + @Transactional(rollbackFor = Exception.class) + public void refreshProjectOrderDeliverStatusNew1( List deliverOrderSubs) { + //按销售订单号分组: + Map> groupBySaleId = deliverOrderSubs.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderId)); + for (Map.Entry> projectIdEntity : groupBySaleId.entrySet()) { + ProjectOrderDO projectOrderDO = projectOrderMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ProjectOrderDO::getId, projectIdEntity.getKey()); + last("LIMIT 1 FOR UPDATE"); + }}); + // 查询关联子项 + List projectOrderSubDOList = projectOrderSubMapper.selectListByProjectOrderId(projectOrderDO.getId()); + + // 查询发货记录 + MPJLambdaWrapper historyDeliveredSubQuery = new MPJLambdaWrapper<>(); + historyDeliveredSubQuery.selectAll(DeliverOrderSubDO.class) + .leftJoin(DeliverOrderDO.class, DeliverOrderDO::getId, DeliverOrderSubDO::getDeliveryOrderId) + .eq(DeliverOrderDO::getDeliverStatus, DeliverOrderStatusEnum.DELIVER.getCode()) + .in(DeliverOrderSubDO::getSaleOrderSubId, projectOrderSubDOList.stream().map(ProjectOrderSubDO::getId).collect(Collectors.toSet())); + List historyDeliveredSubList = deliverOrderSubMapper.selectList(historyDeliveredSubQuery); + //如果历史没发过 以本次为准 + if(historyDeliveredSubList.isEmpty()) { + projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.NOT.getCode()); + }else { + Map> historyDeliveredSubsGroupBySaleSubId = historyDeliveredSubList.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderSubId)); + + // 考虑变更订单情况 只需判断历史发货是否大于等于订单子项数量 + boolean allDone = projectOrderSubDOList.stream().allMatch(projectOrderSubDO -> { + List historySubList = historyDeliveredSubsGroupBySaleSubId.get(projectOrderSubDO.getId()); + int historyDeliveredAmount = historySubList == null || historySubList.isEmpty() ? 0 : historySubList.stream().mapToInt(DeliverOrderSubDO::getAmount).sum(); + return historyDeliveredAmount >= projectOrderSubDO.getAmount(); + }); + + if(allDone){ + projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.ALL.getCode()); + }else{ + projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.PART.getCode()); + } + } + projectOrderMapper.updateById(projectOrderDO); + } + // 锁定订单 + for (DeliverOrderSubDO deliverOrderSubDO : deliverOrderSubs) { + + + } + + } /** * 生成出货单 * @param updateReqVO diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineService.java index 19d6fd01..47f5c41b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineService.java @@ -1,11 +1,11 @@ package com.chanko.yunxi.mes.module.heli.service.bgmasterline; -import java.util.*; import javax.validation.*; + +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.bgmasterline.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; /** * 过程检报工 Service 接口 @@ -35,14 +35,15 @@ public interface BgMasterLineService { * * @param updateReqVO 更新信息 */ - void updateBgMasterLine(@Valid BgMasterLineSaveReqVO updateReqVO); + CommonResult updateBgMasterLine(@Valid BgMasterLineSaveReqVO updateReqVO); /** * 删除过程检报工 * * @param id 编号 + * @return */ - void deleteBgMasterLine(Integer id); + CommonResult deleteBgMasterLine(Integer id); /** * 获得过程检报工 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java index ba81fe3c..e2f52c3e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java @@ -2,34 +2,31 @@ package com.chanko.yunxi.mes.module.heli.service.bgmasterline; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterDO; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotificationfile.UnqualifiedNotificationFileDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.pgmaster.PgMasterLineMapper; -import com.chanko.yunxi.mes.module.heli.dal.mysql.pgmaster.PgMasterMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; import com.chanko.yunxi.mes.module.heli.service.unqualifiednotificationfile.UnqualifiedNotificationFileService; +import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; +import com.chanko.yunxi.mes.module.system.dal.mysql.user.AdminUserMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import com.chanko.yunxi.mes.module.heli.controller.admin.bgmasterline.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.bgmasterline.BgMasterLineMapper; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -49,6 +46,9 @@ public class BgMasterLineServiceImpl implements BgMasterLineService { private TaskDispatchDetailMapper taskDispatchDetailMapper; @Resource private UnqualifiedNotificationFileService unqualifiedNotificationFileService; + @Resource + private AdminUserMapper adminUserMapper; + @Override public boolean validExceed(Long zjmxId,Integer amount){ @@ -172,20 +172,44 @@ public class BgMasterLineServiceImpl implements BgMasterLineService { } @Override - public void updateBgMasterLine(BgMasterLineSaveReqVO updateReqVO) { + public CommonResult updateBgMasterLine(BgMasterLineSaveReqVO updateReqVO) { // 校验存在 validateBgMasterLineExists(updateReqVO.getId()); // 更新 + BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.selectById(updateReqVO.getId()); + PgMasterLineDO pgMasterLineDO = pgMasterLineMapper.selectById(bgMasterLineDO.getZjMxId()); + if (ObjectUtil.isNotEmpty(pgMasterLineDO)&&pgMasterLineDO.getPgType()==1) return CommonResult.error(400,"该过程检已质检结束,请确认"); + if (bgMasterLineDO.getIsQua()==1&&bgMasterLineDO.getNotificationStatus()==3) return CommonResult.error(400,"该过程检已审核,请确认"); + Long id = getLoginUser().getId(); + if (!id.equals(Long.parseLong(bgMasterLineDO.getBgUser()))){ + AdminUserDO adminUserDO = adminUserMapper.selectById(id); + AdminUserDO adminUser = adminUserMapper.selectById(bgMasterLineDO.getBgUser()); + if (ObjectUtil.isNotEmpty(adminUserDO)&&ObjectUtil.isNotEmpty(adminUser)) return CommonResult.error(400,"当前登录人员"+adminUserDO.getNickname()+"跟报工人"+adminUser.getNickname()+"不一致,不允许修改!"); + } BgMasterLineDO updateObj = BeanUtils.toBean(updateReqVO, BgMasterLineDO.class); bgMasterLineMapper.updateById(updateObj); + return CommonResult.success(true); + } @Override - public void deleteBgMasterLine(Integer id) { + public CommonResult deleteBgMasterLine(Integer id) { // 校验存在 validateBgMasterLineExists(id); + BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.selectById(id); + PgMasterLineDO pgMasterLineDO = pgMasterLineMapper.selectById(bgMasterLineDO.getZjMxId()); + if (ObjectUtil.isNotEmpty(pgMasterLineDO)&&pgMasterLineDO.getPgType()==1) return CommonResult.error(400,"该过程检已质检结束,请确认"); + if (bgMasterLineDO.getIsQua()==1&&bgMasterLineDO.getNotificationStatus()==3) return CommonResult.error(400,"该过程检已审核,请确认"); + + Long loginId = getLoginUser().getId(); + if (!loginId.equals(Long.parseLong(bgMasterLineDO.getBgUser()))){ + AdminUserDO adminUserDO = adminUserMapper.selectById(id); + AdminUserDO adminUser = adminUserMapper.selectById(bgMasterLineDO.getBgUser()); + if (ObjectUtil.isNotEmpty(adminUserDO)&&ObjectUtil.isNotEmpty(adminUser)) return CommonResult.error(400,"当前登录人员"+adminUserDO.getNickname()+"跟报工人"+adminUser.getNickname()+"不一致,不允许修改!"); + } // 删除 - bgMasterLineMapper.deleteById(id); + bgMasterLineMapper.deleteByIds(id); + return CommonResult.success(true); } private void validateBgMasterLineExists(Integer id) { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java index 7ad3be77..c5941907 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java @@ -72,4 +72,6 @@ public interface DeliverOrderService { List getListYf(Long id, Long projectSubId); + + List getListYfDetails(Long id, Long projectSubId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java index 51cdf637..1eded561 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java @@ -1,6 +1,8 @@ package com.chanko.yunxi.mes.module.heli.service.deliverorder; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; @@ -28,6 +30,8 @@ import com.chanko.yunxi.mes.module.heli.enums.DeliverOrderStatusEnum; import com.chanko.yunxi.mes.module.heli.enums.ProjectOrderDeliverStatusEnum; import com.chanko.yunxi.mes.module.heli.manager.CrossOrderManager; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; +import com.chanko.yunxi.mes.module.system.dal.mysql.user.AdminUserMapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -76,6 +80,8 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { @Resource private MaterialMapper materialMapper; + @Resource + private AdminUserMapper adminUserMapper; @Override @@ -98,7 +104,16 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { // 插入子表 if(createReqVO.getDeliverOrderSubs() != null && !createReqVO.getDeliverOrderSubs().isEmpty()){ - + for (DeliverOrderSubDO deliverOrderOtherSub : createReqVO.getDeliverOrderSubs()) { + ProjectOrderSubDO projectOrderSubDO = projectOrderSubMapper.selectById(deliverOrderOtherSub.getSaleOrderSubId()); + if (ObjectUtil.isNotEmpty(projectOrderSubDO)){ + if (ObjectUtil.isEmpty(projectOrderSubDO.getRemAmount())){ + projectOrderSubDO.setRemAmount(0); + } + projectOrderSubDO.setRemAmount(projectOrderSubDO.getRemAmount()-deliverOrderOtherSub.getAmount()); + projectOrderSubMapper.updateById(projectOrderSubDO); + } + } createDeliverOrderSubList(deliverOrder.getId(), createReqVO.getDeliverOrderSubs()); } if(createReqVO.getDeliverOrderOtherSubs() != null && !createReqVO.getDeliverOrderOtherSubs().isEmpty()){ @@ -196,11 +211,38 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { public void deleteDeliverOrder(Long id) { // 校验存在 validateDeliverOrderExists(id); + DeliverOrderDO deliverOrderDO = deliverOrderMapper.selectById(id); + + if(deliverOrderDO.getDeliverStatus()== DeliverOrderStatusEnum.DELIVER.getCode()){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeliverOrderSubDO::getDeliveryOrderId, id); + wrapper.ne(DeliverOrderSubDO::getCategory,"OTHER_LIST"); + List deliverOrderSubDOList = deliverOrderSubMapper.selectList(wrapper); + if (ObjectUtil.isNotEmpty(deliverOrderSubDOList)){ + deliverOrderSubDOList.forEach(deliverOrderSubDO -> { + ProjectOrderSubDO projectOrderSubDO = projectOrderSubMapper.selectById(deliverOrderSubDO.getSaleOrderSubId()); + if (ObjectUtil.isNotEmpty(projectOrderSubDO)){ + if (ObjectUtil.isEmpty(projectOrderSubDO.getRemAmount())){ + projectOrderSubDO.setRemAmount(0); + } + projectOrderSubDO.setRemAmount(projectOrderSubDO.getRemAmount()+deliverOrderSubDO.getAmount()); + projectOrderSubMapper.updateById(projectOrderSubDO); + + } }); + deliverOrderMapper.deleteById(id); + + // 删除子表 + deleteDeliverOrderSubByDeliveryOrderId(id); + crossOrderManager.refreshProjectOrderDeliverStatusNew1(deliverOrderSubDOList); + return; + } + } // 删除 deliverOrderMapper.deleteById(id); // 删除子表 deleteDeliverOrderSubByDeliveryOrderId(id); + } @Override @Transactional(rollbackFor = Exception.class) @@ -247,7 +289,14 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { @Override public List getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId) { - return deliverOrderSubMapper.selectListByDeliveryOrderId(deliveryOrderId); + List deliverOrderSubDOS = deliverOrderSubMapper.selectListByDeliveryOrderId(deliveryOrderId); + deliverOrderSubDOS.forEach(deliverOrderSubDO -> { + ProjectOrderSubDO projectOrderSubDO = projectOrderSubMapper.selectById(deliverOrderSubDO.getSaleOrderSubId()); + if (ObjectUtil.isNotEmpty(projectOrderSubDO)){ + deliverOrderSubDO.setRemAmount(projectOrderSubDO.getRemAmount()); + } + }); + return deliverOrderSubDOS; } @Override @@ -277,6 +326,7 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { DeliverOrderSubDO deliverOrderSubDO = deliverOrderSubMapper.searchNum(subId); //再获取订单中的生产数量 ProjectOrderSubDO projectOrderSubDO = projectOrderSubMapper.searchNum(subId); + //根据发货数量和生产数量进行对比(不相等时说明没有全部发货,不往下执行程序) // System.out.println("发货总数量"+deliverOrderSubDO.getAmount()); // System.out.println("订单数量"+projectOrderSubDO.getAmount()); @@ -366,6 +416,51 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { return null; } + @Override + public List getListYfDetails(Long id, Long projectSubId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(DeliverOrderDO::getSaleOrderIds,id); + wrapper.eq(DeliverOrderDO::getDeliverStatus,2); + wrapper.orderByDesc(DeliverOrderDO::getDeliverDate); + List deliverOrderDOS = deliverOrderMapper.selectList(wrapper); + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(ProjectOrderSubDO::getProjectOrderId,id); + List projectOrderSubDOS = projectOrderSubMapper.selectList(queryWrapper1); + if (deliverOrderDOS!=null&&deliverOrderDOS.size()>0&&projectOrderSubDOS!=null&&projectOrderSubDOS.size()>0){ + List ids = projectOrderSubDOS.stream() + .map(ProjectOrderSubDO::getId) + .collect(Collectors.toList()); + for (DeliverOrderDO deliverOrderDO : deliverOrderDOS) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(DeliverOrderSubDO::getDeliveryOrderId,deliverOrderDO.getId()); + queryWrapper.in(DeliverOrderSubDO::getSaleOrderSubId,ids); + List deliverOrderSubDOS = deliverOrderSubMapper.selectList(queryWrapper); + BigDecimal totalAmount = deliverOrderSubDOS.stream() + .map(deliverOrderSubDO -> deliverOrderSubDO.getYunFei() != null ? deliverOrderSubDO.getYunFei() : BigDecimal.ZERO) + .reduce(BigDecimal.ZERO, BigDecimal::add); + deliverOrderDO.setYunFeiMoney(totalAmount); + int amounts = deliverOrderSubDOS.stream() + .mapToInt(deliverOrderSubDO -> + deliverOrderSubDO.getAmount() != null + ? deliverOrderSubDO.getAmount() + : 0 + ) + .sum(); + deliverOrderDO.setAmounts( amounts); + BigDecimal weight = deliverOrderSubDOS.stream() + .map(deliverOrderSubDO -> deliverOrderSubDO.getWeight() != null ? new BigDecimal(deliverOrderSubDO.getWeight()) : BigDecimal.ZERO) + .reduce(BigDecimal.ZERO, BigDecimal::add); + deliverOrderDO.setWeights(weight); + AdminUserDO adminUserDO = adminUserMapper.selectById(deliverOrderDO.getDeliverPerson()); + if (ObjectUtil.isNotEmpty(adminUserDO)){ + deliverOrderDO.setDeliverPersonName(adminUserDO.getNickname()); + } + + } + return deliverOrderDOS; + } + return null; + } private void createDeliverOrderSubList(Long deliveryOrderId, List list) { @@ -379,7 +474,16 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { deleteDeliverOrderSubByDeliveryOrderId(deliveryOrderId); list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 //计算分摊运费 - + for (DeliverOrderSubDO deliverOrderOtherSub : list) { + ProjectOrderSubDO projectOrderSubDO = projectOrderSubMapper.selectById(deliverOrderOtherSub.getSaleOrderSubId()); + if (ObjectUtil.isNotEmpty(projectOrderSubDO)){ + if (ObjectUtil.isEmpty(projectOrderSubDO.getRemAmount())){ + projectOrderSubDO.setRemAmount(0); + } + projectOrderSubDO.setRemAmount(projectOrderSubDO.getRemAmount()-deliverOrderOtherSub.getAmount()); + projectOrderSubMapper.updateById(projectOrderSubDO); + } + } createDeliverOrderSubList(deliveryOrderId, list); if(deliverOrderOtherSubs != null && !deliverOrderOtherSubs.isEmpty()){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanServiceImpl.java index 1c6867d9..6887cb43 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanServiceImpl.java @@ -204,7 +204,8 @@ private TaskReportMapper taskReportMapper; pageReqVO.setPageNo(1); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = planSubMapper.selectPage(pageReqVO).getList(); - + ProjectOrderDO projectOrderDO = projectOrderMapper.selectById(projectId); + CustomerDO customer = customerService.getCustomer(projectOrderDO.getCustomerId()); for(ProjectOrderSubDO item : projectOrderSubDOs){ if(!list.stream().anyMatch(a ->a.getProjectSubId().equals(item.getId()))) { PlanSubDO planSubDO = new PlanSubDO(); @@ -214,7 +215,8 @@ private TaskReportMapper taskReportMapper; if(!StringUtils.isEmpty(item.getDeviceModel())){ planSubDO.setEquipId(Long.parseLong(item.getDeviceModel())); } - + planSubDO.setProjectSubCode(customer.getBrief()+'-'+projectOrderDO.getProjectNameSim()+'-'+item.getNameSim()); + planSubDO.setProjectSubShortName(item.getNameSim()); planSubMapper.insert(planSubDO); } else{ @@ -222,7 +224,8 @@ private TaskReportMapper taskReportMapper; if(!StringUtils.isEmpty(item.getDeviceModel())){ planSubDO.setEquipId(Long.parseLong(item.getDeviceModel())); } - + planSubDO.setProjectSubCode(customer.getBrief()+'-'+projectOrderDO.getProjectNameSim()+'-'+item.getNameSim()); + planSubDO.setProjectSubShortName(item.getNameSim()); planSubMapper.updateById(planSubDO); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java index 48d5d881..58e60bc0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java @@ -111,4 +111,6 @@ public interface ProcessBomService { BigDecimal outsourcedProcessingFee(Long id, Long projectSubId); BigDecimal internalLaborCost(Long id, Long projectSubId); + + BigDecimal assemblyLaborCost(Long id, Long projectSubId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java index e6c56a7e..3abdc046 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java @@ -1324,6 +1324,13 @@ public class ProcessBomServiceImpl implements ProcessBomService { if (ObjectUtil.isEmpty(cost)) cost=BigDecimal.ZERO; return cost; } + @Override + public BigDecimal assemblyLaborCost(Long id, Long projectSubId) { + BigDecimal cost=processBomMapper.assemblyLaborCost(id,projectSubId); + if (ObjectUtil.isEmpty(cost)) cost=BigDecimal.ZERO; + return cost; + } + private void createProcessBomDetailList(String bomCode,Long bomId, List list,Integer num) { LocalDateTime now = LocalDateTime.now(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java index 3eb751d6..efc99e7a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java @@ -85,4 +85,8 @@ public interface ProcessDesignService { void send(ProcessDesignSaveReqVO createReqVO); void reWork(ProcessDesignSaveReqVO createReqVO); + + PageResult getProcessDesignPages(ProcessDesignPageReqVO pageReqVO); + PageResult getExportExcel(ProcessDesignPageReqVO pageReqVO); + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java index 3bf101ab..7c0dc1b7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java @@ -18,6 +18,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.Attentionto import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjbgmasterline.ZjBgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper; @@ -34,14 +35,12 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.List; +import java.util.*; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; @@ -561,6 +560,105 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { } } + @Override + public PageResult getProcessDesignPages(ProcessDesignPageReqVO pageReqVO) { + PageResult processDesignDOPageResult = processDesignMapper.getProcessDesignPages(pageReqVO); + List list = processDesignDOPageResult.getList(); + for (ProcessDesignDO processDesignDO : list) { + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesignDO.getId()); + wrapper.orderByAsc(ProcessDesignProgressDO::getBeginTime); + List processDesignProgressDOS = processDesignProgressMapper.selectList(wrapper); + if (ObjectUtil.isNotEmpty(processDesignProgressDOS)){ + BigDecimal workTime = processDesignProgressDOS.stream() + .filter(Objects::nonNull) // 过滤掉空对象 + .map(ProcessDesignProgressDO::getWorkTime) + .filter(Objects::nonNull) // 过滤掉空值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 + processDesignDO.setWorkTime(workTime); + processDesignDO.setStartReportingTime(processDesignProgressDOS.get(0).getBeginTime()); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesignDO.getId()); + queryWrapper.orderByDesc(ProcessDesignProgressDO::getEndTime); + queryWrapper.last("limit 1"); + ProcessDesignProgressDO processDesignProgressDO = processDesignProgressMapper.selectOne(queryWrapper); + if (ObjectUtil.isNotEmpty(processDesignProgressDO)){ + processDesignDO.setEndReportingTime(processDesignProgressDO.getEndTime()); + } + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesignDO.getId()); + lambdaQueryWrapper.orderByDesc(ProcessDesignProgressDO::getCreateTime); + lambdaQueryWrapper.isNotNull(ProcessDesignProgressDO::getRemark); + lambdaQueryWrapper.ne(ProcessDesignProgressDO::getRemark,""); + lambdaQueryWrapper.last("limit 1"); + ProcessDesignProgressDO progressDO = processDesignProgressMapper.selectOne(lambdaQueryWrapper); + if (ObjectUtil.isNotEmpty(progressDO)){ + processDesignDO.setRemark(progressDO.getRemark()); + } + } + return processDesignDOPageResult; + + + } + + @Override + public PageResult getExportExcel(ProcessDesignPageReqVO pageReqVO) { + PageResult processDesignDOPageResult = processDesignMapper.getExportExcel(pageReqVO); + List list = processDesignDOPageResult.getList(); + SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); + for (ProcessDesignDO processDesignDO : list) { + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesignDO.getId()); + wrapper.orderByAsc(ProcessDesignProgressDO::getBeginTime); + List processDesignProgressDOS = processDesignProgressMapper.selectList(wrapper); + if (ObjectUtil.isNotEmpty(processDesignProgressDOS)){ + BigDecimal workTime = processDesignProgressDOS.stream() + .filter(Objects::nonNull) // 过滤掉空对象 + .map(ProcessDesignProgressDO::getWorkTime) + .filter(Objects::nonNull) // 过滤掉空值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 + processDesignDO.setWorkTimes(workTime+"H"); + processDesignDO.setStartReportingTimes(format.format(processDesignProgressDOS.get(0).getBeginTime())); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesignDO.getId()); + queryWrapper.orderByDesc(ProcessDesignProgressDO::getEndTime); + queryWrapper.last("limit 1"); + ProcessDesignProgressDO processDesignProgressDO = processDesignProgressMapper.selectOne(queryWrapper); + if (ObjectUtil.isNotEmpty(processDesignProgressDO)){ + processDesignDO.setEndReportingTimes(format.format(processDesignProgressDO.getEndTime())); + } + if (processDesignDO.getIsOverProcess()==1) { + processDesignDO.setCompleted("完成"); + }else { + processDesignDO.setCompleted("未完成"); + } + if ("BLUEPRINT_WORKBLANK".equals(processDesignDO.getProcessDesignType())){ + processDesignDO.setProcessDesignType("毛坯"); + }else if ("BLUEPRINT_3D".equals(processDesignDO.getProcessDesignType())){ + processDesignDO.setProcessDesignType("3D"); + }else if ("BLUEPRINT_2D".equals(processDesignDO.getProcessDesignType())){ + processDesignDO.setProcessDesignType("2D"); + } + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesignDO.getId()); + lambdaQueryWrapper.orderByDesc(ProcessDesignProgressDO::getCreateTime); + lambdaQueryWrapper.isNotNull(ProcessDesignProgressDO::getRemark); + lambdaQueryWrapper.ne(ProcessDesignProgressDO::getRemark,""); + lambdaQueryWrapper.last("limit 1"); + ProcessDesignProgressDO progressDO = processDesignProgressMapper.selectOne(lambdaQueryWrapper); + if (ObjectUtil.isNotEmpty(progressDO)){ + processDesignDO.setRemark(progressDO.getRemark()); + } + } + return processDesignDOPageResult; + + + } + private void createProcessDesignProgressList(Long processDesignId, List list) { list.forEach(o -> o.setProcessDesignId(processDesignId)); // 按创建时间排序 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java index 3ee0f9d4..3fce3fb7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java @@ -86,4 +86,6 @@ public interface ProjectOrderService { PageResult getProjectOrderSubPage(ProjectOrderSubPageReqVO pageReqVO); void showzbmoney(Long id); + + List getProjectOrderSubListByProjectOrderIdGt(Long projectOrderId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java index db781074..5b264276 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java @@ -6,9 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.ObjectUtils; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; -import com.chanko.yunxi.mes.framework.security.core.LoginUser; 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; @@ -17,7 +15,6 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.Project 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.customer.CustomerDO; 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; @@ -27,7 +24,6 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumber 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; -import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; @@ -205,6 +201,60 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { } + @Override + public List getProjectOrderSubListByProjectOrderIdGt(Long projectOrderId) { + List projectOrderSubDOList = projectOrderSubMapper.selectListByProjectOrderId1(projectOrderId); + if(!projectOrderSubDOList.isEmpty()){ + // 查询最近归档历史并对比变化字段 + try { + ProjectOrderDO lastSnapshot = projectOrderMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ProjectOrderDO::getSnapshotId, projectOrderId); + orderByDesc(ProjectOrderDO::getId); + last("LIMIT 1"); + }}); + if(lastSnapshot != null){ + List lastSnapshotSubDOList = projectOrderSubMapper.selectList(ProjectOrderSubDO::getProjectOrderId, lastSnapshot.getId()); + Map> nameGroups = lastSnapshotSubDOList.stream().collect(Collectors.groupingBy(ProjectOrderSubDO::getName)); + projectOrderSubDOList.forEach(projectOrderSubDO -> { + List lastSnapshotSubs = nameGroups.get(projectOrderSubDO.getName()); + if(lastSnapshotSubs == null || lastSnapshotSubs.isEmpty()){ + // 如为新增行 则整行标记 + projectOrderSubDO.setAlterFieldNames(new HashSet(1){{add("NEW");}}); + }else{ + List diffFields = FIELD_EQUATOR.getDiffFields(projectOrderSubDO, lastSnapshotSubs.get(0)); + projectOrderSubDO.setAlterFieldNames(diffFields.stream().map(FieldInfo::getFieldName).collect(Collectors.toSet())); + } + }); + } + }catch (Exception e){ + log.error("generate sub alterFieldNames error, id: {}, exception: {}", projectOrderId, e.getMessage(), e); + } + + } + + if(!projectOrderSubDOList.isEmpty()){ + // 已发货数量 + MPJLambdaWrapper historyDeliveredSubQuery = new MPJLambdaWrapper<>(); + historyDeliveredSubQuery.selectAll(DeliverOrderSubDO.class) + .leftJoin(DeliverOrderDO.class, DeliverOrderDO::getId, DeliverOrderSubDO::getDeliveryOrderId) + .eq(DeliverOrderDO::getDeliverStatus, DeliverOrderStatusEnum.DELIVER.getCode()) + .in(DeliverOrderSubDO::getSaleOrderSubId, projectOrderSubDOList.stream().map(ProjectOrderSubDO::getId).collect(Collectors.toList())); + List historyDeliveredSubList = deliverOrderSubMapper.selectList(historyDeliveredSubQuery); + Map> historyDeliveredSubsGroupBySaleSubId = historyDeliveredSubList.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderSubId)); + projectOrderSubDOList.forEach(projectOrderSubDO -> { + int deliverAmount = 0; + List deliverOrderSubDOList = historyDeliveredSubsGroupBySaleSubId.get(projectOrderSubDO.getId()); + if(deliverOrderSubDOList != null && !deliverOrderSubDOList.isEmpty()){ + deliverAmount = deliverOrderSubDOList.stream().mapToInt(DeliverOrderSubDO::getAmount).sum(); + } + projectOrderSubDO.setDeliverAmount(deliverAmount); + + }); + } + + return projectOrderSubDOList; + } + @Override @Transactional(rollbackFor = Exception.class) public void updateProjectOrderPrice(ProjectOrderSaveReqVO updateReqVO) { @@ -586,7 +636,13 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { // 分组更新与插入 List updateList = list.stream().filter(o -> o.getId() != null).collect(Collectors.toList()); List insertList = list.stream().filter(o -> o.getId() == null).collect(Collectors.toList()); - + insertList.forEach(o -> o.setRemAmount(o.getAmount())); + for (ProjectOrderSubDO projectOrderSubDO : updateList) { + ProjectOrderSubDO subDO = projectOrderSubMapper.selectById(projectOrderSubDO.getId()); + if (ObjectUtil.isNotEmpty(subDO)){ + projectOrderSubDO.setRemAmount(subDO.getRemAmount()+(projectOrderSubDO.getAmount()-subDO.getAmount())); + } + } if(!updateList.isEmpty()) projectOrderSubMapper.updateBatch(updateList); if(!insertList.isEmpty()) projectOrderSubMapper.insertBatch(insertList); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java index 67daa82e..7a21021a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java @@ -5,6 +5,7 @@ import javax.validation.*; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.storage.StorageController; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageParam; @@ -61,4 +62,8 @@ public interface PurchaseOrderNoDetailService { CommonResult receiveGoods(List list); PageResult received(PurchaseOrderNoDetailPageReqVO pageReqVO); + + PageResult getOutsourcingExpenses(PurchaseOrderNoDetailPageReqVO pageReqVO); + + PageResult exportOutsourcing(PurchaseOrderNoDetailPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java index cff10ddc..b9d462f1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java @@ -16,6 +16,9 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDeta import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagein.StorageInDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageindetail.StorageInDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; @@ -26,6 +29,9 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMap import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagein.StorageInMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storageindetail.StorageInDetailMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService; @@ -42,8 +48,10 @@ import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -58,8 +66,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.Purchase import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; -import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN; -import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_OUT; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.*; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -98,12 +105,18 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe @Resource private AttentiontodoService attentiontodoService; @Resource + private StorageInMapper storageInMapper; + @Resource private com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper bdgzsomthingMapper; @Resource private AdminUserService adminUserService; @Resource private AttentiontodoMapper attentiontodoMapper; + @Resource + private StorageInDetailMapper storageInDetailMapper; + @Resource + private StorageLogMapper storageLogMapper; @Override public Long createPurchaseOrderNoDetail(PurchaseOrderNoDetailSaveReqVO createReqVO) { @@ -168,6 +181,7 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe if (byId.getPurchaseRemAmount().compareTo(purchaseOrderNoDetailDO.getPurchaseRemAmounts())<0) { throw exception(new ErrorCode(1_006_9999,"该订单零件名称"+byId.getBoomName()+"入库数量"+purchaseOrderNoDetailDO.getPurchaseRemAmounts()+"大于剩余数量"+byId.getPurchaseRemAmount()+"请确认!")); } + if (BigDecimal.ZERO.compareTo(purchaseOrderNoDetailDO.getEstimatedPrice())>=0) throw exception(new ErrorCode(1_006_9999,"该订单零件名称"+byId.getBoomName()+"预估总价等于0,请确认!")); } } return success(true); @@ -176,40 +190,57 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe @Override @Transactional public CommonResult receiveGoods(List list) { - List materialDOList=new ArrayList(); +// List materialDOList=new ArrayList(); //自动生成入库单 - StorageDO storageDO = new StorageDO(); - storageDO.setStockType(1); - // 月度流水号 - SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); - serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); - // 入库前缀 - storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO.getSerialNumber().toString())); - serialNumberService.updateSerialNumber(serialNumberDO); - storageDO.setStatus(2); - storageDO.setKeeper(getLoginUser().getId()); - storageDO.setKeeperTime(LocalDateTime.now()); - storageMapper.insert(storageDO); +// StorageDO storageDO = new StorageDO(); +// storageDO.setStockType(1); +// // 月度流水号 +// SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); +// serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); +// // 入库前缀 +// storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO.getSerialNumber().toString())); +// serialNumberService.updateSerialNumber(serialNumberDO); +// storageDO.setStatus(2); +// storageDO.setKeeper(getLoginUser().getId()); +// storageDO.setKeeperTime(LocalDateTime.now()); +// storageMapper.insert(storageDO); //自动生成出库单 - StorageDO out = new StorageDO(); - out.setStockType(2); - // 月度流水号 - SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); - serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1); - // 出库前缀 - out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString())); - serialNumberService.updateSerialNumber(serialNumber); - out.setStatus(2); - out.setOutbound(getLoginUser().getId()); - out.setOutboundTime(LocalDateTime.now()); - storageMapper.insert(out); - //入库物料集合 - ArrayList storageMatDOS = new ArrayList<>(); - //出库库物料集合 - ArrayList outList = new ArrayList<>(); +// StorageDO out = new StorageDO(); +// out.setStockType(2); +// // 月度流水号 +// SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); +// serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1); +// // 出库前缀 +// out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString())); +// serialNumberService.updateSerialNumber(serialNumber); +// out.setStatus(2); +// out.setOutbound(getLoginUser().getId()); +// out.setOutboundTime(LocalDateTime.now()); +// storageMapper.insert(out); +// //入库物料集合 +// ArrayList storageMatDOS = new ArrayList<>(); +// //出库库物料集合 +// ArrayList outList = new ArrayList<>(); + ArrayList logList = new ArrayList<>(); + + //生成入库单 + StorageInDO storageInDO = new StorageInDO(); + SerialNumberDO numberDO = new SerialNumberDO(); + numberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + numberDO.setSerialNumber(numberDO.getSerialNumber()+1); + storageInDO.setStorageNo(STOCK_IN.getCode(numberDO.getSerialNumber().toString())); + storageInDO.setGoodsType(2); + storageInDO.setStatus(1); + storageInDO.setIsPrint("N"); + storageInDO.setOrdDate(new Date()); + storageInMapper.insert(storageInDO); + // 回写序列记录 + serialNumberService.updateSerialNumber(numberDO); + for (PurchaseOrderNoDetailDO detailDO : list) { PurchaseOrderNoDetailDO byId = purchaseOrderNoDetailMapper.selectById(detailDO.getId()); if (ObjectUtil.isNotEmpty(byId)){ + byId.setEstimatedPrice(detailDO.getEstimatedPrice()); if (byId.getPurchaseRemAmount().compareTo(detailDO.getPurchaseRemAmounts())==0){ byId.setReceivingStatus(3); }else { @@ -217,17 +248,18 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe } byId.setPurchaseRemAmount(byId.getPurchaseRemAmount().subtract(detailDO.getPurchaseRemAmounts())); purchaseOrderNoDetailMapper.updateById(byId); - StorageMatDO storageMatDO = new StorageMatDO(); - StorageMatDO outMat = new StorageMatDO(); - storageMatDO.setStockId(storageDO.getId()); - storageMatDO.setStorageOkQty(detailDO.getPurchaseRemAmounts()); - storageMatDO.setProjectNo(byId.getProjectPlanSubId().toString()); - storageMatDO.setProjectSubName(byId.getName()); - outMat.setStockId(out.getId()); - outMat.setStorageOkQty(detailDO.getPurchaseRemAmounts()); - outMat.setProjectNo(byId.getProjectPlanSubId().toString()); - outMat.setProjectSubName(byId.getName()); +// StorageMatDO storageMatDO = new StorageMatDO(); +// StorageMatDO outMat = new StorageMatDO(); +// storageMatDO.setStockId(storageDO.getId()); +// storageMatDO.setStorageOkQty(detailDO.getPurchaseRemAmounts()); +// storageMatDO.setProjectNo(byId.getProjectPlanSubId().toString()); +// storageMatDO.setProjectSubName(byId.getName()); +// outMat.setStockId(out.getId()); +// outMat.setStorageOkQty(detailDO.getPurchaseRemAmounts()); +// outMat.setProjectNo(byId.getProjectPlanSubId().toString()); +// outMat.setProjectSubName(byId.getName()); ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(detailDO.getBoomDetailId()); + StorageLogDO logDO = new StorageLogDO(); if (ObjectUtil.isNotEmpty(bomDetailDO)){ String bomCode=""; String blueprintNo=""; @@ -263,23 +295,84 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe if (ObjectUtil.isEmpty(material)){ // materialDOList.add(materialDO); materialMapper.insert(materialDO); - storageMatDO.setMatId(materialDO.getId()); - outMat.setMatId(materialDO.getId()); +// storageMatDO.setMatId(materialDO.getId()); +// outMat.setMatId(materialDO.getId()); + logDO.setMatId(materialDO.getId()); }else { - storageMatDO.setMatId(material.getId()); - outMat.setMatId(material.getId()); +// storageMatDO.setMatId(material.getId()); +// outMat.setMatId(material.getId()); + logDO.setMatId(material.getId()); } } - storageMatDOS.add(storageMatDO); - outList.add(outMat); +// storageMatDOS.add(storageMatDO); +// outList.add(outMat); + + StorageInDetailDO storageInDetailDO = new StorageInDetailDO(); + storageInDetailDO.setStorageNoId(storageInDO.getId()); + storageInDetailDO.setProjectSubCode(byId.getProjectSubCode()); + storageInDetailDO.setBoomDetailId(byId.getBoomDetailId()); + storageInDetailDO.setBoomName(byId.getBoomName()); + storageInDetailDO.setBoomSpec(byId.getBoomSpec()); + storageInDetailDO.setBoomUnit(byId.getBoomUnit()); + storageInDetailDO.setComposition(byId.getComposition()); + storageInDetailDO.setPurchaseAmount(byId.getPurchaseAmount()); + BigDecimal result = BigDecimal.ZERO; + BigDecimal estimatedPrice = detailDO.getEstimatedPrice(); + BigDecimal purchaseAmount = detailDO.getPurchaseAmount(); + // 检查两个值是否为null或0 + if (estimatedPrice != null && + purchaseAmount != null && + purchaseAmount.compareTo(BigDecimal.ZERO) != 0) { + // 当两个值非空且除数非零时才进行计算 + result = estimatedPrice.divide(purchaseAmount, 10, RoundingMode.HALF_UP); + } + if (result.compareTo(BigDecimal.ZERO)==0){ + storageInDetailDO.setEstimatedPrice(BigDecimal.ZERO); + + }else { + storageInDetailDO.setEstimatedPrice(detailDO.getPurchaseRemAmounts().multiply( result).setScale(1, RoundingMode.HALF_UP)); + + } + storageInDetailDO.setActualPrice(byId.getActualPrice()); + storageInDetailDO.setBoomAmount(byId.getBoomAmount()); + storageInDetailDO.setRequireTime(byId.getRequireTime()); + storageInDetailDO.setProjectMaterialPlanId(byId.getProjectMaterialPlanId()); + storageInDetailDO.setProjectMaterialPlanBoomId(byId.getProjectMaterialPlanBoomId()); + storageInDetailDO.setProjectPlanSubId(byId.getProjectPlanSubId()); + storageInDetailDO.setName(byId.getName()); + storageInDetailDO.setNameSim(byId.getNameSim()); + storageInDetailDO.setProjectId(byId.getProjectId()); + storageInDetailDO.setProjectPlanId(byId.getProjectPlanId()); + storageInDetailDO.setCustomerId(byId.getCustomerId()); + storageInDetailDO.setBrief(byId.getBrief()); + storageInDetailDO.setProjectName(byId.getProjectName()); + storageInDetailDO.setProjectNameSim(byId.getProjectNameSim()); + storageInDetailDO.setMaterialId(byId.getMaterialId()); + storageInDetailDO.setStorageAmount(detailDO.getPurchaseRemAmounts()); + PurchaseOrderNoDO purchaseOrderNoDO = purchaseOrderNoMapper.selectById(byId.getPurchaseOrderId()); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDO)){ + storageInDetailDO.setSupplierId(purchaseOrderNoDO.getSupplierId()); + } + storageInDetailDO.setPurchaseOrderNoId(byId.getPurchaseOrderId()); + storageInDetailDO.setPurchaseOrderNoDetailId(byId.getId()); + storageInDetailDO.setAcarrDate(byId.getBoomArriveDates()); + storageInDetailMapper.insert(storageInDetailDO); + logDO.setStockId(storageInDetailDO.getId()); + logDO.setStorageOkQty(detailDO.getPurchaseRemAmounts()); + logDO.setStockMode(11); + logDO.setStockType(1); + logDO.setGoodsType(2); + logDO.setCodeNo(storageInDO.getStorageNo()); + logList.add(logDO); } } - storageMatMapper.insertBatch(storageMatDOS); - storageMatMapper.insertBatch(outList); - storageService.updateMatLogList(storageDO.getId(),2); - storageService.updateMatLogList(out.getId(),2); - storageMapper.deleteById(storageDO); - storageMapper.deleteById(out); + storageLogMapper.insertBatch(logList); +// storageMatMapper.insertBatch(storageMatDOS); +// storageMatMapper.insertBatch(outList); +// storageService.updateMatLogList(storageDO.getId(),2); +// storageService.updateMatLogList(out.getId(),2); +// storageMapper.deleteById(storageDO); +// storageMapper.deleteById(out); // materialMapper.insertBatch(materialDOList); List idList = list.stream() @@ -380,5 +473,41 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe public PageResult received(PurchaseOrderNoDetailPageReqVO pageReqVO) { return purchaseOrderNoDetailMapper.received(pageReqVO); } - + @Override + public PageResult getOutsourcingExpenses(PurchaseOrderNoDetailPageReqVO pageReqVO) { + PageResult outsourcingExpenses = purchaseOrderNoDetailMapper.getOutsourcingExpenses(pageReqVO); + List list = outsourcingExpenses.getList(); + list.forEach(purchaseOrderNoDetailDO -> { + BigDecimal bigDecimal = purchaseOrderNoDetailDO.getEstimatedPrice().divide(purchaseOrderNoDetailDO.getPurchaseAmount(),2, RoundingMode.HALF_UP); + purchaseOrderNoDetailDO.setUnitPrice(bigDecimal); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,purchaseOrderNoDetailDO.getId()); + wrapper.orderByDesc(StorageInDetailDO::getCreateTime); + wrapper.last("limit 1"); + StorageInDetailDO storageInDetailDO = storageInDetailMapper.selectOne(wrapper); + if (ObjectUtil.isNotEmpty(storageInDetailDO)){ + purchaseOrderNoDetailDO.setAcarrDate(storageInDetailDO.getCreateTime()); + } + }); + return outsourcingExpenses; + } + @Override + public PageResult exportOutsourcing(PurchaseOrderNoDetailPageReqVO pageReqVO) { + PageResult outsourcingExpenses = purchaseOrderNoDetailMapper.exportOutsourcing(pageReqVO); + List list = outsourcingExpenses.getList(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + list.forEach(purchaseOrderNoDetailDO -> { + BigDecimal bigDecimal = purchaseOrderNoDetailDO.getEstimatedPrice().divide(purchaseOrderNoDetailDO.getPurchaseAmount(),2, RoundingMode.HALF_UP); + purchaseOrderNoDetailDO.setUnitPrice(bigDecimal); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,purchaseOrderNoDetailDO.getId()); + wrapper.orderByDesc(StorageInDetailDO::getCreateTime); + wrapper.last("limit 1"); + StorageInDetailDO storageInDetailDO = storageInDetailMapper.selectOne(wrapper); + if (ObjectUtil.isNotEmpty(storageInDetailDO)){ + purchaseOrderNoDetailDO.setAcarrDates(storageInDetailDO.getCreateTime().format(formatter)); + } + }); + return outsourcingExpenses; + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageService.java index 94cc3c3b..efe93dbd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageService.java @@ -64,6 +64,7 @@ public interface StorageService { */ StorageDO getStorage(Long id); public void updateMatLogList(Long stockId,int status); + public void updateLogList(Long stockId,int status,Integer type,String stockNo); /** * 获得入/出库分页 * diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java index abfe6e13..b733110c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java @@ -32,6 +32,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.outsourcestockmaterial.Outsour import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorder.PurchaseOrderMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; @@ -107,6 +108,8 @@ public class StorageServiceImpl implements StorageService { private StorageInventoryMapper storageInventoryMapper; @Resource private AdminUserService adminUserService; + @Resource + private StorageLogMapper storageLogMapper; @Resource private StorageLogService storageLogService; @@ -461,7 +464,32 @@ private StorageLogService storageLogService; // 批量保存当前库存物料日志信息 storageLogService.createStorageLogBatch(logList); } + @Override + public void updateLogList(Long stockId,int status,Integer type,String stockNo) { + // 获取当前库存下所有物料信息 + List matList = storageMatMapper.selectMatByStorckID(stockId); + // 将物料信息转化日志信息 + List logList = BeanUtils.toBean(matList,StorageLogDO.class); + // 同步库存单状态到日志,便于以后统计 + for (StorageLogDO log : logList){ + log.setId(null); + log.setStatus(status); + if (type==1){ + log.setStockMode(13); + log.setStockType(1); + log.setGoodsType(1); + log.setCodeNo(stockNo); + }else { + log.setStockMode(25); + log.setStockType(2); + log.setGoodsType(1); + log.setCodeNo(stockNo); + } + } + // 批量保存当前库存物料日志信息 + storageLogService.createStorageLogBatch(logList); + } @Override public PageResult getStoragePage(StoragePageReqVO pageReqVO) { return storageMapper.selectPage(pageReqVO); @@ -491,6 +519,7 @@ private StorageLogService storageLogService; storageDO.setStockInType(1); storageDO.setKeeper(getLoginUser().getId()); storageDO.setKeeperTime(LocalDateTime.now()); + storageDO.setStockMode(12); storageMapper.insert(storageDO); @@ -504,11 +533,12 @@ private StorageLogService storageLogService; storageMatDO.setWhId(createReqVO.getWhId()); storageMatDO.setRgId(createReqVO.getRgId()); storageMatDO.setPnId(createReqVO.getPnId()); - storageMatMapper.insert(storageMatDO); - //入库日志 - updateMatLogList(storageDO.getId(),2); - storageMapper.deleteById(storageDO); + + + //入库日志 +// updateMatLogList(storageDO.getId(),2); +// storageMapper.deleteById(storageDO); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(PurchaseOrderNoDetailDO::getId,createReqVO.getId()); @@ -529,6 +559,7 @@ private StorageLogService storageLogService; if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){ purchasePrice= purchaseOrderNoDetailDO.getEstimatedPrice().divide(purchaseOrderNoDetailDO.getPurchaseAmount(), 2, RoundingMode.HALF_UP); } + storageMatDO.setPrice(purchasePrice); if (ObjectUtil.isEmpty(storageInventoryDO)){ storageInventoryDO = new StorageInventoryDO(); storageInventoryDO.setMaterialId(createReqVO.getMaterialId()); @@ -545,15 +576,30 @@ private StorageLogService storageLogService; storageInventoryDO.setBoomCode(materialDO.getCode()); } storageInventoryDO.setPrice(purchasePrice); + }else { BigDecimal totalNumber = storageInventoryDO.getYardAmount().add(createReqVO.getStorageAmount()); BigDecimal inventoryPrice = storageInventoryDO.getYardAmount().multiply(storageInventoryDO.getPrice()); BigDecimal inPrice = createReqVO.getStorageAmount().multiply(purchasePrice); BigDecimal sumPrice = inventoryPrice.add(inPrice); - storageInventoryDO.setPrice(sumPrice.divide(totalNumber,2, RoundingMode.HALF_UP)); + BigDecimal divide = sumPrice.divide(totalNumber, 2, RoundingMode.HALF_UP); + storageInventoryDO.setPrice(divide); storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().add(createReqVO.getStorageAmount())); } storageInventoryMapper.insertOrUpdate(storageInventoryDO); + storageMatMapper.insert(storageMatDO); + StorageLogDO logDO = new StorageLogDO(); + logDO.setStockId(storageMatDO.getId()); + logDO.setMatId(createReqVO.getMaterialId()); + logDO.setStorageOkQty(createReqVO.getStorageAmount()); + logDO.setWhId(createReqVO.getWhId()); + logDO.setRgId(createReqVO.getRgId()); + logDO.setPnId(createReqVO.getPnId()); + logDO.setStockMode(12); + logDO.setGoodsType(1); + logDO.setStockType(1); + logDO.setCodeNo(storageDO.getStockNo()); + storageLogMapper.insert(logDO); return CommonResult.success(true); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java index 6df44f33..1d9d1551 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java @@ -19,11 +19,9 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService; -import io.swagger.v3.oas.models.security.SecurityScheme; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import javax.print.DocFlavor; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -140,9 +138,12 @@ public class StorageCheckServiceImpl implements StorageCheckService { // long hasStockIn = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()>0).count(); // long hasStockOut = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()<0).count(); + ArrayList logList = new ArrayList<>(); //20250705新逻辑 for (StorageCheckMatDO storageMatDO : storageCheckMats) { BigDecimal dif = storageMatDO.getStorageOkQty().subtract(storageMatDO.getMatRest()); + // 插入库存日志表 + StorageLogDO storageLogDO = new StorageLogDO(); if (dif.compareTo(BigDecimal.ZERO) > 0) { //大于0 入库,增加库额度 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -182,7 +183,8 @@ public class StorageCheckServiceImpl implements StorageCheckService { }else{ storageInventoryMapper.insert(storageInventoryDO); } - + storageLogDO.setStockMode(14); + storageLogDO.setStockType(1); } else { //不然就是出库 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -200,20 +202,25 @@ public class StorageCheckServiceImpl implements StorageCheckService { storageInventoryDO.setPrice(bigDecimal); } storageInventoryMapper.updateById(storageInventoryDO); + storageLogDO.setStockMode(24); + storageLogDO.setStockType(2); } - // 插入库存日志表 - StorageLogDO storageLogDO = new StorageLogDO(); + storageLogDO.setStockId(storageMatDO.getCheckId()); storageLogDO.setMatId(storageMatDO.getMatId()); storageLogDO.setWhId(storageMatDO.getWhId()); storageLogDO.setRgId(storageMatDO.getRgId()); storageLogDO.setPnId(storageMatDO.getPnId()); storageLogDO.setStorageOkQty(storageMatDO.getStorageOkQty().subtract(storageMatDO.getMatRest())); - storageLogDO.setLotNo(storageMatDO.getLotNo()); + storageLogDO.setCodeNo(storageCheckDO.getStockNo()); + storageLogDO.setStorageAft(storageMatDO.getStorageOkQty()); + storageLogDO.setStorageBef(storageMatDO.getMatRest()); storageLogDO.setStatus(2); - storageLogMapper.insert(storageLogDO); + storageLogDO.setGoodsType(1); + logList.add(storageLogDO); } + storageLogMapper.insertBatch(logList); //同步插入日志 // if(hasStockIn>0){ // // 库存类型为入库 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java index 65fcedc9..75c0427f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java @@ -13,6 +13,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.Pur import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageindetail.StorageInDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper; @@ -20,6 +21,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderN import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storageindetail.StorageInDetailMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService; @@ -88,6 +90,8 @@ public class StorageInServiceImpl implements StorageInService { @Resource private AttentiontodoService attentiontodoService; @Resource + private StorageLogMapper storageLogMapper; + @Resource private com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper bdgzsomthingMapper; @Override public Long createStorageIn(StorageInSaveReqVO createReqVO) { @@ -136,6 +140,33 @@ public class StorageInServiceImpl implements StorageInService { } } } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StorageInDetailDO::getStorageNoId,id); + List storageInDetailDOList = storageInDetailMapper.selectList(queryWrapper); + StorageInDO storageInDO = storageInMapper.selectById(id); + List idList = storageInDetailDOList.stream() + .filter(Objects::nonNull) // 过滤空对象 + .map(StorageInDetailDO::getId) + .filter(Objects::nonNull) // 过滤空ID + .collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(idList)){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(StorageLogDO::getStockId,idList); + lambdaQueryWrapper.eq(StorageLogDO::getCodeNo,storageInDO.getStorageNo()); + List storageLogDOS = storageLogMapper.selectList(lambdaQueryWrapper); + if (ObjectUtil.isNotEmpty(storageLogDOS)){ + storageLogDOS.forEach(storageLogDO -> { + storageLogDO.setId(null); + if (storageLogDO.getGoodsType()==1){ + storageLogDO.setStockMode(20); + }else { + storageLogDO.setStockMode(21); + } + storageLogDO.setStockType(2); + }); + storageLogMapper.insertBatch(storageLogDOS); + } + } storageInDetailMapper.delete(new LambdaQueryWrapper().eq(StorageInDetailDO::getStorageNoId,id)); // 删除 storageInMapper.deleteById(id); @@ -228,9 +259,9 @@ public class StorageInServiceImpl implements StorageInService { StorageInDO storageInDO = new StorageInDO(); //入库物料集合 - ArrayList storageMatDOS = new ArrayList<>(); +// ArrayList storageMatDOS = new ArrayList<>(); //出库库物料集合 - ArrayList outList = new ArrayList<>(); +// ArrayList outList = new ArrayList<>(); // 月度流水号 SerialNumberDO serialNumberDO = new SerialNumberDO(); serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); @@ -244,49 +275,50 @@ public class StorageInServiceImpl implements StorageInService { // 回写序列记录 serialNumberService.updateSerialNumber(serialNumberDO); //自动生成入库单 - StorageDO storageDO = new StorageDO(); - storageDO.setStockType(1); - // 月度流水号 - SerialNumberDO serialNumberDO1 = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); - serialNumberDO1.setSerialNumber(serialNumberDO1.getSerialNumber()+1); - // 入库前缀 - storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO1.getSerialNumber().toString())); - serialNumberService.updateSerialNumber(serialNumberDO1); - storageDO.setStatus(2); - storageDO.setKeeper(getLoginUser().getId()); - storageDO.setKeeperTime(LocalDateTime.now()); - storageMapper.insert(storageDO); - //自动生成出库单 - StorageDO out = new StorageDO(); - out.setStockType(2); - // 月度流水号 - SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); - serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1); - // 出库前缀 - out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString())); - serialNumberService.updateSerialNumber(serialNumber); - out.setStatus(2); - out.setOutbound(getLoginUser().getId()); - out.setOutboundTime(LocalDateTime.now()); - storageMapper.insert(out); - List storageInDetailDOList = new ArrayList<>(); +// StorageDO storageDO = new StorageDO(); +// storageDO.setStockType(1); +// // 月度流水号 +// SerialNumberDO serialNumberDO1 = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); +// serialNumberDO1.setSerialNumber(serialNumberDO1.getSerialNumber()+1); +// // 入库前缀 +// storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO1.getSerialNumber().toString())); +// serialNumberService.updateSerialNumber(serialNumberDO1); +// storageDO.setStatus(2); +// storageDO.setKeeper(getLoginUser().getId()); +// storageDO.setKeeperTime(LocalDateTime.now()); +// storageMapper.insert(storageDO); +// 自动生成出库单 +// StorageDO out = new StorageDO(); +// out.setStockType(2); +// // 月度流水号 +// SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); +// serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1); +// // 出库前缀 +// out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString())); +// serialNumberService.updateSerialNumber(serialNumber); +// out.setStatus(2); +// out.setOutbound(getLoginUser().getId()); +// out.setOutboundTime(LocalDateTime.now()); +// storageMapper.insert(out); +// List storageInDetailDOList = new ArrayList<>(); + List storageLogDOList = new ArrayList<>(); for (PurchaseOrderNoDetailDO orderNoDetailDO : list) { //入库明细 - StorageMatDO storageMatDO = new StorageMatDO(); - storageMatDO.setStockId(storageDO.getId()); - storageMatDO.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts()); - storageMatDO.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString()); - storageMatDO.setProjectSubName(orderNoDetailDO.getName()); - storageMatDO.setMatId(orderNoDetailDO.getMaterialId()); - storageMatDOS.add(storageMatDO); - //出库明细 - StorageMatDO outMat = new StorageMatDO(); - outMat.setStockId(out.getId()); - outMat.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts()); - outMat.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString()); - outMat.setProjectSubName(orderNoDetailDO.getName()); - outMat.setMatId(orderNoDetailDO.getMaterialId()); - outList.add(outMat); +// StorageMatDO storageMatDO = new StorageMatDO(); +// storageMatDO.setStockId(storageDO.getId()); +// storageMatDO.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts()); +// storageMatDO.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString()); +// storageMatDO.setProjectSubName(orderNoDetailDO.getName()); +// storageMatDO.setMatId(orderNoDetailDO.getMaterialId()); +// storageMatDOS.add(storageMatDO); +// 出库明细 +// StorageMatDO outMat = new StorageMatDO(); +// outMat.setStockId(out.getId()); +// outMat.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts()); +// outMat.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString()); +// outMat.setProjectSubName(orderNoDetailDO.getName()); +// outMat.setMatId(orderNoDetailDO.getMaterialId()); +// outList.add(outMat); StorageInDetailDO storageInDetailDO = new StorageInDetailDO(); @@ -306,7 +338,7 @@ public class StorageInServiceImpl implements StorageInService { purchaseAmount != null && purchaseAmount.compareTo(BigDecimal.ZERO) != 0) { // 当两个值非空且除数非零时才进行计算 - result = estimatedPrice.divide(purchaseAmount, 1, RoundingMode.HALF_UP); + result = estimatedPrice.divide(purchaseAmount, 10, RoundingMode.HALF_UP); } if (result.compareTo(BigDecimal.ZERO)==0){ storageInDetailDO.setEstimatedPrice(BigDecimal.ZERO); @@ -345,15 +377,28 @@ public class StorageInServiceImpl implements StorageInService { } orderNoDetailDO.setPurchaseRemAmount(orderNoDetailDO.getPurchaseRemAmount().subtract(orderNoDetailDO.getPurchaseRemAmounts())); purchaseOrderNoDetailMapper.updateById(orderNoDetailDO); - storageInDetailDOList.add(storageInDetailDO); + storageInDetailMapper.insert(storageInDetailDO); + StorageLogDO logDO = new StorageLogDO(); + logDO.setStockId(storageInDetailDO.getId()); + logDO.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts()); + logDO.setMatId(orderNoDetailDO.getMaterialId()); + logDO.setStockMode(10); + logDO.setStockType(1); + logDO.setGoodsType(1); + logDO.setCodeNo(storageInDO.getStorageNo()); + storageLogDOList.add(logDO); +// storageMatDOS.add(storageMatDO); +// storageInDetailDOList.add(storageInDetailDO); } - storageInDetailMapper.insertBatch(storageInDetailDOList); - storageMatMapper.insertBatch(storageMatDOS); - storageMatMapper.insertBatch(outList); - storageService.updateMatLogList(storageDO.getId(),2); - storageService.updateMatLogList(out.getId(),2); - storageMapper.deleteById(storageDO); - storageMapper.deleteById(out); + storageLogMapper.insertBatch(storageLogDOList); +// storageInDetailMapper.insertBatch(storageInDetailDOList); +// storageMatMapper.insertBatch(storageMatDOS); +// storageMatMapper.insertBatch(outList); +// storageService.updateMatLogList(storageDO.getId(),2); +// storageService.updateMatLogList(out.getId(),2); +// storageMapper.deleteById(storageDO); +// storageMapper.deleteById(out); + List ids = purchaseOrderNoDetailDOS.stream() .filter(Objects::nonNull) // 过滤空对象 .map(PurchaseOrderNoDetailDO::getPurchaseOrderId) @@ -362,7 +407,7 @@ public class StorageInServiceImpl implements StorageInService { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(PurchaseOrderNoDO::getId,ids); - List purchaseOrderNoDOS = purchaseOrderNoMapper.selectList(queryWrapper); +// List purchaseOrderNoDOS = purchaseOrderNoMapper.selectList(queryWrapper); // for (PurchaseOrderNoDO purchaseOrderNoDO : purchaseOrderNoDOS) { // LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); // wrapper.eq(PurchaseOrderNoDetailDO::getPurchaseOrderId,purchaseOrderNoDO.getId()); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java index 46f60d7e..18da4d17 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java @@ -54,7 +54,7 @@ public interface StorageLogService { * @param pageReqVO 分页查询 * @return 入/出库日志分页 */ - PageResult getStorageLogPage(StorageLogPageReqVO pageReqVO); + PageResult getStorageLogPage(StorageLogPageReqVO pageReqVO); PageResult getStorageNowPage(StorageLogPageReqVO pageReqVO); // List getStorageNowPagesmall(StorageLogPageReqVO pageReqVO); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java index ace7101c..631323a9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java @@ -99,8 +99,9 @@ public class StorageLogServiceImpl implements StorageLogService { return storageLogMapper.delete(StorageLogDO::getStockId,stockId); } @Override - public PageResult getStorageLogPage(StorageLogPageReqVO pageReqVO) { - return storageLogAllMapper.selectPage(pageReqVO); + public PageResult getStorageLogPage(StorageLogPageReqVO pageReqVO) { +// return storageLogAllMapper.selectPage(pageReqVO); + return storageLogMapper.selectPage(pageReqVO); } @Override diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java index f6054ac1..284572d1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java @@ -8,6 +8,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatch import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatchdetailowner.TaskDispatchDetailOwnerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO; +import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import javax.validation.Valid; import java.util.HashMap; @@ -99,4 +100,8 @@ public interface TaskDispatchService { List getListJg(Long id, Long projectSubId); List getTaskDispatchDetailListByDispatchIdAssembly(Long dispatchId); + + List getOwnerUserList(Long id, Long type); + + List getListZp(Long id, Long projectSubId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index 2e36f29a..18d4f019 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -17,6 +17,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthing import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipManufactureDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.fpuserdetail.FpUserDetailDO; 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.procedure.ProcedureDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; @@ -30,6 +31,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMappe import com.chanko.yunxi.mes.module.heli.dal.mysql.equipmanufacture.EquipManufactureMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.fpuserdetail.FpUserDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.procedure.ProcedureMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper; @@ -41,6 +43,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.taskreport.TaskReportMapper; import com.chanko.yunxi.mes.module.heli.enums.*; import com.chanko.yunxi.mes.module.heli.manager.CrossOrderManager; import com.chanko.yunxi.mes.module.heli.service.pgmaster.PgMasterService; +import com.chanko.yunxi.mes.module.heli.service.plansub.PlanSubService; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import com.chanko.yunxi.mes.module.heli.service.zjpgmaster.ZjPgMasterService; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; @@ -110,6 +113,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { private ProcessBomDetailMapper processBomDetailMapper; @Resource private ProcessBomMapper processBomMapper; + @Resource + private PlanSubMapper planSubMapper; @Override @Transactional(rollbackFor = Exception.class) public Long createTaskDispatch(TaskDispatchSaveReqVO createReqVO) { @@ -705,9 +710,9 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { // if (!taskDispatchDO.getDispatchType().equals("ASSEMBLE") && taskDispatchDetailDO.getAmount() <= historyReportAmount){ // throw exception(TASK_DISPATCH_TASK_IS_OVER); // } - if ( taskDispatchDetailDO.getAmount() <= historyReportAmount){ - throw exception(TASK_DISPATCH_TASK_IS_OVER); - } +// if ( taskDispatchDetailDO.getAmount() <= historyReportAmount){ +// throw exception(TASK_DISPATCH_TASK_IS_OVER); +// } } lastReportDO = new TaskReportDO(); }else{ @@ -730,9 +735,9 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { // if(!taskDispatchDO.getDispatchType().equals("ASSEMBLE") && taskDispatchDetailDO.getAmount() < (historyReportAmount + operateReqVO.getAmount())){ // throw exception(TASK_DISPATCH_TASK_REPORT_AMOUNT_EXCESS); // } - if ( taskDispatchDetailDO.getAmount() <= historyReportAmount){ - throw exception(TASK_DISPATCH_TASK_IS_OVER); - } +// if ( taskDispatchDetailDO.getAmount() <= historyReportAmount){ +// throw exception(TASK_DISPATCH_TASK_IS_OVER); +// } if( taskDispatchDetailDO.getAmount() < (historyReportAmount + operateReqVO.getAmount())){ throw exception(TASK_DISPATCH_TASK_REPORT_AMOUNT_EXCESS); } @@ -861,9 +866,9 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } } if (CollUtil.isNotEmpty(productionList)){ - if (CollUtil.isNotEmpty(dispatchDetailDOHashMap)){ - productionList = productionList.stream().filter((e -> !dispatchDetailDOHashMap.keySet().contains(e.getId()))).collect(Collectors.toList()); - } +// if (CollUtil.isNotEmpty(dispatchDetailDOHashMap)){ +// productionList = productionList.stream().filter((e -> !dispatchDetailDOHashMap.keySet().contains(e.getId()))).collect(Collectors.toList()); +// } for (TaskDispatchDetailDO dispatchDetailDO : productionList) { if (!dispatchDetailDO.getId().equals(taskDispatchDetailDO.getId()) && dispatchDetailDO.getProcedureStatus() !=TaskDispatchProcedureStatusEnum.COMPLETED.getCode()){ @@ -1052,6 +1057,70 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { return result; } + @Override + public List getOwnerUserList(Long id, Long type) { + List fpUserDetailDOS = fpUserDetailMapper.selectOwnerList(id, type); + List fpUserMapList = new ArrayList<>(); + if (CollUtil.isNotEmpty(fpUserDetailDOS)) { + //按人员 + Map> collect = fpUserDetailDOS.stream().collect(Collectors.groupingBy(vo -> vo.getBusyId() == null ? 0 : vo.getBusyId())); + collect.forEach((userId, list) -> { + if (userId.intValue() != 0) { + AdminUserDO adminUserDO = adminUserMapper.selectById(userId); + if (ObjectUtil.isNotEmpty(adminUserDO)){ + fpUserMapList.add(adminUserDO); + } + } + }); + } + return fpUserMapList; + } + + @Override + public List getListZp(Long id, Long projectSubId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskDispatchDO::getProjectId, id); + List taskDispatchDOS = taskDispatchMapper.selectList(queryWrapper); + for (TaskDispatchDO taskDispatchDO : taskDispatchDOS) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDO.getId()); + List detailDOS = taskDispatchDetailMapper.selectList(wrapper); + Map map = new HashMap<>(); + ProjectOrderSubDO projectOrderSubDO = projectOrderSubMapper.selectById(taskDispatchDO.getProjectSubId()); + + BigDecimal assemblyLaborCost = BigDecimal.ONE; + for (TaskDispatchDetailDO detailDO : detailDOS) { + ProcedureDO procedureDO = procedureMapper.selectById(detailDO.getProcedureId()); + BigDecimal cost=taskDispatchDetailMapper.assemblyLaborCost(detailDO.getId()); + if (ObjectUtil.isEmpty(cost)) cost=BigDecimal.ZERO; + if (ObjectUtil.isNotEmpty(procedureDO)){ + if (map.containsKey(procedureDO.getName())){ + map.put(procedureDO.getName(),map.get(procedureDO.getName()).add(cost)); + }else { + map.put(procedureDO.getName(),cost); + } + } + assemblyLaborCost.add(cost); + } + taskDispatchDO.setAssemblyLaborSum(assemblyLaborCost); + taskDispatchDO.setMap( map); + if (ObjectUtil.isNotEmpty(projectOrderSubDO)){ + taskDispatchDO.setAssemblyLaborCost(assemblyLaborCost.divide(new BigDecimal(projectOrderSubDO.getAmount()),1,RoundingMode.HALF_UP)); + taskDispatchDO.setProjectSubName(projectOrderSubDO.getName()); + taskDispatchDO.setQuantity(projectOrderSubDO.getAmount()); + LambdaQueryWrapper planSubDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); + planSubDOLambdaQueryWrapper.eq(PlanSubDO::getProjectPlanId,taskDispatchDO.getPlanId()) + .eq(PlanSubDO::getProjectSubId,projectOrderSubDO.getId()); + PlanSubDO planSubDO = planSubMapper.selectOne(planSubDOLambdaQueryWrapper); + if (ObjectUtil.isNotEmpty(planSubDO)){ + taskDispatchDO.setProjectSubCode(planSubDO.getProjectSubCode()); + } + } + } + + return null; + } + private void updateAssembleDetail(OperateTypeEnum operateTypeEnum,Long dispatchId, List list) { list.forEach(o -> o.setDispatchId(dispatchId)); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskreport/TaskReportService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskreport/TaskReportService.java index 68a3af5f..84fc08d3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskreport/TaskReportService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskreport/TaskReportService.java @@ -1,11 +1,11 @@ package com.chanko.yunxi.mes.module.heli.service.taskreport; -import java.util.*; import javax.validation.*; + +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.taskreport.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; /** * 任务报工 Service 接口 @@ -26,15 +26,17 @@ public interface TaskReportService { * 更新任务报工 * * @param updateReqVO 更新信息 + * @return */ - void updateTaskReport(@Valid TaskReportSaveReqVO updateReqVO); + CommonResult updateTaskReport(@Valid TaskReportSaveReqVO updateReqVO); /** * 删除任务报工 * * @param id 编号 + * @return */ - void deleteTaskReport(Long id); + CommonResult deleteTaskReport(Long id); /** * 获得任务报工 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskreport/TaskReportServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskreport/TaskReportServiceImpl.java index 72faaa17..677e3eae 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskreport/TaskReportServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskreport/TaskReportServiceImpl.java @@ -1,15 +1,16 @@ package com.chanko.yunxi.mes.module.heli.service.taskreport; +import cn.hutool.core.util.ObjectUtil; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; -import java.util.*; import com.chanko.yunxi.mes.module.heli.controller.admin.taskreport.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskreport.TaskReportMapper; @@ -28,7 +29,8 @@ public class TaskReportServiceImpl implements TaskReportService { @Resource private TaskReportMapper taskReportMapper; - + @Resource + private TaskDispatchDetailMapper taskDispatchDetailMapper; @Override public Long createTaskReport(TaskReportSaveReqVO createReqVO) { // 插入 @@ -39,20 +41,33 @@ public class TaskReportServiceImpl implements TaskReportService { } @Override - public void updateTaskReport(TaskReportSaveReqVO updateReqVO) { + public CommonResult updateTaskReport(TaskReportSaveReqVO updateReqVO) { // 校验存在 validateTaskReportExists(updateReqVO.getId()); + TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(updateReqVO.getDispatchDetailId()); + if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){ + if (taskDispatchDetailDO.getProcedureStatus() == 2) return CommonResult.error(400,"该派工单已报工完成,不允许修改!"); + } // 更新 TaskReportDO updateObj = BeanUtils.toBean(updateReqVO, TaskReportDO.class); taskReportMapper.updateById(updateObj); + return CommonResult.success(true); } @Override - public void deleteTaskReport(Long id) { + public CommonResult deleteTaskReport(Long id) { // 校验存在 validateTaskReportExists(id); + TaskReportDO taskReportDO = taskReportMapper.selectById(id); + if (ObjectUtil.isNotEmpty(taskReportDO)){ + TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(taskReportDO.getDispatchDetailId()); + if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){ + if (taskDispatchDetailDO.getProcedureStatus() == 2) return CommonResult.error(400,"该派工单已报工完成,不允许删除!"); + } + } // 删除 - taskReportMapper.deleteById(id); + taskReportMapper.deleteByIds(id); + return CommonResult.success(true); } private void validateTaskReportExists(Long id) { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java index 6824a424..3a9af29e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java @@ -65,4 +65,6 @@ public interface UnqualifiedNotificationService { void confirm(UnqualifiedNotificationSaveReqVO operateReqVO); Long countWx1(UnqualifiedNotificationPageReqVO pageReqVO); + + PageResult workrecord(UnqualifiedNotificationPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java index 72dd3e22..761ff970 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.service.unqualifiednotification; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; @@ -14,6 +15,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.Attentionto import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotificationfile.UnqualifiedNotificationFileDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjbgmasterline.ZjBgMasterLineDO; @@ -42,6 +44,7 @@ import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; +import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.obtainAuthorization; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.INVALID_OPERATE; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.UNQUALIFIED_NOTIFICATION_NOT_EXISTS; @@ -355,4 +358,23 @@ try { return unqualifiedNotificationMapper.selectCountConfirmPageWx(1, 5,5, Objects.requireNonNull(getLoginUser()).getId().intValue()); } + @Override + public PageResult workrecord(UnqualifiedNotificationPageReqVO pageReqVO) { + Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + if (ObjectUtil.isNotEmpty(pageReqVO.getCreateTime())){ + LocalDateTime startTime = pageReqVO.getCreateTime()[0]; + + LocalDateTime endDateTime = pageReqVO.getCreateTime()[1]; +// 重置时间为 23:59:59 + LocalDateTime endTime = endDateTime + .withHour(23) + .withMinute(59) + .withSecond(59); + pageReqVO.setStartTime(startTime); + pageReqVO.setEndTime(endTime); + } + List qualityStatistics = unqualifiedNotificationMapper.workrecord(page, pageReqVO); + return new PageResult<>(qualityStatistics, page.getTotal()); + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineService.java index 5234c507..aa52662f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineService.java @@ -2,6 +2,8 @@ package com.chanko.yunxi.mes.module.heli.service.zjbgmasterline; import java.util.*; import javax.validation.*; + +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.zjbgmasterline.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjbgmasterline.ZjBgMasterLineDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; @@ -36,15 +38,16 @@ public interface ZjBgMasterLineService { * 更新终检报工 * * @param updateReqVO 更新信息 + * @return */ - void updateZjBgMasterLine(@Valid ZjBgMasterLineSaveReqVO updateReqVO); + CommonResult updateZjBgMasterLine(@Valid ZjBgMasterLineSaveReqVO updateReqVO); /** * 删除终检报工 * * @param id 编号 */ - void deleteZjBgMasterLine(Long id); + CommonResult deleteZjBgMasterLine(Long id); /** * 获得终检报工 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineServiceImpl.java index a7edf618..27866ac3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineServiceImpl.java @@ -1,32 +1,32 @@ package com.chanko.yunxi.mes.module.heli.service.zjbgmasterline; import cn.hutool.core.collection.CollUtil; -import com.chanko.yunxi.mes.module.heli.controller.admin.bgmasterline.vo.BgMasterLineSaveReqVO; +import cn.hutool.core.util.ObjectUtil; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotificationfile.UnqualifiedNotificationFileDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjpgmaster.ZjPgMasterDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjpgmaster.ZjPgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.zjpgmaster.ZjPgMasterLineMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.zjpgmaster.ZjPgMasterMapper; import com.chanko.yunxi.mes.module.heli.service.unqualifiednotificationfile.UnqualifiedNotificationFileService; +import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; +import com.chanko.yunxi.mes.module.system.dal.mysql.user.AdminUserMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import com.chanko.yunxi.mes.module.heli.controller.admin.zjbgmasterline.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjbgmasterline.ZjBgMasterLineDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.zjbgmasterline.ZjBgMasterLineMapper; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -45,6 +45,8 @@ public class ZjBgMasterLineServiceImpl implements ZjBgMasterLineService { @Resource private ZjPgMasterLineMapper zjPgMasterLineMapper; + @Resource + private AdminUserMapper adminUserMapper; @Resource private UnqualifiedNotificationFileService unqualifiedNotificationFileService; @@ -191,20 +193,44 @@ public class ZjBgMasterLineServiceImpl implements ZjBgMasterLineService { } @Override - public void updateZjBgMasterLine(ZjBgMasterLineSaveReqVO updateReqVO) { + public CommonResult updateZjBgMasterLine(ZjBgMasterLineSaveReqVO updateReqVO) { // 校验存在 validateZjBgMasterLineExists(updateReqVO.getId()); + ZjBgMasterLineDO zjBgMasterLineDO = zjBgMasterLineMapper.selectById(updateReqVO.getId()); + ZjPgMasterLineDO zjPgMasterLineDO = zjPgMasterLineMapper.selectById(zjBgMasterLineDO.getZjMxId()); + if (ObjectUtil.isNotEmpty(zjPgMasterLineDO)&&zjPgMasterLineDO.getPgType()==1) return CommonResult.error(400,"该终检已质检结束,请确认"); + if (zjBgMasterLineDO.getIsQua()==1&&zjBgMasterLineDO.getNotificationStatus()==3) return CommonResult.error(400,"该终检已审核,请确认"); + Long id = getLoginUser().getId(); + if (!id.equals(Long.parseLong(zjBgMasterLineDO.getBgUser()))){ + AdminUserDO adminUserDO = adminUserMapper.selectById(id); + AdminUserDO adminUser = adminUserMapper.selectById(zjBgMasterLineDO.getBgUser()); + if (ObjectUtil.isNotEmpty(adminUserDO)&&ObjectUtil.isNotEmpty(adminUser)) return CommonResult.error(400,"当前登录人员"+adminUserDO.getNickname()+"跟报工人"+adminUser.getNickname()+"不一致,不允许修改!"); + } // 更新 ZjBgMasterLineDO updateObj = BeanUtils.toBean(updateReqVO, ZjBgMasterLineDO.class); zjBgMasterLineMapper.updateById(updateObj); + return CommonResult.success(true); } @Override - public void deleteZjBgMasterLine(Long id) { + public CommonResult deleteZjBgMasterLine(Long id) { // 校验存在 validateZjBgMasterLineExists(id); + ZjBgMasterLineDO zjBgMasterLineDO = zjBgMasterLineMapper.selectById(id); + ZjPgMasterLineDO zjPgMasterLineDO = zjPgMasterLineMapper.selectById(zjBgMasterLineDO.getZjMxId()); + if (ObjectUtil.isNotEmpty(zjPgMasterLineDO)&&zjPgMasterLineDO.getPgType()==1) { + return CommonResult.error(400,"该终检已质检结束,请确认"); + } + if (zjBgMasterLineDO.getIsQua()==1&&zjBgMasterLineDO.getNotificationStatus()==3) return CommonResult.error(400,"该终检已审核,请确认"); + Long loginId = getLoginUser().getId(); + if (!loginId.equals(Long.parseLong(zjBgMasterLineDO.getBgUser()))){ + AdminUserDO adminUserDO = adminUserMapper.selectById(id); + AdminUserDO adminUser = adminUserMapper.selectById(zjBgMasterLineDO.getBgUser()); + if (ObjectUtil.isNotEmpty(adminUserDO)&&ObjectUtil.isNotEmpty(adminUser)) return CommonResult.error(400,"当前登录人员"+adminUserDO.getNickname()+"跟报工人"+adminUser.getNickname()+"不一致,不允许修改!"); + } // 删除 - zjBgMasterLineMapper.deleteById(id); + zjBgMasterLineMapper.deleteByIds(id); + return CommonResult.success(true); } private void validateZjBgMasterLineExists(Long id) { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterServiceImpl.java index 3f1b1bd2..959a2bf3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterServiceImpl.java @@ -32,6 +32,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.zjpgmaster.ZjPgMasterMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.zjpgmaster.ZjPgMasterLineMapper; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/bgmasterline/BgMasterLineMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/bgmasterline/BgMasterLineMapper.xml index 2c3701e0..ed837a2c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/bgmasterline/BgMasterLineMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/bgmasterline/BgMasterLineMapper.xml @@ -9,4 +9,7 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + DELETE FROM quality_bg_master_line WHERE id =#{id} + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml index f38b1f05..4fa9f6e3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml @@ -49,10 +49,19 @@ where t1.is_outsourcing='Y' and t.deleted=0 and t.dispatch_type='PRODUCTION' and r.work_type=2 and t.project_id=#{id} + UPDATE pro_process_bom_detail diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storage/StorageMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storage/StorageMapper.xml index ecf9604f..894fa2f7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storage/StorageMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storage/StorageMapper.xml @@ -17,4 +17,61 @@ where sto.stock_in_type=5 and m.material_type=5 and sto.status=4 and sto.project_no=#{projectSubId} + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskdispatch/TaskDispatchDetailMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskdispatch/TaskDispatchDetailMapper.xml index 2d72dd1e..6b1ff07d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskdispatch/TaskDispatchDetailMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskdispatch/TaskDispatchDetailMapper.xml @@ -110,4 +110,12 @@ and t.has_report = 1 group by t.dispatch_detail_id + diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskreport/TaskReportMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskreport/TaskReportMapper.xml index 1021a99c..f98064a6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskreport/TaskReportMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskreport/TaskReportMapper.xml @@ -20,4 +20,7 @@ LEFT JOIN pro_task_dispatch_detail g ON t.dispatch_detail_id = g.id AND g.tenant_id = 2 WHERE t.deleted = 0 AND g.deleted = 0 AND g.detail_owner_id = #{ownerId} AND t.tenant_id = 2 + + DELETE FROM pro_task_report WHERE id =#{id} + diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml index 0713b769..15b53d39 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml @@ -40,7 +40,8 @@ DATE_FORMAT(t.audit_time, '%Y-%m-%d') AS auditTime, t.audit_opinion AS auditOpinion, p.CODE AS projectCode, - pg.project_sub_number AS projectSubNumber + pg.project_sub_number AS projectSubNumber, + t.con_status as conStatus FROM quality_bg_master_line t left join quality_pg_master_line pg on t.zj_mx_id=pg.id @@ -81,7 +82,8 @@ DATE_FORMAT(t.audit_time, '%Y-%m-%d') AS auditTime, t.audit_opinion AS auditOpinion, p.CODE AS projectCode, - pg.project_sub_number AS projectSubNumber + pg.project_sub_number AS projectSubNumber, + t.con_status as conStatus FROM quality_zj_bg_master_line t left join quality_zj_pg_master_line pg on t.zj_mx_id=pg.id @@ -96,19 +98,21 @@ ) t where 1=1 - and t.projectCode =#{pageReqVO.projectCode} + and t.projectCode LIKE CONCAT('%',#{pageReqVO.projectCode}, '%') + - and t.projectName =#{pageReqVO.projectName} + and t.projectName LIKE CONCAT('%',#{pageReqVO.projectName}, '%') + - and t.projectSubNumber =#{pageReqVO.projectSubCode} + and t.projectSubNumber LIKE CONCAT('%',#{pageReqVO.projectSubCode}, '%') - and t.projectCode =#{pageReqVO.projectCode} + and t.projectCode LIKE CONCAT('%',#{pageReqVO.projectCode}, '%') - and t.projectSubName =#{pageReqVO.projectSubName} + and t.projectSubName LIKE CONCAT('%',#{pageReqVO.projectSubName}, '%') and t.type =#{pageReqVO.type} @@ -316,4 +320,138 @@ ) gh ORDER BY gh.createTime DESC LIMIT #{offset}, #{limit} + diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/zjbgmasterline/ZjBgMasterLineMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/zjbgmasterline/ZjBgMasterLineMapper.xml index b47e9400..73feb818 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/zjbgmasterline/ZjBgMasterLineMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/zjbgmasterline/ZjBgMasterLineMapper.xml @@ -9,4 +9,8 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + DELETE FROM quality_zj_bg_master_line WHERE id =#{id} + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/bgmasterline/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/bgmasterline/index.ts new file mode 100644 index 00000000..cd51761d --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/bgmasterline/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +export interface BgMasterLineVO { + id: number + zjId: number + zjMxId: number + bgUser: string + amount: number + bgTime: Date + workTime: number +} + +// 查询过程检报工分页 +export const getBgMasterLinePage = async (params) => { + return await request.get({ url: `/heli/bg-master-line/page`, params }) +} + +// 查询过程检报工详情 +export const getBgMasterLine = async (id: number) => { + return await request.get({ url: `/heli/bg-master-line/get?id=` + id }) +} + +// 新增过程检报工 +export const createBgMasterLine = async (data: BgMasterLineVO) => { + return await request.post({ url: `/heli/bg-master-line/create`, data }) +} + +// 修改过程检报工 +export const updateBgMasterLine = async (data: BgMasterLineVO) => { + return await request.put({ url: `/heli/bg-master-line/update`, data }) +} + +// 删除过程检报工 +export const deleteBgMasterLine = async (id: number) => { + return await request.delete({ url: `/heli/bg-master-line/delete?id=` + id }) +} + +// 导出过程检报工 Excel +export const exportBgMasterLine = async (params) => { + return await request.download({ url: `/heli/bg-master-line/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/processdesign/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/processdesign/index.ts index dfa884c3..a6c64f58 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/processdesign/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/processdesign/index.ts @@ -63,3 +63,11 @@ export const send = async (data: ProcessDesignVO) => { export const reWork = async (data: ProcessDesignVO) => { return await request.post({ url: `/heli/process-design/reWork`, data }) } +// 查询工艺设计分页 +export const getProcessDesignPages = async (params) => { + return await request.get({ url: `/heli/process-design/pages`, params }) +} +// 导出工艺设计 Excel +export const exportProcessDesigns = async (params) => { + return await request.download({ url: `/heli/process-design/exportExcel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/projectorder/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/projectorder/index.ts index 22ea3e2a..6b58858c 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/projectorder/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/projectorder/index.ts @@ -72,7 +72,7 @@ export const exportProjectOrder = async (params) => { return await request.download({ url: `/heli/project-order/export-excel`, params }) } -// ==================== 子表(项目订单子项目) ==================== +// ==================== 子表(项目订单子项目R) ==================== // 获得项目订单子项目列表 export const getProjectOrderSubListByProjectOrderId = async (projectOrderId) => { @@ -91,7 +91,10 @@ export const getProjectOrderSubPage = async (params) => { return await request.get({ url: `/heli/project-order/project-order-sub/page`, params }) } - +// 获得项目订单子项目列表 +export const getProjectOrderSubListByProjectOrderIdGt = async (projectOrderId) => { + return await request.get({ url: `/heli/project-order/project-order-sub/list-by-project-order-id-gt?projectOrderId=` + projectOrderId }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts index dbf22f6f..ba3f80eb 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts @@ -81,3 +81,10 @@ export const received = async (params) => { export const exportReceived = async (params) => { return await request.download({ url: `/heli/purchase-order-no-detail/exportReceived`, params }) } +export const getOutsourcingExpenses = async (params) => { + return await request.get({ url: `/heli/purchase-order-no-detail/getOutsourcingExpenses`, params }) +} +// 导出外协费用 Excel +export const exportOutsourcing = async (params) => { + return await request.download({ url: `/heli/purchase-order-no-detail/exportOutsourcing`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts index df5d24f3..80f5325a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts @@ -39,3 +39,15 @@ export const getList = async (id: number,projectSubId: number) => { export const getListqt = async (id: number,projectSubId: number) => { return await request.get({ url: `/heli/purchase-order/getListqt?id=`+id+`&projectSubId=`+projectSubId }) } +//查询运费成本明细 +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 getListZp = async (id: number,projectSubId: number) => { + return await request.get({ url: `/heli/task-dispatch/getListZp?id=`+id+`&projectSubId=`+projectSubId }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts index bb5d1c9a..8d6e712b 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts @@ -88,3 +88,6 @@ export const judgeHasOver = async(id:number)=>{ export const getTaskDispatchDetailListByDispatchIdAssembly = async (dispatchId) => { return await request.get({ url: `/heli/task-dispatch/task-dispatch-detail/list-by-dispatch-id-assembly?dispatchId=` + dispatchId }) } +export const getOwnerUserList = async(id:number,type:number)=>{ + return await request.get({url:`/heli/task-dispatch/task-dispatch-detail/getOwnerUserList?id=`+id+`&type=`+type}) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts index bf7fccba..451f9cea 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts @@ -61,3 +61,6 @@ export const exportStatisticPage = async (params) => { export const review = async (data) => { return await request.post({ url: `/heli/unqualified-notification/review`, data }) } +export const workrecord = async (params) => { + return await request.get({ url: `/heli/unqualified-notification/workrecord`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/zjbgmasterline/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/zjbgmasterline/index.ts new file mode 100644 index 00000000..446a1d7d --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/zjbgmasterline/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +export interface ZjBgMasterLineVO { + id: number + zjId: number + zjMxId: number + bgUser: string + amount: number + bgTime: Date + workTime: number +} + +// 查询终检报工分页 +export const getZjBgMasterLinePage = async (params) => { + return await request.get({ url: `/heli/zj-bg-master-line/page`, params }) +} + +// 查询终检报工详情 +export const getZjBgMasterLine = async (id: number) => { + return await request.get({ url: `/heli/zj-bg-master-line/get?id=` + id }) +} + +// 新增终检报工 +export const createZjBgMasterLine = async (data: ZjBgMasterLineVO) => { + return await request.post({ url: `/heli/zj-bg-master-line/create`, data }) +} + +// 修改终检报工 +export const updateZjBgMasterLine = async (data: ZjBgMasterLineVO) => { + return await request.put({ url: `/heli/zj-bg-master-line/update`, data }) +} + +// 删除终检报工 +export const deleteZjBgMasterLine = async (id: number) => { + return await request.delete({ url: `/heli/zj-bg-master-line/delete?id=` + id }) +} + +// 导出终检报工 Excel +export const exportZjBgMasterLine = async (params) => { + return await request.download({ url: `/heli/zj-bg-master-line/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts index 242441cd..a8d3cc68 100644 --- a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts +++ b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts @@ -297,5 +297,7 @@ export enum DICT_TYPE { HELI_PROJECT_PURCHASE_ORDER_NO_TYPE = 'heli_project_purchase_order_no_type',//采购单类型 HELI_DISPATCH_PRODUCTION_STATUS = 'heli_dispatch_production_status', // 派工单状态 HELI_STORAGE_IN_STATUS = 'heli_storage_in_status',//入库出库状态 + HELI_STOCK_MODE = 'heli_stock_mode',//库存变动日志类型 + HELI_PROCESS_TYPE="heli_process_type" } diff --git a/mes-ui/mes-ui-admin-vue3/src/utils/formatTime.ts b/mes-ui/mes-ui-admin-vue3/src/utils/formatTime.ts index 5eb31b3a..56b49f34 100644 --- a/mes-ui/mes-ui-admin-vue3/src/utils/formatTime.ts +++ b/mes-ui/mes-ui-admin-vue3/src/utils/formatTime.ts @@ -237,7 +237,18 @@ export const dateFormatter2 = (row, column, cellValue) => { } return formatDate(cellValue, 'YYYY-MM-DD') } - +export const dateFormatter3 = (row, column, cellValue) => { + if (!cellValue) { + return + } + return formatDate(cellValue, 'YY-MM-DD') +} +export const dateFormatter4 = (row, column, cellValue) => { + if (!cellValue) { + return + } + return formatDate(cellValue, 'MM-DD HH:mm') +} /** * 设置起始日期,时间为00:00:00 * @param param 传入日期 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/composition/CompositionForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/composition/CompositionForm.vue index a229e08f..c6637252 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/composition/CompositionForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/composition/CompositionForm.vue @@ -28,6 +28,9 @@ 吨/立方米 + + 元 + @@ -68,11 +71,13 @@ const formData = ref({ status: 1, original: undefined, density: undefined, + price:undefined, }) const formRules = reactive({ name: [{ required: true, message: '材质名不能为空', trigger: 'blur' }], status: [{ required: true, message: '启用状态不能为空', trigger: 'blur' }], original: [{ required: true, message: '主要来源不能为空', trigger: 'blur' }], + price: [{ required: true, message: '单价不能为空', trigger: 'blur' }], }) const formRef = ref() // 表单 Ref @@ -128,6 +133,7 @@ const resetForm = () => { status: 1, original: undefined, density: undefined, + price:undefined } formRef.value?.resetFields() } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue index f4e325a6..6c563a23 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue @@ -198,11 +198,12 @@ + @@ -221,7 +222,7 @@ - + @@ -289,7 +290,7 @@ @@ -330,7 +331,7 @@ - + 上传 @@ -361,7 +362,7 @@ @@ -423,7 +424,7 @@ import PriceDigind from '@/views/heli/PriceQuoteRecord/priceDigind.vue' import { getProjectOrder, - getProjectOrderSubListByProjectOrderId, + getProjectOrderSubListByProjectOrderId, getProjectOrderSubListByProjectOrderIdGt, ProjectOrderVO } from '@/api/heli/projectorder' import { getCustomer } from '@/api/heli/customer' @@ -580,11 +581,11 @@ const pingt = () => { for (var a = 0; a < formData.value.deliverOrderSubs.length; a++) { if (formData.value.deliverOrderSubs.length === a + 1) { let remainingCost = new Big(formData.value.transportFreightCost).minus(sumMoney); - formData.value.deliverOrderSubs[a].yunFei = remainingCost; + formData.value.deliverOrderSubs[a].yunFei = remainingCost.toFixed(1); } else { let subYunFei = new Big(formData.value.transportFreightCost) .div(formData.value.deliverOrderSubs.length) - .toFixed(2); + .toFixed(1); formData.value.deliverOrderSubs[a].yunFei = subYunFei; sumMoney = sumMoney.plus(new Big(formData.value.deliverOrderSubs[a].yunFei)); } @@ -608,11 +609,11 @@ const weight = (numWeight: number) => { for (var a = 0; a < formData.value.deliverOrderSubs.length; a++) { if (formData.value.deliverOrderSubs.length === a + 1) { let remainingCost = new Big(formData.value.transportFreightCost).minus(sumMoney); - formData.value.deliverOrderSubs[a].yunFei = remainingCost; + formData.value.deliverOrderSubs[a].yunFei = remainingCost.toFixed(1); } else { let subYunFei = new Big(formData.value.transportFreightCost) .times(new Big(formData.value.deliverOrderSubs[a].weight).div(numWeight)) - .toFixed(2); + .toFixed(1); formData.value.deliverOrderSubs[a].yunFei = subYunFei; sumMoney = sumMoney.plus(new Big(formData.value.deliverOrderSubs[a].yunFei)); } @@ -640,7 +641,12 @@ const submitForm = async (operate) => { if (active.value != 'create') { await subFormRef.value.validate() await otherSubFormRef.value.validate() + if (formData.value.transportFreightCost==null||formData.value.transportFreightCost==''){ + message.error("运费成本不能为空,请确认") + return + } } + // 提交请求 formLoading.value = true try { @@ -814,19 +820,20 @@ const before = (rawFile) => { const refreshAttachments = (files, type) => { formData.value.attachments = formData.value.attachments.filter((value) => value.id) - + console.log(formData.value.attachments) // 避免重复添加 const newFiles = files.filter( (file) => !formData.value.attachments.some((att) => att.name === file.name) ) - + console.log(files) + console.log(newFiles) for (let i = 0; i < newFiles.length; i++) { let file = newFiles[i] file.businessFileType = type file.createTime = new Date() formData.value.attachments.push(file) } - + console.log(formData.value.attachments) // 排序 formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime) // 文件上传一遍 上传总数等于要上传文件时 刷新页面 @@ -926,14 +933,14 @@ const queryData = async (type: string, id?: number) => { formData.value.deliverOrderSubs = [] let saleOrderIdArr = formData.value.saleOrderIds.split(',') for (let i = 0; i < saleOrderIdArr.length; i++) { - var subList = await getProjectOrderSubListByProjectOrderId(saleOrderIdArr[i]); + var subList = await getProjectOrderSubListByProjectOrderIdGt(saleOrderIdArr[i]); subList.forEach((sub)=>{ sub.saleOrderId = saleOrderIdArr[i]; sub.remark = '' sub.saleOrderSubId = sub.id sub.id = '' sub.saleOrderCode = sub.projectOrderCode - sub.amount = sub.amount - sub.deliverAmount + sub.amount = sub.remAmount; }) formData.value.deliverOrderSubs = formData.value.deliverOrderSubs.concat( subList @@ -1080,12 +1087,14 @@ const initDeliverData = async (projectOrderId) => { ) formData.value.deliverOrderSubs.forEach((sub) => { sub.remark = '' + sub.saleOrderId = sub.projectOrderId; sub.saleOrderSubId = sub.id sub.id = '' sub.saleOrderCode = sub.projectOrderCode - sub.amounts = sub.amount - sub.deliverAmount + const originalRemAmount = sub.remAmount; // ✅ 显式保存原始值 + sub.amount = originalRemAmount; }) - + formData.value.deliverOrderSubs = formData.value.deliverOrderSubs.filter(sub => sub.amount > 0); await initCustomerInfo() } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/index.vue index 944fe975..1e07b2bc 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/index.vue @@ -144,10 +144,9 @@ @@ -79,7 +88,7 @@ @@ -104,7 +113,7 @@ - + + @@ -87,7 +92,7 @@ @@ -104,7 +109,7 @@ - + @@ -135,17 +140,20 @@ import { useCommonStateWithOut } from '@/store/modules/common' import UserSelect from "@/views/heli/materialplan/userSelectNew.vue"; import {inject, ref} from "vue"; import * as UserApi from "@/api/system/user"; +import {ElTable} from "element-plus"; const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 defineOptions({ name: 'standard' }) const reload: any = inject('reload') const commonStore = useCommonStateWithOut() const message = useMessage() // 消息弹窗 +const multipleTable = ref>() const { t } = useI18n() // 国际化 const router = useRouter() const loading = ref(true) // 列表的加载中 const list = ref([]) // 列表的数据 const total = ref(0) // 列表的总页数 +const flag = ref(true) // 列表的加载中 const queryParams = reactive({ pageNo: 1, pageSize: 10, @@ -192,7 +200,58 @@ const handleExportDetail = async () => { exportLoading.value = false } } +const change =(row:any)=>{ + if (flag.value) { + var bomDetails = list.value; + if (row.chkboxEnable) { + for (let i = 0; i < bomDetails.length; i++) { + if (bomDetails[i].chkboxEnable) { + bomDetails[i].duEmpId = row.duEmpId + } + } + } + } +} +const change1 =(row:any)=>{ + if (flag.value) { + var bomDetails = list.value; + if (row.chkboxEnable) { + for (let i = 0; i < bomDetails.length; i++) { + if (bomDetails[i].chkboxEnable) { + + bomDetails[i].boomArriveDate = row.boomArriveDate + + } + } + } + } +} +const handleSelectionChange = (val) => { + // multipleTable.value.clearSelection() + multipleTable.value=val + var bomDetails = list.value; + if (val.length==0) { + for (let i = 0; i < bomDetails.length; i++) { + bomDetails[i].chkboxEnable=false + } + }else if (val.length== bomDetails.length) { + for (let i = 0; i < bomDetails.length; i++) { + bomDetails[i].chkboxEnable=true + } + }else { + for (let i = 0; i < bomDetails.length; i++) { + for (let j = 0; j < val.length; j++) { + if (val[j].id==bomDetails[i].id){ + bomDetails[i].chkboxEnable=true + break + }else { + bomDetails[i].chkboxEnable=false + } + } + } + } +} /** 搜索按钮操作 */ const handleQuery = () => { queryParams.pageNo = 1 @@ -202,8 +261,10 @@ const handleSelectedUser = (currentIndex, newValue: any) => { list.value[currentIndex].duEmpId = newValue?.id } const submitForm = async () => { - const filteredList = list.value.filter(item => item.duEmpId !== null && item.duEmpId !== undefined); - if (filteredList.length <= 0) { + + const filteredList = multipleTable.value|| []; // 安全获取数据 + // 1. 检查空数据 + if (!filteredList || filteredList.length==null) { message.error("提交明细不能为空,请确认"); return; } @@ -285,5 +346,10 @@ onMounted(async () => { }) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue index 9a0bea80..e37ff8bd 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue @@ -63,6 +63,10 @@
标准件明细 送 审 去库存 + @@ -110,13 +114,13 @@ size="large" clearable filterable - + @change="change(scope.row)" style="width: 165 px" >
@@ -139,7 +143,7 @@
@@ -190,6 +194,7 @@ const matLogRef = ref() const loading = ref(true) // 列表的加载中 const list = ref([]) // 列表的数据 const total = ref(0) // 列表的总页数 +const flag = ref(true) // 列表的加载中 const queryParams = reactive({ pageNo: 1, pageSize: 10, @@ -244,6 +249,53 @@ const getRowKeys=(row)=>{ const handleSelectionChange = (selection) => { ids.value = selection; + + var bomDetails = list.value; + if (selection.length==0) { + for (let i = 0; i < bomDetails.length; i++) { + bomDetails[i].chkboxEnable=false + } + }else if (selection.length== bomDetails.length) { + for (let i = 0; i < bomDetails.length; i++) { + bomDetails[i].chkboxEnable=true + } + }else { + for (let i = 0; i < bomDetails.length; i++) { + for (let j = 0; j < row.length; j++) { + if (val[j].id==bomDetails[i].id){ + bomDetails[i].chkboxEnable=true + break + }else { + bomDetails[i].chkboxEnable=false + } + } + } + } +} +const change =(row:any)=>{ + if (flag.value) { + var bomDetails = list.value; + if (row.chkboxEnable) { + for (let i = 0; i < bomDetails.length; i++) { + if (bomDetails[i].chkboxEnable) { + bomDetails[i].supplierId = row.supplierId + } + } + } + } + +} +const change1 =(row:any)=>{ + if (flag.value) { + var bomDetails = list.value; + if (row.chkboxEnable) { + for (let i = 0; i < bomDetails.length; i++) { + if (bomDetails[i].chkboxEnable) { + bomDetails[i].arriveTime = row.arriveTime + } + } + } + } } const clearItem = (e) =>{ multipleTable.value.clearSelection(); @@ -513,5 +565,10 @@ onMounted( async() => { }) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue index e9c9ae77..24437c51 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue @@ -20,6 +20,7 @@ 重置 +
@@ -70,12 +71,14 @@ + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue index aadb15e2..68e761f1 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue @@ -32,6 +32,9 @@ + + + 搜索 @@ -57,6 +60,11 @@ @@ -69,19 +77,19 @@ - - - - - - - + + + + + + + + + + + + + - + - diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/auditdetail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/auditdetail.vue index e0fc5e0b..73014aa9 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/auditdetail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/auditdetail.vue @@ -106,7 +106,7 @@ - + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/detail.vue index c92e2317..9f8431d4 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/detail.vue @@ -662,10 +662,9 @@ import { dateFormatter, formatDate } from '@/utils/formatTime' import { useUserStore } from '@/store/modules/user' import { useTagsViewStore } from '@/store/modules/tagsView' import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue' -import CompositionSelect from '@/views/heli/hlvuestyle/compositionSelect.vue' -import SupplierSelect from '@/views/heli/hlvuestyle/supplierSelect.vue' +import SupplierSelect from './supplierSelect.vue' import * as PurchaseOrderNoApi from "@/api/heli/purchaseorderno"; import * as PurchaseOrderNoDetailApi from "@/api/heli/purchaseordernodetail"; const reload: any = inject('reload') diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/edit.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/edit.vue index 3e33fcfb..e2f3ce1a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/edit.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/edit.vue @@ -676,7 +676,7 @@ import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue' import materials from '@/views/heli/storage/materials.vue' import MaterialDialog from '@/views/heli/purchaseorder/materialDialog.vue' import BoomDialog from '@/views/heli/purchaseorder/boomDialog.vue' -import SupplierSelect from '@/views/heli/hlvuestyle/supplierSelect.vue' +import SupplierSelect from './supplierSelect.vue' const reload: any = inject('reload') const { t } = useI18n() // 国际化 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/supplierSelect.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/supplierSelect.vue new file mode 100644 index 00000000..31db45f1 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/supplierSelect.vue @@ -0,0 +1,119 @@ + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/index.vue index 54d4a6d3..b3a6e937 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseordermake/index.vue @@ -18,7 +18,7 @@ - + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/detail.vue index 45ae285d..361dff27 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/detail.vue @@ -63,11 +63,19 @@ + + + + - + @@ -101,7 +109,7 @@
订单编号:{{ printData.purchaseNo }} - 订单日期:{{ formatDate(printData.ordDate) }} + 订单日期:{{ formatDate(printData.ordDate) }} 供应商:{{ printData.supplierName }}
@@ -113,17 +121,17 @@
-+-+---+++++-- @@ -193,24 +201,12 @@ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/workrecord/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/workrecord/index.vue new file mode 100644 index 00000000..0635fe21 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/workrecord/index.vue @@ -0,0 +1,232 @@ + + + diff --git a/mes-ui/mini-app/src/pages/approveOrder/approveOrder-detail.vue b/mes-ui/mini-app/src/pages/approveOrder/approveOrder-detail.vue index e81f13ea..298fbf70 100644 --- a/mes-ui/mini-app/src/pages/approveOrder/approveOrder-detail.vue +++ b/mes-ui/mini-app/src/pages/approveOrder/approveOrder-detail.vue @@ -198,7 +198,7 @@ const openReport = (url: any) => { }) } - + // 下载 const showFile = ref(false) @@ -213,7 +213,7 @@ const handleDownload = (pdfUrl: any) => { url: './components/showFileWx?fileUrl=' + encodeURIComponent(Base64.encode(pdfUrl)) }); //#endif - + // showFile.value = true; // if (pdfUrl) { // switch (uni.getSystemInfoSync().platform) { @@ -276,13 +276,13 @@ const handleDownload = (pdfUrl: any) => { - 序号 - 子项目名称 - 设备型号 - 数量 - 单位 - 材质 - 备注 + 序号 + 子项目名称 + 设备型号 + 数量 + 单位 + 材质 + 备注 {{ index + 1 }} @@ -303,7 +303,7 @@ const handleDownload = (pdfUrl: any) => { 文件名称 文件类型 上传日期 - 操作 + 操作 {{ item.name }} @@ -320,8 +320,8 @@ const handleDownload = (pdfUrl: any) => { - 操作 - 操作人 + 操作 + 操作人 操作时间 操作意见 diff --git a/mes-ui/mini-app/src/pages/assembleReport/assembleReport-detail.vue b/mes-ui/mini-app/src/pages/assembleReport/assembleReport-detail.vue index e0a8d19a..3de8e6bb 100644 --- a/mes-ui/mini-app/src/pages/assembleReport/assembleReport-detail.vue +++ b/mes-ui/mini-app/src/pages/assembleReport/assembleReport-detail.vue @@ -13,6 +13,7 @@ const isShowStart = ref(false) const isShowEnd = ref(false) + // const isShowStart = computed(() => { // let flag = true // if (historyList.value.length) { @@ -219,6 +220,20 @@ if (historyList.value.length) { // url, // }) } + const cancel = () => { + isLoading.value = false; + const pages = getCurrentPages(); // 获取当前页面栈 + if (pages.length>1){ + uni.navigateBack({ + delta: 1 // 返回的页面数,这里1表示返回上一页 + }); + }else { + const url = `/pages/assembleReport/assembleReport` + uni.redirectTo({ + url, + }) + } + } // 结束生产 const handleStop = async () => { const params = { @@ -317,10 +332,14 @@ if (historyList.value.length) { - 开始生产 + 取消 + 开始生产 结束生产 + + 取消 + 加载中.. @@ -589,7 +608,9 @@ if (historyList.value.length) { width: 272rpx; height: 86rpx; border-radius: 24rpx; - + &.info { + background: linear-gradient(157deg, #A9A9A9 -3%, #A9A9A9 90%); + } &.start { background: linear-gradient(157deg, #2EACE6 -3%, #356899 90%); } diff --git a/mes-ui/mini-app/src/pages/cgdsp/cgdsp-detail.vue b/mes-ui/mini-app/src/pages/cgdsp/cgdsp-detail.vue index 170ca833..6a288b88 100644 --- a/mes-ui/mini-app/src/pages/cgdsp/cgdsp-detail.vue +++ b/mes-ui/mini-app/src/pages/cgdsp/cgdsp-detail.vue @@ -209,17 +209,17 @@ const handleDownload = (pdfUrl: any) => { - 序号 - 项目名称 - 物料名称 - 工序 - 采购数量 + 序号 + 项目名称 + 物料名称 + 工序 + 采购数量 供应商 需要完成日期 预计到货日期 - 预估总价 + 预估总价 技术要求 - 理论重量(吨) + 理论重量(吨) @@ -264,9 +264,9 @@ const handleDownload = (pdfUrl: any) => { - 操作 - 操作人 - 操作时间 + 操作 + 操作人 + 操作时间 {{ item.operation }} diff --git a/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue b/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue index 07857947..2c10a06d 100644 --- a/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue +++ b/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue @@ -176,7 +176,7 @@ return } } - if (amount.value > 0 && workTime.value > 0) { + if (amount.value >=0 && workTime.value > 0) { var data = await validExceed(idValue.value, parseFloat(amount.value)) if (data) { @@ -207,7 +207,7 @@ const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; uni.reLaunch({ url }); // 重新加载当前页面 } - + } }, @@ -234,13 +234,19 @@ } - } else { + } else if (amount.value <0){ uni.showToast({ - title: '报工数量或报工时间必须大于0,请检查!', + title: '报工数量不能小于0,请检查!', icon: 'none', // 显示纯文本时icon设为none duraltion: 2000 }); - } + }else { + uni.showToast({ + title: '报工时间必须大于0,请检查!', + icon: 'none', // 显示纯文本时icon设为none + duraltion: 2000 + }); + } } catch (error) { uni.showToast({ icon: 'none', @@ -461,6 +467,21 @@ url: './components/showpicture?picture=' + encodeURIComponent(picture) }); } + const cancel = () => { + isLoading.value = false; + + const pages = getCurrentPages(); // 获取当前页面栈 + if (pages.length>1){ + uni.navigateBack({ + delta: 1 // 返回的页面数,这里1表示返回上一页 + }); + }else { + const url = `/pages/pgMaster/pgMaster` + uni.redirectTo({ + url, + }) + } + } const detailId = ref() 加载中.. @@ -857,7 +883,9 @@ width: 272rpx; height: 86rpx; border-radius: 24rpx; - + &.info { + background: linear-gradient(157deg, #A9A9A9 -3%, #A9A9A9 90%); + } &.start { background: linear-gradient(157deg, #2EACE6 -3%, #356899 90%); } @@ -957,4 +985,4 @@ } } } - \ No newline at end of file + diff --git a/mes-ui/mini-app/src/pages/productionReport/productionReport-detail.vue b/mes-ui/mini-app/src/pages/productionReport/productionReport-detail.vue index b27107e8..29daa670 100644 --- a/mes-ui/mini-app/src/pages/productionReport/productionReport-detail.vue +++ b/mes-ui/mini-app/src/pages/productionReport/productionReport-detail.vue @@ -11,7 +11,10 @@ const userId = userStore.userInfo.userId const isShowStart = ref(false) - const isShowEnd = ref(false) + const isCancel = ref(true) + + + const isShowEnd = ref(false) // const isShowStart = computed(() => { // let flag = true // if (historyList.value.length) { @@ -216,7 +219,23 @@ } const popupShow = ref(false) const productionTitle = ref('开始生产') - // 结束生产 + const cancel = () => { + isLoading.value = false; + const pages = getCurrentPages(); // 获取当前页面栈 + if (pages.length>1){ + uni.navigateBack({ + delta: 1 // 返回的页面数,这里1表示返回上一页 + }); + }else { + const url = `/pages/productionReport/productionReport` + uni.redirectTo({ + url, + }) + } + + } + + // 结束生产 const handleStop = async () => { const params = { id: detailInfo.value?.id, @@ -317,11 +336,18 @@ - - 开始生产 + + + 取消 + 开始生产 结束生产 - + + 取消 + + + + 加载中.. @@ -590,7 +616,9 @@ width: 272rpx; height: 86rpx; border-radius: 24rpx; - + &.info { + background: linear-gradient(157deg, #A9A9A9 -3%, #A9A9A9 90%); + } &.start { background: linear-gradient(157deg, #2EACE6 -3%, #356899 90%); } diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue index f8839f2a..9f8aec7a 100644 --- a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue @@ -182,17 +182,19 @@ const submitForm = async () => { }) } finally { isLoading.value = false; + uni.navigateBack({ + delta: 1 // 返回的页面数,这里1表示返回上一页 + }); - const url = `/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm` - uni.redirectTo({ - url, - }) // const pages = getCurrentPages(); // 获取当前页面栈 // await initPage(); // const currentPage = pages[pages.length - 1]; // 当前页面 // const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; // uni.reLaunch({ url }); // 重新加载当前页面 - + // const url = `/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm` + // uni.navigateTo({ + // url, + // }) } diff --git a/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue b/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue index f1f94a3f..0a586983 100644 --- a/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue +++ b/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue @@ -170,7 +170,7 @@ return } } - if (amount.value > 0 && workTime.value > 0) { + if (amount.value >= 0 && workTime.value > 0) { var data = await validExceed(idValue.value, parseFloat(amount.value)) if (data) { @@ -199,7 +199,7 @@ const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; uni.reLaunch({ url }); // 重新加载当前页面 } - + } }, @@ -226,9 +226,15 @@ } - } else { + } else if(amount.value <0) { + uni.showToast({ + title: '报工数量必须大于等于0,请检查!', + icon: 'none', // 显示纯文本时icon设为none + duraltion: 2000 + }); + }else { uni.showToast({ - title: '报工数量或报工时间必须大于0,请检查!', + title: '报工时间必须大于0,请检查!', icon: 'none', // 显示纯文本时icon设为none duraltion: 2000 }); @@ -411,7 +417,7 @@ title: '提交失败!', icon: 'none', // 显示纯文本时icon设为none duration: 2000 - }); + }) }, complete: () => { uni.hideLoading(); @@ -434,6 +440,21 @@ url: './components/showpicture?picture=' + encodeURIComponent(picture) }); } + const cancel = () => { + isLoading.value = false; + const pages = getCurrentPages(); // 获取当前页面栈 + if (pages.length>1){ + uni.navigateBack({ + delta: 1 // 返回的页面数,这里1表示返回上一页 + }); + }else { + const url = `/pages/zjPgMaster/zjPgMaster` + uni.redirectTo({ + url, + }) + } + + } const detailId = ref() 加载中.. @@ -827,7 +852,9 @@ width: 272rpx; height: 86rpx; border-radius: 24rpx; - + &.info { + background: linear-gradient(157deg, #A9A9A9 -3%, #A9A9A9 90%); + } &.start { background: linear-gradient(157deg, #2EACE6 -3%, #356899 90%); } diff --git a/mes-ui/mini-app/src/services/constants.ts b/mes-ui/mini-app/src/services/constants.ts index b2c71401..5415a464 100644 --- a/mes-ui/mini-app/src/services/constants.ts +++ b/mes-ui/mini-app/src/services/constants.ts @@ -6,8 +6,8 @@ * @FilePath: /hl-app/src/services/constants.ts * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ -export const serviceDomain = 'https://nxhs.cjyx.cc' +// export const serviceDomain = 'https://nxhs.cjyx.cc' // export const serviceDomain = 'https://star.hz-hl.com' // export const serviceDomain = 'http://222.71.165.187:9010' // export const serviceDomain = 'http://localhost:8080' -// export const serviceDomain = 'https://nxhs.cjyx.cc' +export const serviceDomain = 'https://nxhs.cjyx.cc' diff --git a/mes-ui/mini-app/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/mes-ui/mini-app/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue index dba98879..e685118f 100644 --- a/mes-ui/mini-app/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue +++ b/mes-ui/mini-app/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -77,7 +77,8 @@ // font-family: Lato-Bold, Lato; font-weight: bold; color: darken($color: $uni-primary, $amount: 40%); - } + + } .uni-calendar-item__weeks-box-item { position: relative;