diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessImport.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessImport.java index 1b077ef65..aef9737a3 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessImport.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessImport.java @@ -1,6 +1,7 @@ package org.springblade.desk.oem.pojo.excel; import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; @@ -26,6 +27,13 @@ public class OemProcessImport extends BaseEntity { @ExcelProperty(index = 1) private String caCodes; + /** + * 是否手动结算:0否(自动结算),1是(手动结算) + */ + @ExcelProperty(index = 2) + private String manualStr; + private Long processId; private String craftIds; + private String manual; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/PriceSheetExcel.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/PriceSheetExcel.java new file mode 100644 index 000000000..3bff26eb9 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/PriceSheetExcel.java @@ -0,0 +1,183 @@ +package org.springblade.desk.oem.pojo.excel; + + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + + +/** + * 报价单 Excel实体类 + * + * @author qyl + * @since 2026年3月12日 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class PriceSheetExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 厂家代码 + */ + @ColumnWidth(20) + @ExcelProperty("厂家代码") + private String splycode; + + /** + * 厂家名称 + */ + @ColumnWidth(20) + @ExcelProperty("厂家名称") + private String splyname; + + /** + * 物料号 + */ + @ColumnWidth(20) + @ExcelProperty("物料号") + private String prtno; + + /** + * 物料名称 + */ + @ColumnWidth(20) + @ExcelProperty("物料名称") + private String prtdesc; + + /** + * 生产标识 + */ + @ColumnWidth(20) + @ExcelProperty("生产标识") + private String prtlotno; + + /** + * 工序内容 + */ + @ColumnWidth(20) + @ExcelProperty("工序内容") + private String gxinfo; + + /** + * 阶梯价标识 + */ + @ColumnWidth(20) + @ExcelProperty("阶梯价标识") + private String stairflag; + + /** + * 阶梯上限 + */ + @ColumnWidth(20) + @ExcelProperty("阶梯上限") + private String lower; + + /** + * 阶梯下限 + */ + @ColumnWidth(20) + @ExcelProperty("阶梯下限") + private String upper; + + /** + * 不含税价格 + */ + @ColumnWidth(20) + @ExcelProperty("不含税价格") + private String price; + + /** + * 计量单位 + */ + @ColumnWidth(20) + @ExcelProperty("计量单位") + private String prtum; + + /** + * 工作订单号 + */ + @ColumnWidth(20) + @ExcelProperty("工作订单号") + private String wono; + + /** + * 生效日期 + */ + @ColumnWidth(20) + @ExcelProperty("生效日期") + private String startdat; + + /** + * 有效日期 + */ + @ColumnWidth(20) + @ExcelProperty("有效日期") + private String validdat; + + /** + * 备注 + */ + @ColumnWidth(20) + @ExcelProperty("备注") + private String remark; + + /** + * 报价单号 + */ + @ColumnWidth(20) + @ExcelProperty("报价单号") + private String seqid; + + /** + * 制单人 + */ + @ColumnWidth(20) + @ExcelProperty("制单人") + private String inputman; + + /** + * 制单时间 + */ + @ColumnWidth(20) + @ExcelProperty("制单时间") + private String inputdat; + + /** + * 价格类型 + */ + @ColumnWidth(20) + @ExcelProperty("价格类型") + private String pricetype; + + /** + * 报价单状态 + */ + @ColumnWidth(20) + @ExcelProperty("报价单状态") + private String validflag; + /** + * 镀种描述 + */ + @ColumnWidth(20) + @ExcelProperty("镀种描述") + private String coating_desc; + /** + * 阶梯价计量单位 + */ + @ColumnWidth(20) + @ExcelProperty("阶梯价计量单位") + private String stairunit; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemApprovalQuery.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemApprovalQuery.java index ca4bb63d7..81931c61d 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemApprovalQuery.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemApprovalQuery.java @@ -16,7 +16,7 @@ public class OemApprovalQuery { /** * 审核状态 */ - @Schema(description = "审核状态(字符串1,2,3)") + @Schema(description = "审核状态,字符串2,3(2-待审批,3-不通过,4-通过)") private String approvalStatus; /** * 车间订单号 diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemOrderQuery.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemOrderQuery.java index c6a5a5a89..85fe5fcb6 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemOrderQuery.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemOrderQuery.java @@ -2,11 +2,9 @@ package org.springblade.desk.oem.pojo.request; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springblade.desk.util.date.DateUtils; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; -import java.util.Date; /** * 外协订单检索请求入参 @@ -17,8 +15,13 @@ public class OemOrderQuery { /** * 订单状态 */ - @Schema(description = "订单状态") + @Schema(description = "订单状态集合,传1,2,3") private String orderStatus; + /** + * 外协状态 + */ + @Schema(description = "外协状态集合,传1,2,3(外协状态(1-待外协、2-外协中、3-已完成))") + private String oemStatusList; /** * 订单单号 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkPlanDto.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkPlanDto.java index 43c36a50d..8aa735096 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkPlanDto.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkPlanDto.java @@ -1,10 +1,12 @@ package org.springblade.desk.produce.pojo.dto; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; import lombok.Data; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkPlan; +import org.springblade.desk.produce.pojo.enums.WorkOrderEnum; import java.io.Serializable; import java.util.Date; @@ -15,151 +17,154 @@ import java.util.Date; * @author lyj * @date 2022-11-01 10:16 */ -@Builder @Data public class WorkPlanDto implements Serializable { - /** - * 下级B号 - */ + @Schema(description = "下级B号") private String nextRoam; - /** - * 生产单号 - */ + + @Schema(description = "生产单号") private String yoCode; - /** - * 计划单号 - */ + + @Schema(description = "计划单号") private String poCode; - /** - * 零件号 - */ + + @Schema(description = "零件号") private String partCode; - /** - * 产品型号 - */ + + @Schema(description = "产品型号") private String productType; - /** - * 名称 - */ + + @Schema(description = "名称") private String partName; - /** - * 镀种 - */ + + @Schema(description = "镀种") private String plate; - /** - * 生产标识 - */ + + @Schema(description = "生产标识") private String prodIdent; - /** - * 使用部门 - */ + + @Schema(description = "使用部门") private String useDept; - /** - * 面积(㎡) - */ + + @Schema(description = "面积(㎡)") private Double poArea; - /** - * 需求交期 - */ + + @Schema(description = "需求交期") private Date demandDate; - /** - * 计划员 - */ + + @Schema(description = "计划员") private String planUser; - /** - * 计划下达时间 - */ + + @Schema(description = "下级B号") private Date releaseDate; - /** - * 一级工艺线路 - */ + + @Schema(description = "一级工艺线路") private String primaryCraft; - /** - * 路线卡号 - */ + @Schema(description = "路线卡号") private String cardNo; - /** - * 批次号 - */ + + @Schema(description = "批次号") private String batchNo; - /** - * 订单编号 - */ + + @Schema(description = "订单编号") private String woCode; - /** - * 加工数量 - */ + + @Schema(description = "加工数量") private Double makeQty; - /** - * 未报工数量 - */ + + @Schema(description = "未报工数量") private Double notWorkQty; - /** - * 已报工数量 - */ + + @Schema(description = "已报工数量") private Double workQty; - /** - * 报废 - */ + + @Schema(description = "报废") private Double scrapQty; - /** - * 计划完工日期 - */ - private Date planEndDate; - /** - * 已入库数量 - */ + + @Schema(description = "计划完工日期") + private String planEndDate; + + @Schema(description = "计划开始日期") + private String planStartDate; + + @Schema(description = "已入库数量") private Double inventoryQty; - /** - * 已入库数量 - */ + + @Schema(description = "已入库数量") private Double notInQty; - /** - * 运行状态 - */ + + @Schema(description = "运行状态") public String runStatusTitle; - /** - * 工序状态 - */ - public Short status; - /** - * 优先级 - */ + + @Schema(description = "工序状态") + public Integer status; + + @Schema(description = "优先级") public String priorityTitle; - /** - * 领料状态 - */ + + @Schema(description = "领料状态") public String pickingStatusTitle; - /** - * 是否绑定挂次号 - */ + + @Schema(description = "是否绑定挂次号") public Boolean isBinging; - /** - * 当前工序 - */ + @Schema(description = "当前工序") public Long currentWpId; public Long wpId; + + @Schema(description = "当前工序内容") public String currentWpTitle; + + @Schema(description = "当前工序班组") public String currentMakeTeam; - /** - * 上序 - */ + @Schema(description = "上序内容") public String frontWpTitle; + + @Schema(description = "上序班组") public String frontMakeTeam; - /** - * 下序 - */ - public String nextWpTitle; - public String nextMakeTeam; - private YieldOrder yieldOrder; + @Schema(description = "下序内容") + public String nextWpTitle; - private WorkOrder workOrder; + @Schema(description = "下序班组") + public String nextMakeTeam; - private WorkPlan workPlan; + public WorkPlanDto(YieldOrder yo, WorkOrder wo, WorkPlan currentWP,Boolean isBinging) { + this.nextRoam = yo.getRoamNoNext(); + this.yoCode = yo.getYoCode(); + this.poCode = yo.getYpCode(); + this.partCode = yo.getPartCode(); + this.productType = yo.getProductType(); + this.partName = yo.getPartName(); + this.plate = yo.getPlate(); + this.prodIdent = yo.getProductIdent(); + this.useDept = yo.getUseDept(); + this.poArea = yo.getYpArea(); + this.demandDate = yo.getDemandDate(); + this.planUser = yo.getPlanUser(); + this.releaseDate = yo.getReleaseDate(); + this.primaryCraft = yo.getPrimaryCraft(); + this.cardNo = wo.getCardNo(); + this.batchNo = wo.getBatchNo(); + this.woCode = wo.getWoCode(); + this.makeQty = currentWP.getQualifiedQty(); + this.notWorkQty = currentWP.getQualifiedQty() - currentWP.getWorkQty() - currentWP.getScrapQty(); + this.workQty = currentWP.getWorkQty(); + this.scrapQty = currentWP.getScrapQty(); + this.planStartDate = wo.getPlanStartDate(); + this.planEndDate = wo.getPlanEndDate(); + this.inventoryQty = wo.getInventoryQty(); + this.notInQty = wo.getMakeQty() - wo.getInventoryQty(); + this.runStatusTitle = WorkOrderEnum.getName(wo.getRunStatus()); + this.priorityTitle = WorkOrder.priorityMap.get(wo.getPriority()); + this.pickingStatusTitle = WorkOrder.pickingStatusMap.get(wo.getPickingStatus()); + this.isBinging = isBinging; + this.currentWpId = currentWP.getId(); + this.wpId = currentWP.getId(); + this.status = currentWP.getStatus(); + } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java index f57f01bd0..99fb3a7a7 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java @@ -25,6 +25,19 @@ public class WorkOrderRun extends BaseEntity { @Serial private static final long serialVersionUID = 1L; + /** + * 待外协 + */ + public static Short OEM_STATUS_TO = 1; + /** + * 外协中 + */ + public static Short OEM_STATUS_IN = 2; + /** + * 外协完成 + */ + public static Short OEM_STATUS_END = 3; + /** * 外协 */ @@ -75,8 +88,19 @@ public class WorkOrderRun extends BaseEntity { public String getRunStatusTitle() { return runStatusMap.get(runStatus); - } + } + + public static Map oemStatusMap = new HashMap<>(4); + static { + oemStatusMap.put(OEM_STATUS_TO, "待外协"); + oemStatusMap.put(OEM_STATUS_IN, "外协中"); + oemStatusMap.put(OEM_STATUS_END, "外协完成"); + } + + public String getOemStatusTitle() { + return oemStatusMap.get(oemStatus); + } /** * 车间订单 */ @@ -171,5 +195,6 @@ public class WorkOrderRun extends BaseEntity { @Schema(description = "分批原因") private String batchReason; - + @Schema(description = "外协状态(1-待外协、2-外协中、3-已完成)") + private Short oemStatus; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java index a8b876398..095b957c8 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java @@ -1,10 +1,12 @@ package org.springblade.desk.produce.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.desk.produce.pojo.entity.MakeRec; import java.io.Serial; +import java.util.Date; /** * 加工记录 视图实体类 @@ -13,9 +15,86 @@ import java.io.Serial; * @since 2026-02-04 */ @Data -@EqualsAndHashCode(callSuper = true) -public class MesMakeRecVO extends MakeRec { - @Serial - private static final long serialVersionUID = 1L; +public class MesMakeRecVO { + @Schema(description = "报工记录ID") + private Long mrId; + + @Schema(description = "报工时间") + private Date makeTime; + + @Schema(description = "加工数量") + private Double workQty; + + @Schema(description = "报废数量") + private Double scrapQty; + + @Schema(description = "报工人") + private Long worker; + + @Schema(description = "报工人姓名") + private String workerName; + + @Schema(description = "本序ID") + private Long ppsId; + + @Schema(description = "本序名称") + private String ppsName; + + @Schema(description = "本序加工班组") + private Long makeTeam; + + @Schema(description = "本序加工班组") + private String makeTeamName; + + @Schema(description = "上序ID") + private Long frontPpsId; + + @Schema(description = "上序名称") + private String frontPpsName; + + @Schema(description = "上序加工班组") + private Long frontMakeTeam; + + @Schema(description = "上序加工班组") + private String frontMakeTeamName; + + @Schema(description = "下序ID") + private Long nextPpsId; + + @Schema(description = "下序名称") + private String nextPpsName; + + @Schema(description = "下序加工班组") + private Long nextMakeTeam; + + @Schema(description = "下序加工班组") + private String nextMakeTeamName; + + @Schema(description = "车间订单号") + private String woCode; + + @Schema(description = "流程卡号") + private String cardNo; + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "零件名称") + private String partName; + + @Schema(description = "产品型号") + private String productType; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "镀种") + private String plate; + + @Schema(description = "生产标识") + private String productIdent; + + @Schema(description = "面积(㎡)") + private Double ypArea; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetErpSearch.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetErpSearch.java index 9249d360b..aa5bd9cec 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetErpSearch.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetErpSearch.java @@ -16,6 +16,8 @@ public class ReviewSheetErpSearch extends ReviewSheet { @Schema(description = "责任零件") private String dutyPart; + @Schema(description = "责任批号") + private String dutyBatNo; private String createTimeStart; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRedoScrapVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRedoScrapVO.java index 9a9c18e05..9b0b52851 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRedoScrapVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRedoScrapVO.java @@ -26,4 +26,6 @@ public class ReviewSheetRedoScrapVO extends ReviewSheet { private String priceBeforePlate; @Schema(description = "物料名称") private String partName; + @Schema(description = "物料号") + private String partCode; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/CertificateMaintenanceMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/CertificateMaintenanceMapper.xml index 46f4aac49..357d7700f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/CertificateMaintenanceMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/CertificateMaintenanceMapper.xml @@ -130,7 +130,7 @@ ct.astronaut_validity_period as astronaut_validity_period FROM MES_POST_HANDLE ph LEFT JOIN BLADE_USER bu ON ph.USER_ID = bu.ID - LEFT JOIN BA_TEAM_SET bd ON ph.DEPT_ID = bd.ID + LEFT JOIN BS_TEAM_SET bd ON ph.DEPT_ID = bd.ID LEFT JOIN MES_CERTIFICATE_MAINTENANCE cm ON ph.id = cm.ph_id AND cm.is_deleted = 0 LEFT JOIN MES_CERTIFICATE_TYPE ct ON cm.certificate_id = ct.id AND ct.is_deleted = 0 WHERE ph.is_deleted = 0 and ph.staff_type != 1 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java index 689cf7787..116b51edf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java @@ -12,6 +12,8 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.apache.commons.lang3.time.DateFormatUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; @@ -22,6 +24,7 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.desk.basic.pojo.entity.Oem; import org.springblade.desk.basic.service.IOemService; import org.springblade.desk.oem.pojo.excel.OemOrderExcel; +import org.springblade.desk.oem.pojo.excel.PriceSheetExcel; import org.springblade.desk.oem.pojo.request.*; import org.springblade.desk.oem.pojo.vo.*; import org.springblade.desk.order.pojo.entity.YieldOrder; @@ -63,9 +66,6 @@ public class OemOrderController extends BladeController { @Autowired IYieldOrderService yieldOrderService; - @Autowired - IOemService oemService; - @Resource private IErpDataOemClient erpDataOemClient; @@ -218,19 +218,33 @@ public class OemOrderController extends BladeController { @ApiOperationSupport(order = 12) @Operation(summary = "领料单打印", description = "") public String printOemMaterialRequisition(@Valid @RequestBody MaterialRequisitionQuery materialRequisitionQuery, Query query) { - IPage pages = workOrderRunService.exportOemMaterialRequisition(Condition.getPage(query), materialRequisitionQuery); - Oem oem = oemService.getById(materialRequisitionQuery.getOcId()); - User user = UserCache.getUser(AuthUtil.getUser().getUserId()); - Map result = new HashMap<>(); - result.put("title", "外协计划明细"); - result.put("picture", ""); - result.put("printNo", ""); - result.put("printUser", user.getRealName()); - result.put("printDate", DateFormatUtils.format(new Date(), "yyyy-MM-dd")); - result.put("oemName", oem.getAbbreviation()); - result.put("data", pages.getRecords()); + Map result = workOrderRunService.printOemMaterialRequisition(Condition.getPage(query), materialRequisitionQuery); //todo:qyl打印后需更改相关车间订单信息,后续确认具体方案 return JSONObject.toJSONString(result); } + + /** + * 报价单导出 + * + * @param priceSheetQuery + * @param query + * @param response + */ + @GetMapping("/export-priceSheetData") + @ApiOperationSupport(order = 14) + @Operation(summary = "报价单导出数据", description = "") + public void exportPriceSheetData(PriceSheetQuery priceSheetQuery, Query query, HttpServletResponse response) { + query.setSize(99999); + R> pageR = erpDataOemClient.priceSheetData(priceSheetQuery, query); + Page data = pageR.getData(); + List list = data.getRecords(); + List excels = new ArrayList<>(); + for (PriceSheetVO priceSheetVO : list) { + PriceSheetExcel excel = new PriceSheetExcel(); + BeanUtils.copyProperties(priceSheetVO, excel); + excels.add(excel); + } + ExcelUtil.export(response, "报价单" + DateUtil.time(), "报价单", excels, PriceSheetExcel.class); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java index 03b3a4072..a87c4bec2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java @@ -20,6 +20,7 @@ import org.springblade.desk.oem.pojo.request.StatementQuery; import org.springblade.desk.oem.pojo.vo.OemMeritsVO; import org.springblade.desk.oem.pojo.vo.StatementVO; import org.springframework.beans.BeanUtils; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -31,6 +32,7 @@ import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.excel.util.ExcelUtil; +import java.time.LocalDate; import java.util.ArrayList; import java.util.Map; import java.util.List; @@ -118,16 +120,32 @@ public class OemStatementController extends BladeController { */ @PostMapping("/oemSettleAccounts") @ApiOperationSupport(order = 8) - @Operation(summary = "外协结算", description = "") + @Operation(summary = "外协手动结算", description = "") public R oemSettleAccounts(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) { return mesOemStatementService.oemSettleAccounts(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice(), oemSettleAccountsSave.getPutStoreDate()); } + /** + * 外协自动结算 + */ + @GetMapping("/autoSettlement") + @ApiOperationSupport(order = 9) + @Operation(summary = "外协自动结算", description = "") + public R autoSettlement( + @Parameter(description = "车间订单号", required = true) + @RequestParam String woCode, + + @Parameter(description = "镀后入库日期", required = true) // 添加必填备注 + @DateTimeFormat(pattern = "yyyy-MM-dd") + @RequestParam LocalDate date) { + return mesOemStatementService.autoSettlement(woCode, date); + } + /** * 外协预结算-预览 */ @PostMapping("/preSettlement") - @ApiOperationSupport(order = 8) + @ApiOperationSupport(order = 10) @Operation(summary = "外协预结算-预览", description = "") public R> preSettlement(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) { return R.data(mesOemStatementService.preSettlement(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice())); @@ -137,7 +155,7 @@ public class OemStatementController extends BladeController { * 外协结算批量审核 */ @PostMapping("/approval") - @ApiOperationSupport(order = 9) + @ApiOperationSupport(order = 11) @Operation(summary = "外协结算批量审核", description = "") public R approval(@Valid @RequestBody OemSettleAccountsApproval oemSettleAccountsApproval) { return mesOemStatementService.approval(oemSettleAccountsApproval); @@ -147,7 +165,7 @@ public class OemStatementController extends BladeController { * 外协结算无需结算 */ @PostMapping("/noSettlement") - @ApiOperationSupport(order = 10) + @ApiOperationSupport(order = 12) @Operation(summary = "外协结算无需结算", description = "") public R noSettlement(@RequestBody List list) { return mesOemStatementService.notNeedSettlement(list); @@ -157,7 +175,7 @@ public class OemStatementController extends BladeController { * 导出数据 */ @GetMapping("/export-mesOemStatement") - @ApiOperationSupport(order = 12) + @ApiOperationSupport(order = 13) @Operation(summary = "导出数据", description = "传入mesOemStatement") public void exportOemStatement(StatementQuery mesOemStatement, Query query, BladeUser bladeUser, HttpServletResponse response) { query.setSize(9999); @@ -176,7 +194,7 @@ public class OemStatementController extends BladeController { * 外协预结算导出数据 */ @PostMapping("/export-preSettlement") - @ApiOperationSupport(order = 13) + @ApiOperationSupport(order = 14) @Operation(summary = "外协预结算-导出", description = "传入mesOemStatement") public void exportPreSettlement(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave, BladeUser bladeUser, HttpServletResponse response) { List list = mesOemStatementService.preSettlement(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice()); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/PlatingTypeRulesController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/PlatingTypeRulesController.java index 183f4b57a..189e01052 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/PlatingTypeRulesController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/PlatingTypeRulesController.java @@ -11,6 +11,7 @@ import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.util.ExcelExtUtil; @@ -80,6 +81,7 @@ public class PlatingTypeRulesController extends BladeController { @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入mesPlatingTypeRules") public R save(@Valid @RequestBody PlatingTypeRulesEntity mesPlatingTypeRules) { + mesPlatingTypeRules.setCreateUser(AuthUtil.getUserId()); return R.status(mesPlatingTypeRulesService.save(mesPlatingTypeRules)); } @@ -100,6 +102,7 @@ public class PlatingTypeRulesController extends BladeController { @ApiOperationSupport(order = 6) @Operation(summary = "新增或修改", description = "传入mesPlatingTypeRules") public R submit(@Valid @RequestBody PlatingTypeRulesEntity mesPlatingTypeRules) { + mesPlatingTypeRules.setCreateUser(AuthUtil.getUserId()); return R.status(mesPlatingTypeRulesService.saveOrUpdate(mesPlatingTypeRules)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml index 966cfc782..bb03b7210 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml @@ -118,7 +118,7 @@ MAX( h.UPDATE_TIME) AS UPDATE_TIME, wm_concat(to_char(NVL(h.ROS_STATUS, 1))) AS ROS_STATUS, wm_concat(to_char(p.plate_code)) AS plate_code, - wm_concat(to_char(p.plate_goods_code)) AS plateGoodsCode, + wm_concat(to_char(p.plate_goods_code)) AS plate_goods_code, c.code as OC_CODE, a.HOUR_QUOTA, wm_concat(to_char(a.scrap_qty)) AS scrap_qty, diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java index 4c2a4ee96..45485a51b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java @@ -50,6 +50,15 @@ public interface IOemStatementService extends BaseService { */ R oemSettleAccounts(List statementVOS, BigDecimal price, LocalDate putStoreDate); + /** + * 外协自动结算 + * + * @param woCode 车间订单号 + * @param date 镀后入库日期 + * @return + */ + R autoSettlement(String woCode, LocalDate date); + /** * 预结算 * diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemMeritsServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemMeritsServiceImpl.java index 24157c937..f901ab937 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemMeritsServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemMeritsServiceImpl.java @@ -76,6 +76,8 @@ public class OemMeritsServiceImpl extends BaseServiceImpl 0) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java index be3d70f6a..a163a5f62 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java @@ -87,6 +87,7 @@ public class OemProcessServiceImpl extends BaseServiceImpl statementVOS, BigDecimal price, LocalDate putStoreDate) { + // 定义计数器 + AtomicInteger countSuccess = new AtomicInteger(0); + AtomicInteger countError = new AtomicInteger(0); //1.以外协厂商分组的Map<厂家名称, 待结算工序结算单列表> Map> oemAndStatementMap = statementVOS.stream().collect(Collectors.groupingBy(StatementVO::getOcName)); for (Map.Entry> listEntry : oemAndStatementMap.entrySet()) { @@ -73,72 +79,72 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetAllList = getPriceSheets(oemName, putStoreDate); + List priceSheetAllList = getPriceSheets(oemName, putStoreDate); //假数据测试用 - List priceSheetAllList = new ArrayList<>(); - PriceSheetVO priceSheet1 = new PriceSheetVO(); - priceSheet1.setPrice("60"); - priceSheet1.setSplyname(oemName); - priceSheet1.setPrtum("件"); - priceSheet1.setWono("WO-N2510424439-R002"); - priceSheet1.setSeqid("GXJG-20250228018"); - priceSheet1.setGxinfo("玻璃封接电化学抛光"); - priceSheetAllList.add(priceSheet1); - PriceSheetVO priceSheet2 = new PriceSheetVO(); - priceSheet2.setPrice("26"); - priceSheet2.setSplyname(oemName); - priceSheet2.setPrtum("件"); - priceSheet2.setSeqid("GXJG-20250228012"); - priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet2.setPrtlotno("JI和JHT"); - priceSheet2.setStairflag("单批阶梯价(按单件面积)"); - priceSheet2.setLower("5"); - priceSheet2.setUpper("0"); - priceSheet2.setPrtno("21E6-575-10724-%螺母"); - priceSheetAllList.add(priceSheet2); - PriceSheetVO priceSheet3 = new PriceSheetVO(); - priceSheet3.setPrice("34"); - priceSheet3.setSplyname(oemName); - priceSheet3.setPrtum("件"); - priceSheet3.setSeqid("GXJG-20250228012"); - priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet3.setPrtlotno("JI和JHT"); - priceSheet3.setStairflag("单批阶梯价(按单件面积)"); - priceSheet3.setLower("10"); - priceSheet3.setUpper("5.00001"); - priceSheet3.setPrtno("21E6-575-10724-%螺母"); - priceSheetAllList.add(priceSheet3); - PriceSheetVO priceSheet4 = new PriceSheetVO(); - priceSheet4.setPrice("15"); - priceSheet4.setSplyname(oemName); - priceSheet4.setPrtum("件"); - priceSheet4.setSeqid("GXJG-20250228012"); - priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet4.setPrtlotno("JHT"); - priceSheet4.setStairflag("非阶梯价"); - priceSheet4.setPrtno("21E6-575-10724-%螺母"); - priceSheetAllList.add(priceSheet4); - PriceSheetVO priceSheet5 = new PriceSheetVO(); - priceSheet5.setPrice("99"); - priceSheet5.setSplyname(oemName); - priceSheet5.setPrtum("件"); - priceSheet5.setSeqid("GXJG-20250228012"); - priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet5.setStairflag("非阶梯价"); - priceSheet5.setPrtno("21E6-575-10724-%螺母"); - priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); - priceSheetAllList.add(priceSheet5); - PriceSheetVO priceSheet6 = new PriceSheetVO(); - priceSheet6.setPrice("200"); - priceSheet6.setSplyname(oemName); - priceSheet6.setPrtum("件"); - priceSheet6.setSeqid("GXJG-20250228012"); - priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet6.setStairflag("非阶梯价"); - priceSheet6.setPrtno("21E6-575-10724-%螺母"); - priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); - priceSheetAllList.add(priceSheet6); +// List priceSheetAllList = new ArrayList<>(); +// PriceSheetVO priceSheet1 = new PriceSheetVO(); +// priceSheet1.setPrice("60"); +// priceSheet1.setSplyname(oemName); +// priceSheet1.setPrtum("件"); +// priceSheet1.setWono("WO-N2510424439-R002"); +// priceSheet1.setSeqid("GXJG-20250228018"); +// priceSheet1.setGxinfo("玻璃封接电化学抛光"); +// priceSheetAllList.add(priceSheet1); +// PriceSheetVO priceSheet2 = new PriceSheetVO(); +// priceSheet2.setPrice("26"); +// priceSheet2.setSplyname(oemName); +// priceSheet2.setPrtum("件"); +// priceSheet2.setSeqid("GXJG-20250228012"); +// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet2.setPrtlotno("JI和JHT"); +// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); +// priceSheet2.setLower("5"); +// priceSheet2.setUpper("0"); +// priceSheet2.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet2); +// PriceSheetVO priceSheet3 = new PriceSheetVO(); +// priceSheet3.setPrice("34"); +// priceSheet3.setSplyname(oemName); +// priceSheet3.setPrtum("件"); +// priceSheet3.setSeqid("GXJG-20250228012"); +// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet3.setPrtlotno("JI和JHT"); +// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); +// priceSheet3.setLower("10"); +// priceSheet3.setUpper("5.00001"); +// priceSheet3.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet3); +// PriceSheetVO priceSheet4 = new PriceSheetVO(); +// priceSheet4.setPrice("15"); +// priceSheet4.setSplyname(oemName); +// priceSheet4.setPrtum("件"); +// priceSheet4.setSeqid("GXJG-20250228012"); +// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet4.setPrtlotno("JHT"); +// priceSheet4.setStairflag("非阶梯价"); +// priceSheet4.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet4); +// PriceSheetVO priceSheet5 = new PriceSheetVO(); +// priceSheet5.setPrice("99"); +// priceSheet5.setSplyname(oemName); +// priceSheet5.setPrtum("件"); +// priceSheet5.setSeqid("GXJG-20250228012"); +// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet5.setStairflag("非阶梯价"); +// priceSheet5.setPrtno("21E6-575-10724-%螺母"); +// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); +// priceSheetAllList.add(priceSheet5); +// PriceSheetVO priceSheet6 = new PriceSheetVO(); +// priceSheet6.setPrice("200"); +// priceSheet6.setSplyname(oemName); +// priceSheet6.setPrtum("件"); +// priceSheet6.setSeqid("GXJG-20250228012"); +// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet6.setStairflag("非阶梯价"); +// priceSheet6.setPrtno("21E6-575-10724-%螺母"); +// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); +// priceSheetAllList.add(priceSheet6); if (priceSheetAllList.isEmpty()) { //【结算异常】 @@ -193,6 +199,12 @@ public class OemStatementServiceImpl extends BaseServiceImpl saves = statementVOList.stream() .map(statementVO -> { + // 统计数量 + if (Objects.equals(OemStatementEntity.IN_SETTLEMENT, statementVO.getRosStatus())) { + countSuccess.incrementAndGet(); + } else if (Objects.equals(OemStatementEntity.ERR_SETTLEMENT, statementVO.getRosStatus())) { + countError.incrementAndGet(); + } OemStatementEntity entity = new OemStatementEntity(); BeanUtils.copyProperties(statementVO, entity); entity.setUpdateTime(new Date()); @@ -202,10 +214,31 @@ public class OemStatementServiceImpl extends BaseServiceImpl page = new Page<>(); + page.setSize(999); + List statementVOS = baseMapper.selectOemStatementPage(page, query); + if (statementVOS == null || statementVOS.isEmpty()) { + return R.fail(String.format("【%】无未结算的结算单", woCode)); + } + return oemSettleAccounts(statementVOS, BigDecimal.ZERO, date); + } + @Override public List preSettlement(List statementVOS, BigDecimal price) { //1.以外协厂商分组的Map<厂家名称, 待结算工序结算单列表> @@ -216,78 +249,78 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetAllList = getPriceSheets(oemName); + List priceSheetAllList = getPriceSheets(oemName); //假数据测试用 - List priceSheetAllList = new ArrayList<>(); - PriceSheetVO priceSheet1 = new PriceSheetVO(); - priceSheet1.setPrice("60"); - priceSheet1.setSplyname(oemName); - priceSheet1.setPrtum("件"); - priceSheet1.setWono("WO-N2510424439-R002"); - priceSheet1.setSeqid("GXJG-20250228018"); - priceSheet1.setGxinfo("玻璃封接电化学抛光"); - priceSheet1.setStartdat("2026-01-15"); - priceSheetAllList.add(priceSheet1); - PriceSheetVO priceSheet2 = new PriceSheetVO(); - priceSheet2.setPrice("26"); - priceSheet2.setSplyname(oemName); - priceSheet2.setPrtum("件"); - priceSheet2.setSeqid("GXJG-20250228012"); - priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet2.setPrtlotno("JI和JHT"); - priceSheet2.setStairflag("单批阶梯价(按单件面积)"); - priceSheet2.setLower("5"); - priceSheet2.setUpper("0"); - priceSheet2.setPrtno("21E6-575-10724-%螺母"); - priceSheet2.setStartdat("2026-01-15"); - priceSheetAllList.add(priceSheet2); - PriceSheetVO priceSheet3 = new PriceSheetVO(); - priceSheet3.setPrice("34"); - priceSheet3.setSplyname(oemName); - priceSheet3.setPrtum("件"); - priceSheet3.setSeqid("GXJG-20250228012"); - priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet3.setPrtlotno("JI和JHT"); - priceSheet3.setStairflag("单批阶梯价(按单件面积)"); - priceSheet3.setLower("10"); - priceSheet3.setUpper("5.00001"); - priceSheet3.setPrtno("21E6-575-10724-%螺母"); - priceSheet3.setStartdat("2026-01-15"); - priceSheetAllList.add(priceSheet3); - PriceSheetVO priceSheet4 = new PriceSheetVO(); - priceSheet4.setPrice("15"); - priceSheet4.setSplyname(oemName); - priceSheet4.setPrtum("件"); - priceSheet4.setSeqid("GXJG-20250228012"); - priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet4.setPrtlotno("JHT"); - priceSheet4.setStairflag("非阶梯价"); - priceSheet4.setPrtno("21E6-575-10724-%螺母"); - priceSheet4.setStartdat("2026-01-15"); - priceSheetAllList.add(priceSheet4); - PriceSheetVO priceSheet5 = new PriceSheetVO(); - priceSheet5.setPrice("99"); - priceSheet5.setSplyname(oemName); - priceSheet5.setPrtum("件"); - priceSheet5.setSeqid("GXJG-20250228012"); - priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet5.setStairflag("非阶梯价"); - priceSheet5.setPrtno("21E6-575-10724-%螺母"); - priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); - priceSheet5.setStartdat("2026-01-15"); - priceSheetAllList.add(priceSheet5); - PriceSheetVO priceSheet6 = new PriceSheetVO(); - priceSheet6.setPrice("200"); - priceSheet6.setSplyname(oemName); - priceSheet6.setPrtum("件"); - priceSheet6.setSeqid("GXJG-20250228012"); - priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); - priceSheet6.setStairflag("非阶梯价"); - priceSheet6.setPrtno("21E6-575-10724-%螺母"); - priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); - priceSheet6.setStartdat("2026-01-16"); - priceSheetAllList.add(priceSheet6); +// List priceSheetAllList = new ArrayList<>(); +// PriceSheetVO priceSheet1 = new PriceSheetVO(); +// priceSheet1.setPrice("60"); +// priceSheet1.setSplyname(oemName); +// priceSheet1.setPrtum("件"); +// priceSheet1.setWono("WO-N2510424439-R002"); +// priceSheet1.setSeqid("GXJG-20250228018"); +// priceSheet1.setGxinfo("玻璃封接电化学抛光"); +// priceSheet1.setStartdat("2026-01-15"); +// priceSheetAllList.add(priceSheet1); +// PriceSheetVO priceSheet2 = new PriceSheetVO(); +// priceSheet2.setPrice("26"); +// priceSheet2.setSplyname(oemName); +// priceSheet2.setPrtum("件"); +// priceSheet2.setSeqid("GXJG-20250228012"); +// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet2.setPrtlotno("JI和JHT"); +// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); +// priceSheet2.setLower("5"); +// priceSheet2.setUpper("0"); +// priceSheet2.setPrtno("21E6-575-10724-%螺母"); +// priceSheet2.setStartdat("2026-01-15"); +// priceSheetAllList.add(priceSheet2); +// PriceSheetVO priceSheet3 = new PriceSheetVO(); +// priceSheet3.setPrice("34"); +// priceSheet3.setSplyname(oemName); +// priceSheet3.setPrtum("件"); +// priceSheet3.setSeqid("GXJG-20250228012"); +// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet3.setPrtlotno("JI和JHT"); +// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); +// priceSheet3.setLower("10"); +// priceSheet3.setUpper("5.00001"); +// priceSheet3.setPrtno("21E6-575-10724-%螺母"); +// priceSheet3.setStartdat("2026-01-15"); +// priceSheetAllList.add(priceSheet3); +// PriceSheetVO priceSheet4 = new PriceSheetVO(); +// priceSheet4.setPrice("15"); +// priceSheet4.setSplyname(oemName); +// priceSheet4.setPrtum("件"); +// priceSheet4.setSeqid("GXJG-20250228012"); +// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet4.setPrtlotno("JHT"); +// priceSheet4.setStairflag("非阶梯价"); +// priceSheet4.setPrtno("21E6-575-10724-%螺母"); +// priceSheet4.setStartdat("2026-01-15"); +// priceSheetAllList.add(priceSheet4); +// PriceSheetVO priceSheet5 = new PriceSheetVO(); +// priceSheet5.setPrice("99"); +// priceSheet5.setSplyname(oemName); +// priceSheet5.setPrtum("件"); +// priceSheet5.setSeqid("GXJG-20250228012"); +// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet5.setStairflag("非阶梯价"); +// priceSheet5.setPrtno("21E6-575-10724-%螺母"); +// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); +// priceSheet5.setStartdat("2026-01-15"); +// priceSheetAllList.add(priceSheet5); +// PriceSheetVO priceSheet6 = new PriceSheetVO(); +// priceSheet6.setPrice("200"); +// priceSheet6.setSplyname(oemName); +// priceSheet6.setPrtum("件"); +// priceSheet6.setSeqid("GXJG-20250228012"); +// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet6.setStairflag("非阶梯价"); +// priceSheet6.setPrtno("21E6-575-10724-%螺母"); +// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); +// priceSheet6.setStartdat("2026-01-16"); +// priceSheetAllList.add(priceSheet6); if (priceSheetAllList.isEmpty()) { //【结算异常】 statementVOList.forEach(statementVO -> { @@ -370,6 +403,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaUpdate(); + wrapper.set(OemStatementEntity::getTotalPrice, entity.getTotalPrice()) + .set(OemStatementEntity::getUnitPrice, entity.getUnitPrice()) + .set(OemStatementEntity::getQuotation, entity.getQuotation()) + .set(OemStatementEntity::getApprovalStatus, entity.getApprovalStatus()) + .set(OemStatementEntity::getRosStatus, entity.getRosStatus()) + .set(OemStatementEntity::getMemo, entity.getMemo()) + .set(OemStatementEntity::getUpdateTime, entity.getUpdateTime()) + .eq(OemStatementEntity::getId, entity.getId()); + + baseMapper.update(null, wrapper); + } + } + return R.success("操作完成"); } return R.fail("未选取结算单"); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/PlatingTypeRulesServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/PlatingTypeRulesServiceImpl.java index 8812c9072..02a03bf22 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/PlatingTypeRulesServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/PlatingTypeRulesServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.desk.oem.service.impl; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.desk.oem.pojo.entity.OemProcessEntity; import org.springblade.desk.oem.pojo.entity.PlatingTypeRulesEntity; @@ -49,6 +50,7 @@ public class PlatingTypeRulesServiceImpl extends BaseServiceImpl> page(MesMakeRecVO mesMakeRec, Query query) { - IPage pages = makeRecService.selectMesMakeRecPage(Condition.getPage(query), mesMakeRec); - return R.data(pages); + return R.data(makeRecService.selectMesMakeRecPage(Condition.getPage(query), mesMakeRec)); } + @GetMapping(value = "/loadNotReceived/{cardNo}") @Operation(summary = "任务接收查询", description = "传入cardNo") public R loadNotReceived(@PathVariable String cardNo) { return R.data(makeRecService.loadNotReceived(cardNo)); } + @GetMapping(value = "/afterPlaReceive/{cardNo}") @Operation(summary = "加载镀后接收数据", description = "传入cardNo") public R afterPlaReceive(@PathVariable String cardNo) { return R.data(makeRecService.afterPlaReceive(cardNo)); } - @Operation(summary = "手动维护生产追溯") @PostMapping("/saveRetrospectDefend") public R saveRetrospectDefend(@RequestBody RetrospectDefendDTO retrospectDefendDTO) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java index 91fdbbc95..b60a347a4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java @@ -98,11 +98,7 @@ public class RbProduceManageController extends BladeController { @ApiOperationSupport(order = 8) @Operation(summary = "更改车间订单优先级", description = "传入WorkOrder") public R updatePriority(@RequestBody UpdatePriorityDTO updatePriorityDTO) { - WorkOrder wo = workOrderService.getById(updatePriorityDTO.getWoId()); -// wo.setPriority(WorkOrder.PRIORITY_SCH_IMP); - wo.setPriority(updatePriorityDTO.getPriority()); - wo.setDemandDate(updatePriorityDTO.getDemandDate()); - return R.data(workOrderService.updateById(wo)); + return R.data(workOrderService.updatePriority(updatePriorityDTO)); } @GetMapping(value = "/getWorkOrderCache/{woId}") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java index a9d9e270a..f37039170 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java @@ -22,4 +22,6 @@ public interface MacToolUseMapper extends BaseMapper { List listSlotInfo(Long id, int isGr, int isCx); MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id); + + MacToolUse queryByParams(Long wpId, Integer rsBool, Integer fsBool, Integer ecBool); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml index d634b9f15..885804585 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml @@ -84,6 +84,13 @@ ORDER BY c.IN_DATE DESC + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml index 91aca3f81..44bf291ab 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml @@ -29,10 +29,60 @@ + - select * from MES_MAKE_REC where is_deleted = 0 + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml index a66a37a4b..507bd5b91 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml @@ -19,6 +19,7 @@ + @@ -66,9 +67,10 @@ mwor.run_status, mwor.approval_time, mwor.batch_reason, + mwor.oem_status, + mwor.wo_code, -- 车间订单表字段 - two.wo_code, two.card_no, two.batch_no, two.priority, @@ -187,6 +189,13 @@ AND two.demand_date < #{query.demandDateEnd}+ 1 + + AND mwor.oem_status IN + + #{status} + + AND two.run_status IN @@ -310,11 +319,21 @@ - AND mwor.run_status IN - - #{status} - + + + AND ( + mwor.approval_time IS NOT NULL + AND mwor.run_status NOT IN (2, 3) + ) + + + AND mwor.run_status IN + + #{status} + + + AND mwor.run_status = 2 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java index c4cb058ce..b9f6ffd4c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java @@ -50,4 +50,6 @@ public interface IMacToolUseService extends BaseService { MacToolUse getDataByWpIdAndIndex(Long id, String number); MacToolUse getHangNumIsNull(Long id); + + MacToolUse queryByParams(Long id, Integer rsBool, Integer fsBool, Integer ecBool); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java index 43288a91f..4d2cefce9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java @@ -26,7 +26,7 @@ public interface IMakeRecService extends BaseService { * 增加工序记录 * @param makeRecDTO */ - void saveMakeRec(MakeRecDTO makeRecDTO); + boolean saveMakeRec(MakeRecDTO makeRecDTO); IPage selectMesMakeRecPage(IPage page, MesMakeRecVO mesMakeRec); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java index ce9d31627..be38760c7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java @@ -10,6 +10,8 @@ import org.springblade.desk.oem.pojo.vo.OemApprovalVO; import org.springblade.desk.oem.pojo.vo.OemOrderVO; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; +import java.util.Map; + /** * 车间订单运行记录表 服务类 * @@ -61,11 +63,19 @@ public interface IWorkOrderRunService extends BaseService { R changeOemManufacturer(Long worId, Long ocId); /** - * 领料单打印 + * 领料单打印列表 * * @param page * @param materialRequisitionQuery * @return */ IPage exportOemMaterialRequisition(IPage page, MaterialRequisitionQuery materialRequisitionQuery); + + /** + * 打印数据 + * + * @param page + * @param materialRequisitionQuery + */ + Map printOemMaterialRequisition(IPage page, MaterialRequisitionQuery materialRequisitionQuery); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index 0a2580c5c..d6abb2f4f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -2,10 +2,7 @@ package org.springblade.desk.produce.service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; -import org.springblade.desk.produce.pojo.dto.InBatchesDTO; -import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; -import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO; -import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; +import org.springblade.desk.produce.pojo.dto.*; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; import org.springblade.desk.produce.pojo.entity.WorkPlan; @@ -190,4 +187,6 @@ public interface IWorkOrderService extends BaseService { * @param workOrder 订单 */ void updateHostWorkUnit(WorkOrder workOrder); + + boolean updatePriority(UpdatePriorityDTO updatePriorityDTO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java index cddcf93be..df8098384 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java @@ -127,6 +127,11 @@ public class MacToolUseServiceImpl extends BaseServiceImpl private final IMesEquipmentCardService mesEquipmentCardService; + private final IUserRightService userRightService; + + private final IMesRbFilePreserveSlotService mesRbFilePreserveSlotService; + + private final IMesRbFilePreserveDetailService mesRbFilePreserveDetailService; + @Override public WorkPlanDto loadCurrentWp(String cardNo) { WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0); @@ -95,7 +104,7 @@ public class MakeRecServiceImpl extends BaseServiceImpl if (!WorkPlan.STATUS_START.equals(wp.getStatus())) { throw new ServiceException("当前工序已报工完成!"); } -// this.checkTeamWorkPlan(wp, prWorkPlanService.getTeamId(userInfo.getUserId())); + this.checkTeamWorkPlan(wp, this.getTeamId(AuthUtil.getUserId())); boolean isBinging = false; // 查询当前工序是否绑定了挂次号 long count = macToolUseService.count(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).isNotNull(MacToolUse::getHangNum)); @@ -103,89 +112,105 @@ public class MakeRecServiceImpl extends BaseServiceImpl isBinging = true; } YieldOrder yieldOrder = yieldOrderService.getById(wo.getYoId()); - return WorkPlanDto.builder().workPlan(wp).workOrder(wo).yieldOrder(yieldOrder).isBinging(isBinging).build(); + WorkPlanDto workPlanDto = new WorkPlanDto(yieldOrder, wo, wp, isBinging); + workPlanDto.setCurrentWpTitle(""); + workPlanDto.setCurrentMakeTeam(""); + workPlanDto.setFrontWpTitle(""); + workPlanDto.setFrontMakeTeam(""); + workPlanDto.setNextWpTitle(""); + workPlanDto.setNextMakeTeam(""); + return workPlanDto; + } + + private void checkTeamWorkPlan(WorkPlan wp, List teamId) { + Long tsId; + //判断是否特殊工序,如果是特殊工序验证附属班组,反之则为分派班组 + //20260304 逻辑更改,若存在附属班组,则验证附属班组,不存在附属班组,验证加工班组 + if (wp.getSubsidiaryTeam() != null) { + tsId = wp.getSubsidiaryTeam(); + } else { + tsId = wp.getMakeTeam(); + } + + if (teamId == null) { + throw new ServiceException("当前登录人无对应班组!"); + } + if (!teamId.contains(tsId)) { + throw new ServiceException("当前工序不是登录人所在班组工序,不能操作!"); + } + } + + private List getTeamId(Long userId) { + List bsTeamSet = userRightService.list(Wrappers.lambdaQuery(UserRight.class).eq(UserRight::getUserId, userId).eq(UserRight::getUrType, "bs_team_set")); + if (CollectionUtils.isEmpty(bsTeamSet)) { + return null; + } + return bsTeamSet.stream().map(UserRight::getTheId).toList(); } @Override - public void saveMakeRec(MakeRecDTO makeRecDTO) { + public boolean saveMakeRec(MakeRecDTO makeRecDTO) { WorkPlan wp = workPlanMapper.selectById(makeRecDTO.getWpId()); if (!WorkPlan.STATUS_START.equals(wp.getStatus())) { - throw new ServiceException("product.prWorkPlan.workOk"); + throw new ServiceException("当前工序已报工完成!"); } - MacToolUse mtu = null; + MacToolUse mtu; DsProcessEntity dsProcess = dsProcessService.getById(wp.getPpsId()); + DsProcessEntity frontProcess = dsProcessService.getById(wp.getFrontWpId()); //如果是上挂工序,需判定是否绑定挂具 - if (dsProcess.getProcessName().equals("上挂")) { - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsRackSet)); + if ("上挂".equals(dsProcess.getProcessName())) { + mtu = macToolUseService.queryByParams(wp.getId(), 1, 0, 0); if (mtu == null) { - throw new ServiceException("product.prWorkPlan.not.bing.bsRackSet"); + throw new ServiceException("上挂工序未绑定挂具!"); } // 如果上序是上挂工序、并且本序是主工序,则代表本序是 需要绑定飞靶及设备的工序 或者手动维护生产追溯信息 - } else if (wp.getFrontWpId() != null && dsProcess.getProcessName().equals("上挂") && wp.getCruxProcess().equals("是")) { - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard)); + } else if (wp.getFrontWpId() != null && "上挂".equals(frontProcess.getProcessName()) && "1".equals(wp.getCruxProcess())) { + mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1); if (mtu == null) { // 验证是否维护了生产追溯信息 - List mtnCodeList = macToolUseService.listObjs(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode)); - List qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery() - .in(MesQcProduceRunEntity::getMtnCode, mtnCodeList)); - if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) { - throw new ServiceException("product.prWorkPlan.not.bing"); + List qcProduceRunList = mesQcProduceRunService.listPrByWpId(wp.getId()); + if (!(qcProduceRunList != null && !qcProduceRunList.isEmpty())) { + throw new ServiceException("此工序卡未绑定飞靶或设备!"); } } } else if (dsProcess.getProcessName().contains("镀金")) { - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsFeiBaSet)); + mtu = macToolUseService.queryByParams(wp.getId(), 0, 1, 0); if (mtu == null) { throw new ServiceException("此工序未绑定飞跋,请绑定飞跋!!!"); } //验证是否绑定设备 - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard)); + mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1); if (mtu == null) { List produceRunList = null; - List mtnCodeList = macToolUseService.listObjs(Wrappers.lambdaQuery() - .eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex, 1).select(MacToolUse::getMtnCode)); - produceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery() - .in(MesQcProduceRunEntity::getMtnCode, mtnCodeList).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱")); - if (produceRunList == null || produceRunList.size() == 0) { - List mtnCodeList2 = macToolUseService.listObjs(Wrappers.lambdaQuery() - .eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex, 2).select(MacToolUse::getMtnCode)); - produceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery() - .in(MesQcProduceRunEntity::getMtnCode, mtnCodeList2).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱")); + produceRunList = mesQcProduceRunService.listPrByWpIdIndex(wp.getId(), 1, Boolean.FALSE); + if (produceRunList == null || produceRunList.isEmpty()) { + produceRunList = mesQcProduceRunService.listPrByWpIdIndex(wp.getId(), 2, Boolean.FALSE); } - if (!(produceRunList != null && produceRunList.size() > 0)) { + if (!(produceRunList != null && !produceRunList.isEmpty())) { throw new ServiceException("未绑定飞跋和设备或未维护生产追溯信息!!!"); } } - } else if (dsProcess.getProcessName().equals("玻璃封接清洗") || dsProcess.getProcessName().equals("玻璃封接退火") || - dsProcess.getProcessName().equals("玻璃封接预氧化(箱式炉)") || dsProcess.getProcessName().equals("玻璃封接预氧化(链式炉)") || - dsProcess.getProcessName().equals("玻璃封接(链式炉)") || dsProcess.getProcessName().equals("玻璃封接(真空炉)") || - dsProcess.getProcessName().equals("玻璃封接灌胶") || dsProcess.getProcessName().equals("玻璃饼压制") || - dsProcess.getProcessName().equals("玻璃饼排蜡玻化") || dsProcess.getProcessName().equals("玻璃饼振光") || - dsProcess.getProcessName().equals("石墨模烘干") || dsProcess.getProcessName().equals("石墨模焙烧") || - dsProcess.getProcessName().equals("真空炉灌胶") || dsProcess.getProcessName().equals("玻璃封接电镀去氧化皮") || - dsProcess.getProcessName().equals("玻璃封接电化学抛光") || dsProcess.getProcessName().equals("玻璃封接湿喷砂") || - dsProcess.getProcessName().equals("玻璃封接电镀") || dsProcess.getProcessName().equals("玻璃封接插针电镀") || - dsProcess.getProcessName().equals("玻璃封接壳体电镀") || dsProcess.getProcessName().equals("玻璃封接电镀下挂") || - dsProcess.getProcessName().equals("烧结浸保护剂")) { - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard)); + } else if ("玻璃封接清洗".equals(dsProcess.getProcessName()) || "玻璃封接退火".equals(dsProcess.getProcessName()) || + "玻璃封接预氧化(箱式炉)".equals(dsProcess.getProcessName()) || "玻璃封接预氧化(链式炉)".equals(dsProcess.getProcessName()) || + "玻璃封接(链式炉)".equals(dsProcess.getProcessName()) || "玻璃封接(真空炉)".equals(dsProcess.getProcessName()) || + "玻璃封接灌胶".equals(dsProcess.getProcessName()) || "玻璃饼压制".equals(dsProcess.getProcessName()) || + "玻璃饼排蜡玻化".equals(dsProcess.getProcessName()) || "玻璃饼振光".equals(dsProcess.getProcessName()) || + "石墨模烘干".equals(dsProcess.getProcessName()) || "石墨模焙烧".equals(dsProcess.getProcessName()) || + "真空炉灌胶".equals(dsProcess.getProcessName()) || "玻璃封接电镀去氧化皮".equals(dsProcess.getProcessName()) || + "玻璃封接电化学抛光".equals(dsProcess.getProcessName()) || "玻璃封接湿喷砂".equals(dsProcess.getProcessName()) || + "玻璃封接电镀".equals(dsProcess.getProcessName()) || "玻璃封接插针电镀".equals(dsProcess.getProcessName()) || + "玻璃封接壳体电镀".equals(dsProcess.getProcessName()) || "玻璃封接电镀下挂".equals(dsProcess.getProcessName()) || + "烧结浸保护剂".equals(dsProcess.getProcessName())) { + mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1); if (mtu == null) { // 验证是否维护了生产追溯信息 - List qcProduceRunList = null; - List mtnCodeList = macToolUseService.listObjs(Wrappers.lambdaQuery() - .eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode)); - qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery() - .in(MesQcProduceRunEntity::getMtnCode, mtnCodeList)); - if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) { - throw new ServiceException("product.prWorkPlan.not.bing"); + List qcProduceRunList = mesQcProduceRunService.listPrByWpId(wp.getId()); + if (!(qcProduceRunList != null && !qcProduceRunList.isEmpty())) { + throw new ServiceException("此工序卡未绑定飞靶或设备!"); } } } - //周新昊 20241114 验证手动维护设备使用记录的工序电子档案数据是否维护完备 - Boolean aBoolean = true; //this.chkRfpDetail(wp); + boolean aBoolean = this.chkRfpDetail(wp.getId()); if (!aBoolean) { throw new ServiceException("生产记录未填写完整,不允许报工!!!!"); } @@ -197,8 +222,9 @@ public class MakeRecServiceImpl extends BaseServiceImpl baseMapper.insertOrUpdate(mr); if (mr.getScrapQty() > 0) { wp.setScrapQty(wp.getScrapQty() + mr.getScrapQty()); - WorkOrder wo = null;//workOrderService.getById(wp.getWoId()); + WorkOrder wo = workOrderMapper.selectById(wp.getWoId()); wo.setMakeQty(wo.getMakeQty() - mr.getScrapQty()); + workOrderMapper.updateById(wo); } wp.setWorkQty(wp.getWorkQty() + mr.getWorkQty()); if (wp.getQualifiedQty().equals(wp.getScrapQty() + wp.getWorkQty())) { @@ -206,7 +232,6 @@ public class MakeRecServiceImpl extends BaseServiceImpl } if ("热处理".equals(dsProcess.getProcessName())) { wp.setPrintType((short) 1); - //workPlanService.saveOrUpdate(wp); String code = macToolUseService.nextCode(2); MacToolUse prMacToolUse = new MacToolUse(); prMacToolUse.setWpId(wp.getId()); @@ -232,61 +257,230 @@ public class MakeRecServiceImpl extends BaseServiceImpl qcProduceRun.setDataSeven(makeRecDTO.getShape()); mesQcProduceRunService.save(qcProduceRun); } - // 保存引用文件或版本号 - WorkOrder prWorkOrder = null; //workOrderService.getById(wp.getWoId()); - if (prWorkOrder != null && prWorkOrder.getId() != null) { - YieldOrder pjYieldOrder = yieldOrderService.getById(prWorkOrder.getYoId()); - if (pjYieldOrder != null && pjYieldOrder.getId() != null) { - BsProcessSetEntity procedureSet = bsProcessSetService.getById(wp.getPpsId()); - AuditFile dsAuditFile = null; - // 如果本序是涂色标或喷砂,直接查维护的数据 - if ("涂色标".equals(procedureSet.getName()) || "喷砂".equals(procedureSet.getName())) { - dsAuditFile = auditFileService.getOne(Wrappers.lambdaQuery() - .eq(AuditFile::getPpsId, procedureSet.getId())); - } else { - // 如果不是优先判断是否有生产标识 - String prodIdent = pjYieldOrder.getProductIdent(); - BsTeamSetEntity bsTeamSet = teamSetService.getOne(Wrappers.lambdaQuery() - .eq(BsTeamSetEntity::getId, wp.getMakeTeam())); - if (!"AH".equals(prodIdent)) { - prodIdent = null; - } - if (bsTeamSet != null && bsTeamSet.getId() != null) { - // BsCenterTeamEntity bsCenterTeam = bsCenterTeamService.getByTsId(bsTeamSet.getTsId()); - DsPartEntity dsPart = partService.getOne(Wrappers.lambdaQuery().eq(DsPartEntity::getPartCode, pjYieldOrder.getPartCode())); - String productApparea = null; - if (dsPart != null && dsPart.getId() != null) { - productApparea = dsPart.getProductSeries(); + workPlanMapper.updateById(wp); + // 2025-07-23 线上迁移修改 + MacToolUse macToolUse = macToolUseService.getDataByWpIdAndIndex(wp.getId(), "2"); + if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished() != 1) { + macToolUse.setFinished(1); + String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : ""; + log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished()); + macToolUseService.updateById(macToolUse); + } + return true; + } + + private boolean chkRfpDetail(Long wpId) { + List macToolUses = macToolUseService.list(Wrappers.lambdaQuery(MacToolUse.class).isNotNull(MacToolUse::getRfpId).ne(MacToolUse::getMtuIndex, "2").eq(MacToolUse::getWpId, wpId)); + if (CollectionUtils.isNotEmpty(macToolUses)) { + for (MacToolUse macToolUs : macToolUses) { + List qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class).eq(MesQcProduceRunEntity::getMtnCode, macToolUs.getMtnCode()) + .and(wrapper -> wrapper.isNull(MesQcProduceRunEntity::getWorkSlot).or().notLike(MesQcProduceRunEntity::getWorkSlot, "入料区")).orderByAsc(MesQcProduceRunEntity::getId)); + Map qcProduceRunMap = qcProduceRunList.stream().collect(Collectors.toMap(MesQcProduceRunEntity::getWorkSlot, Function.identity())); + List dsRbFilePreserveSlots = mesRbFilePreserveSlotService.list(Wrappers.lambdaQuery(MesRbFilePreserveSlotEntity.class).eq(MesRbFilePreserveSlotEntity::getRfpId, macToolUs.getRfpId()).orderByAsc(MesRbFilePreserveSlotEntity::getSlotIndex)); + if (CollectionUtils.isNotEmpty(dsRbFilePreserveSlots)) { + for (MesRbFilePreserveSlotEntity dsRbFilePreserveSlot : dsRbFilePreserveSlots) { + MesQcProduceRunEntity qcProduceRun = qcProduceRunMap.get(dsRbFilePreserveSlot.getSlotName()); + if (qcProduceRun != null) { + List dsRbFilePreserveDetails = mesRbFilePreserveDetailService.getByRfpsId(dsRbFilePreserveSlot.getId()); + if (CollectionUtils.isNotEmpty(dsRbFilePreserveDetails)) { + if (dsRbFilePreserveSlot.getRfpsType() == 1) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 2) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 3 || dsRbFilePreserveSlot.getRfpsType() == 11) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 4 || dsRbFilePreserveSlot.getRfpsType() == 12) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 5 || dsRbFilePreserveSlot.getRfpsType() == 22) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 6) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 7 || dsRbFilePreserveSlot.getRfpsType() == 18) { + if (StringUtils.isBlank(qcProduceRun.getDataOne())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 8) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 9) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 13) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine()) + || StringUtils.isBlank(qcProduceRun.getDataTen())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 14) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine()) + || StringUtils.isBlank(qcProduceRun.getDataTen())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 15) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine()) + || StringUtils.isBlank(qcProduceRun.getDataTen()) + || StringUtils.isBlank(qcProduceRun.getDataEleven()) + || StringUtils.isBlank(qcProduceRun.getDataTwelve())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 16) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine()) + || StringUtils.isBlank(qcProduceRun.getDataTen()) + || StringUtils.isBlank(qcProduceRun.getDataEleven()) + || StringUtils.isBlank(qcProduceRun.getDataTwelve()) + || StringUtils.isBlank(qcProduceRun.getDataThirteen()) + || StringUtils.isBlank(qcProduceRun.getDataFourteen())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 17) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 21) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine())) { + return false; + } + } + } } -// if (productApparea!=null){ -// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndApparea(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(),productApparea); -// } -// if (bsCenterTeam != null && bsCenterTeam.getCtId() != null && dsAuditFile == null) { -// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndPqName(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(), prodIdent); -// } } } - if (dsAuditFile != null && dsAuditFile.getId() != null) { - wp.setPapers(dsAuditFile.getPapers()); - wp.setReferenceFile(dsAuditFile.getReferenceFile()); - //workPlanService.updateById(wp); - } - // 2025-07-23 线上迁移修改 - MacToolUse macToolUse = macToolUseService.getOne(Wrappers.lambdaQuery() - .eq(MacToolUse::getWpId, wp.getId())); - if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished() != 1) { - macToolUse.setFinished(1); - String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : ""; - log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished()); - macToolUseService.updateById(macToolUse); - } } } + return true; } @Override public IPage selectMesMakeRecPage(IPage page, MesMakeRecVO mesMakeRec) { - return page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec)); + IPage mesMakeRecVOIPage = page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec)); + List records = mesMakeRecVOIPage.getRecords(); + if (CollectionUtils.isNotEmpty(records)) { + List ppsIds = new ArrayList<>(); + List makeTeams = new ArrayList<>(); + for (MesMakeRecVO record : records) { + ppsIds.add(record.getPpsId()); + if (record.getFrontPpsId() != null) { + ppsIds.add(record.getFrontPpsId()); + } + if (record.getNextPpsId() != null) { + ppsIds.add(record.getNextPpsId()); + } + if (record.getMakeTeam() != null) { + makeTeams.add(record.getMakeTeam()); + } + if (record.getFrontMakeTeam() != null) { + makeTeams.add(record.getFrontMakeTeam()); + } + if (record.getNextMakeTeam() != null) { + makeTeams.add(record.getNextMakeTeam()); + } + } + List processSets = bsProcessSetService.list(Wrappers.lambdaQuery(BsProcessSetEntity.class).in(BsProcessSetEntity::getId, ppsIds)); + Map processSetMap = processSets.stream().collect(Collectors.toMap(BsProcessSetEntity::getId, BsProcessSetEntity::getName)); + + List teams = teamSetService.list(Wrappers.lambdaQuery(BsTeamSetEntity.class).in(BsTeamSetEntity::getId, makeTeams)); + Map teamMap = teams.stream().collect(Collectors.toMap(BsTeamSetEntity::getId, BsTeamSetEntity::getTsName)); + for (MesMakeRecVO record : records) { + User user = UserCache.getUser(record.getWorker()); + record.setWorkerName(user != null ? user.getRealName() : ""); + record.setPpsName(processSetMap.get(record.getPpsId())); + record.setMakeTeamName(teamMap.get(record.getMakeTeam())); + record.setFrontPpsName(processSetMap.get(record.getFrontPpsId())); + record.setFrontMakeTeamName(teamMap.get(record.getFrontMakeTeam())); + record.setNextPpsName(processSetMap.get(record.getNextPpsId())); + record.setNextMakeTeamName(teamMap.get(record.getNextMakeTeam())); + } + mesMakeRecVOIPage.setRecords(records); + } + return mesMakeRecVOIPage; } @Override diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java index 438d087c5..0d3a76c35 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java @@ -4,9 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; +import net.sourceforge.barbecue.Barcode; +import net.sourceforge.barbecue.BarcodeFactory; +import net.sourceforge.barbecue.BarcodeImageHandler; +import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.ibatis.executor.BatchResult; import org.springblade.common.exception.BusinessException; +import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; @@ -35,19 +41,22 @@ import org.springblade.desk.produce.service.IWorkOrderRunService; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.erpdata.feign.IErpDataOemClient; import org.springblade.system.cache.DictCache; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.entity.User; import org.springblade.system.pojo.enums.DictEnum; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 车间订单运行记录表 服务实现类 @@ -151,7 +160,9 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl() .eq(WorkPlan::getWoId, wo.getId())); wo.setCollaborate(workOrderRun.getCollaborate()); @@ -440,8 +451,28 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl printOemMaterialRequisition(IPage page, MaterialRequisitionQuery materialRequisitionQuery) { + IPage pages = exportOemMaterialRequisition(page, materialRequisitionQuery); + Oem oem = oemMapper.selectById(materialRequisitionQuery.getOcId()); + User user = UserCache.getUser(AuthUtil.getUser().getUserId()); + String printNo = generateOrderNoSync(); + String picture = generateBarcodeAsBase64(printNo, 200, 25); + Map result = new HashMap<>(); + result.put("title", "外协计划明细"); + result.put("picture", picture); + result.put("printNo", printNo); + result.put("printUser", user.getRealName()); + result.put("printDate", DateFormatUtils.format(new Date(), "yyyy-MM-dd")); + result.put("oemName", oem.getAbbreviation()); + result.put("data", pages.getRecords()); + return result; + } + @Override public IPage queryOemOrder(IPage page, OemOrderQuery oemOrderQuery) { + oemOrderQuery.setRunType(WorkOrderRun.RUN_TYPE_1); + oemOrderQuery.setRunStatus(WorkOrderRun.RUN_STATUS_FAIL); List oemOrderVOS = baseMapper.selectOemOrderPage(page, oemOrderQuery); return page.setRecords(oemOrderVOS); } @@ -586,6 +617,46 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl woList = workOrderMapper.selectList(new LambdaQueryWrapper() .eq(WorkOrder::getYoId, yoId)); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 631a2ff54..e8d434c12 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -43,10 +43,7 @@ import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.PlateAroundMapper; import org.springblade.desk.produce.mapper.WorkOrderMapper; -import org.springblade.desk.produce.pojo.dto.InBatchesDTO; -import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; -import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO; -import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; +import org.springblade.desk.produce.pojo.dto.*; import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.enums.WorkOrderEnum; import org.springblade.desk.produce.pojo.enums.ProcessCycleEnum; @@ -1635,6 +1632,26 @@ public class WorkOrderServiceImpl extends BaseServiceImpl().lambda().eq(WorkPlan::getId, detail.getWpId())); - List list = macToolUseService.listSlotInfo(workPlan); - if(null != listSheet && listSheet.size() > 0){ - list.forEach(one -> { - one.setIsShow("1"); - }); - }else{ - list.forEach(one -> { - one.setIsShow("0"); - }); + List list = new ArrayList<>(); + if(null != workPlan){ + list = macToolUseService.listSlotInfo(workPlan); + if(null != listSheet && listSheet.size() > 0){ + list.forEach(one -> { + one.setIsShow("1"); + }); + }else{ + list.forEach(one -> { + one.setIsShow("0"); + }); + } } - return R.data(list); // return service.getSamePlace(id); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/RaiseHandController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/RaiseHandController.java index b12ebe464..630258310 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/RaiseHandController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/RaiseHandController.java @@ -23,6 +23,7 @@ import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.PreAuth; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; @@ -41,6 +42,7 @@ import org.springblade.desk.quality.service.ILiquidTankTaskCopyService; import org.springblade.desk.quality.service.ILiquidTankWaveService; import org.springblade.desk.quality.service.IRaiseHandService; import org.springblade.desk.quality.service.IRelTankWaveItemService; +import org.springblade.desk.quality.util.FullMergeExcelUtil; import org.springblade.desk.quality.wrapper.LiquidTankTaskCopyWrapper; import org.springblade.desk.quality.wrapper.LiquidTankWaveWrapper; import org.springblade.desk.quality.wrapper.RaiseHandWrapper; @@ -239,4 +241,30 @@ public class RaiseHandController extends BladeController { ); return R.status(service.saveBatch(importList)); } + + @GetMapping("/exportData") + @ApiOperationSupport(order = 70) + @Operation(summary = "导出Excel", description = "传入LiquidTankTaskCopy") + @PreAuth + public void exportData(Long id, + HttpServletResponse response) { + List list = new ArrayList<>(); + String name = "举手免责信息收藏"; + String tableTtile ="bbb"; + try { + FullMergeExcelUtil.exportHandExcel( + response, + "举手免责", + name, + tableTtile, + new String[]{"", "", "填写具体班组或个人", "岗位", "发生时间", "免责问题描述", "处理人", + "是否涉及免除金额", "免除金额(元)","处理时间","纠正措施","固化文件","是否闭环", + "闭环日期","问题是否需要在公司范围内举一反三","问题是否涉及用户"}, + list, + new int[]{0} + ); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java index a1e26c312..d03724cf2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java @@ -215,6 +215,9 @@ public class ReviewSheetController extends BladeController { // .peek(service::setErpVOValue) // .collect(Collectors.toList()); // return R.data(pagesVO); + if(null == search.getRsCode() && null == search.getDutyPart() && null == search.getDutyBatNo()){ + search.setRsCode("########################"); + } IPage pagesVO = service.listErp(Condition.getPage(query), search); return R.data(pagesVO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml index 61d5be226..1408a1d9e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml @@ -93,7 +93,9 @@ wo.TEST_QTY as orderCheckQty, wo.LOSS_QTY as orderLossQty, wo.SCRAP_QTY as orderScrapQty, - wo.CARD_NO AS cardNo + wo.CARD_NO AS cardNo, + dp.KEY_INFO as keyInfo, + dp.REMARKS as remark FROM QA_INSPECTION_TASK t -- 车间作业计划 wp LEFT JOIN MES_WORK_PLAN wp ON t.WP_ID = wp.ID diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml index 7c5a7b1ae..abdc9a6e0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml @@ -211,7 +211,7 @@ -- 车间作业计划 wp LEFT JOIN MES_WORK_PLAN wp ON rs.WP_ID = wp.ID -- 车间订单 wo - LEFT JOIN MES_WORK_ORDER wo ON rs.WO_ID = wo.ID + LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID -- 生产订单 yo LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID -- 外协厂商 oem @@ -266,12 +266,16 @@