diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemProcessEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemProcessEntity.java index 7e614e88..4423fe01 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemProcessEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemProcessEntity.java @@ -43,5 +43,10 @@ public class OemProcessEntity extends BaseEntity { */ @Schema(description = "工艺IDS") private String craftIds; + /** + * 是否手动结算:0否(自动结算),1是(手动结算) + */ + @Schema(description = "是否手动结算:0否(自动结算),1是(手动结算)") + private String manual; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStatementEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStatementEntity.java index 8de2373d..465a8cb1 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStatementEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStatementEntity.java @@ -31,7 +31,7 @@ public class OemStatementEntity extends BaseEntity { /** * 无需结算 */ - public static Integer NOT_NEED_SETTLEMENT = -1; + public static Integer NOT_NEED_SETTLEMENT = 5; /** * 未结算 */ @@ -59,6 +59,25 @@ public class OemStatementEntity extends BaseEntity { rosStatusMap.put(OK_SETTLEMENT, "已结算"); } + /** + * 1:待审批 + */ + public static Integer APPROVAL_STATUS_UNDER = 1; + /** + * 2:不通过 + */ + public static Integer APPROVAL_STATUS_FAIL = 2; + /** + * 3:通过 + */ + public static Integer APPROVAL_STATUS_VIA = 3; + public static Map approvalStatusMap = new HashMap(4); + + static { + approvalStatusMap.put(APPROVAL_STATUS_UNDER, "待审批"); + approvalStatusMap.put(APPROVAL_STATUS_FAIL, "审批不通过"); + approvalStatusMap.put(APPROVAL_STATUS_VIA, "审批通过"); + } /** * 车间作业计划ID */ @@ -92,13 +111,23 @@ public class OemStatementEntity extends BaseEntity { /** * 状态 */ - @Schema(description = "状态") + @Schema(description = "状态5无需结算,1未结算,2结算中,3结算异常,4已结算") private Integer rosStatus; - public String getRosStatusName() { return rosStatusMap.get(rosStatus); } + /** + * 状态 + */ + @Schema(description = "审批状态(1待审批,2审批不通过,3审批通过)") + private Integer approvalStatus; + + public String getApprovalStatusName() { + return approvalStatusMap.get(approvalStatus); + } + + /** * 备注 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemStatementExcel.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemStatementExcel.java index ee5d1d73..2e4dbbbe 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemStatementExcel.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemStatementExcel.java @@ -3,7 +3,6 @@ package org.springblade.desk.oem.pojo.excel; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; import com.alibaba.excel.annotation.ExcelProperty; @@ -12,14 +11,13 @@ import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import java.io.Serializable; -import java.io.Serial; /** * 外协结算单 Excel实体类 * * @author qyl - * @since 2026-02-12 + * @since 2026-03-12 */ @Data @ColumnWidth(25) @@ -27,33 +25,94 @@ import java.io.Serial; @ContentRowHeight(18) public class OemStatementExcel implements Serializable { - @Serial - private static final long serialVersionUID = 1L; - /** - * - */ @ColumnWidth(20) - @ExcelProperty("") - private Long id; - /** - * - */ + @ExcelProperty("外协单号") + private String oemCode; + @ColumnWidth(20) - @ExcelProperty("") - private String tenantId; - /** - * 删除标记;1:删除,0:正常 - */ + @ExcelProperty("车间订单单号") + private String woCode; + @ColumnWidth(20) - @ExcelProperty("删除标记;1:删除,0:正常") - private Long isDeleted; - /** - * 车间作业计划ID - */ + @ExcelProperty("零件号") + private String partCode; + + @ColumnWidth(20) + @ExcelProperty("零件名称") + private String partName; + + @ColumnWidth(20) + @ExcelProperty("镀层物料") + private String plateGoodsCode; + + @ColumnWidth(20) + @ExcelProperty("批次号") + private String batchNo; + + @ColumnWidth(20) + @ExcelProperty("生产标识") + private String prodIdent; + + @ColumnWidth(20) + @ExcelProperty("工序编码") + private String psCode; + @ColumnWidth(20) - @ExcelProperty("车间作业计划ID") - private Long wpId; + @ExcelProperty("工序名称") + private String psName; + + @ColumnWidth(20) + @ExcelProperty("工艺能力") + private String caName; + + @ColumnWidth(20) + @ExcelProperty("镀后入库时间") + private String putStoreTime; + + @ColumnWidth(20) + @ExcelProperty("生产数量") + private String makeQty; + + @ColumnWidth(20) + @ExcelProperty("单位面积(dm²)") + private String ypArea; + + @ColumnWidth(20) + @ExcelProperty("总面积(dm²)") + private String totalArea; + + @ColumnWidth(20) + @ExcelProperty("外协厂商") + private String ocCode; + + @ColumnWidth(20) + @ExcelProperty("外协厂商名称") + private String ocName; + + @ColumnWidth(20) + @ExcelProperty("镀种") + private String plate; + + @ColumnWidth(20) + @ExcelProperty("镀种厚度") + private String plateThickness; + + @ColumnWidth(20) + @ExcelProperty("涂色标个数") + private String tsbNum; + + @ColumnWidth(20) + @ExcelProperty("涂色带个数") + private String tsdNum; + + @ColumnWidth(20) + @ExcelProperty("涂箭个数") + private String tjtNum; + + @ColumnWidth(20) + @ExcelProperty("是否手动结算") + private String manual; /** * 镀层厚度 */ @@ -89,6 +148,18 @@ public class OemStatementExcel implements Serializable { */ @ColumnWidth(20) @ExcelProperty("状态") - private Integer rosStatus; + private String rosStatusName; + /** + * 状态 + */ + @ColumnWidth(20) + @ExcelProperty("审批状态") + private String approvalStatusName; + /** + * 状态 + */ + @ColumnWidth(20) + @ExcelProperty("备注") + private String memo; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/ApplyOemMeritsSave.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/ApplyOemMeritsSave.java new file mode 100644 index 00000000..73c39474 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/ApplyOemMeritsSave.java @@ -0,0 +1,26 @@ +package org.springblade.desk.oem.pojo.request; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.springblade.desk.oem.pojo.entity.OemMeritsEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; +import java.util.List; + +/** + * 申请厂家绩效入参 + */ +@Data +public class ApplyOemMeritsSave { + + @NotNull(message = "月份不能为空") + @DateTimeFormat(pattern = "yyyy-MM") + private String date; + + @Schema(description = "绩效集合") + @NotNull(message = "申请列表不能为空") + private List oemMeritsEntities; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemAndAbilitySave.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemAndAbilitySave.java new file mode 100644 index 00000000..d9de037d --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemAndAbilitySave.java @@ -0,0 +1,21 @@ +package org.springblade.desk.oem.pojo.request; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springblade.desk.oem.pojo.entity.OemAndAbilityEntity; + +import java.util.List; + +/** + * 外协绩效模板保存 + */ +@Data +public class OemAndAbilitySave { + + @Schema(description = "厂家名称") + private List oemAndAbilityEntities; + + @Schema(description = "删除主键字符串集合1,2,3") + private String deleteIds; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemMeritsQuery.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemMeritsQuery.java index e356d208..5ffa959f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemMeritsQuery.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemMeritsQuery.java @@ -26,19 +26,19 @@ public class OemMeritsQuery { /** * 状态 */ - @Schema(description = "状态集合(传字符串1,2,3,4)") + @Schema(description = "状态集合(传字符串1,2,3,4)1新建,2填写中,3已评审,4已审核") private String statusList; /** * 生产填写状态集合 */ - @Schema(description = "生产填写状态集合(传字符串1,2)") + @Schema(description = "生产填写状态集合(传字符串1,2,3)1生产未填写,2生产已维护,3生产已校对") private String produceStatusList; /** * 质量填写状态 */ - @Schema(description = "质量填写状态集合(传字符串1,2)") + @Schema(description = "质量填写状态集合(传字符串1,2,3)1质量未填写,2质量已维护,3质量已校对") private String qualityStatusList; @Schema(description = "月份(格式:yyyy-MM)") diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsApproval.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsApproval.java new file mode 100644 index 00000000..044d59f7 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsApproval.java @@ -0,0 +1,34 @@ +package org.springblade.desk.oem.pojo.request; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * 外协结算审核请求入参 + */ +@Data +public class OemSettleAccountsApproval { + + /** + * 结算单IDList + */ + @Schema(description = "结算单IDList", required = true) + @NotNull(message = "结算单ID不能为空") + private List ids; + /** + * 审批意见 + */ + @Schema(description = "驳回原因(1不需要结算,2基础数据有误)", required = true) + @NotNull(message = "驳回原因不能为空") + private Short reason; + /** + * 审批结果 + */ + @Schema(description = "审批结果(1待审批,2审批不通过,3审批通过)", required = true) + @NotNull(message = "审批结果不能为空") + private Short approvalStatus; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/StatementQuery.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/StatementQuery.java index 074bc04e..cc2f8956 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/StatementQuery.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/StatementQuery.java @@ -63,7 +63,17 @@ public class StatementQuery { /** * 结算单状态 */ - @Schema(description = "结算单状态(传字符串1,2,3,4)-1无需结算,1未结算,2结算中,3结算异常,4已结算") + @Schema(description = "结算单状态(传字符串1,2,3,4)5无需结算,1未结算,2结算中,3结算异常,4已结算。*注意*未结算状态不可与其他状态同时查询") @NotNull(message = "结算单状态不能为空") private String rosStatusList; + /** + * 审批状态 + */ + @Schema(description = "审批状态(传字符串1,2,3)1待审批,2审批不通过,3审批通过") + private String approvalStatusList; + /** + * 是否手动结算 + */ + @Schema(description = "是否手动结算:0否(自动结算),1是(手动结算)") + private String manual; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemProcessVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemProcessVO.java index 22f635b8..7a2dab93 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemProcessVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemProcessVO.java @@ -29,8 +29,14 @@ public class OemProcessVO extends OemProcessEntity { @Schema(description = "工序IDStr,前端用") private String processIdStr; - public String getProcessIdStr() { return this.getProcessId().toString(); } + + @Schema(description = "是否手动结算:0否(自动结算),1是(手动结算)") + private String manualName; + + public String getManualName() { + return "0".equals(this.getManual()) ? "否" : "是"; + } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/StatementVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/StatementVO.java index 93a3ebf8..70a39970 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/StatementVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/StatementVO.java @@ -100,6 +100,9 @@ public class StatementVO extends OemStatementEntity { @Schema(description = "涂箭个数") private String tjtNum; + @Schema(description = "是否手动结算:0否(自动结算),1是(手动结算)") + private String manual; + /** * 同外协厂家下有效期内的全部该工序报价 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/EquipmentMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/EquipmentMapper.xml index 8ed99f01..32681eef 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/EquipmentMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/EquipmentMapper.xml @@ -42,7 +42,7 @@ select e.*, wc.WC_NAME as workCenterName - from MES_EQUIPMENT e LEFT JOIN BA_WORK_CENTER wc ON e.WORK_CENTER_ID = wc.ID + from MES_EQUIPMENT e LEFT JOIN BS_WORK_CENTER wc ON e.WORK_CENTER_ID = wc.ID WHERE e.IS_DELETED = 0 AND e.DEVICE_CODE LIKE CONCAT('%', CONCAT(#{equipment.deviceCode}, '%')) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/EquipmentMaintenanceMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/EquipmentMaintenanceMapper.xml index ff62d6d3..cf13b29d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/EquipmentMaintenanceMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/EquipmentMaintenanceMapper.xml @@ -109,7 +109,7 @@ equipment.mac_spec 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_EQUIPMENT_MAINTENANCE em ON ph.id = em.ph_id AND em.is_deleted = 0 LEFT JOIN MES_EQUIPMENT equipment ON em.equipment_id = equipment.id AND equipment.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/jobtransfer/mapper/PostHandleMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/PostHandleMapper.xml index dc07a64c..287a0a5e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/PostHandleMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/PostHandleMapper.xml @@ -105,7 +105,7 @@ bd.TS_NAME as DEPT_NAME -- 班组名称 FROM MES_POST_HANDLE mph LEFT JOIN BLADE_USER bu ON mph.USER_ID = bu.ID -- 关联用户表 - LEFT JOIN BA_TEAM_SET bd ON mph.DEPT_ID = bd.ID -- 关联部门表 + LEFT JOIN BS_TEAM_SET bd ON mph.DEPT_ID = bd.ID -- 关联部门表 WHERE mph.IS_DELETED = 0 AND bu.CODE = #{postHandle.userCode} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemAndAbilityController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemAndAbilityController.java index 96861a8b..88d5c0cb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemAndAbilityController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemAndAbilityController.java @@ -19,6 +19,7 @@ import org.springblade.desk.jobtransfer.pojo.excel.EquipmentMaintenanceImport; import org.springblade.desk.oem.pojo.excel.OemAndAbilityExcel; import org.springblade.desk.oem.pojo.excel.OemAndAbilityImport; import org.springblade.desk.oem.pojo.request.OemAndAbilityQuery; +import org.springblade.desk.oem.pojo.request.OemAndAbilitySave; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -33,6 +34,7 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.tool.constant.BladeConstant; +import java.util.ArrayList; import java.util.Map; import java.util.List; @@ -121,7 +123,9 @@ public class OemAndAbilityController extends BladeController { @PostMapping("/submit-list") @ApiOperationSupport(order = 8) @Operation(summary = "批量增删改", description = "") - public R submitList(@Valid @RequestBody List oemAndAbilityEntities, @Parameter(description = "删除主键字符串集合1,2,3") String deleteIds) { + public R submitList(@Valid @RequestBody OemAndAbilitySave oemAndAbilitySave) { + List oemAndAbilityEntities = oemAndAbilitySave.getOemAndAbilityEntities(); + String deleteIds = oemAndAbilitySave.getDeleteIds(); return mesOemAndAbilityService.saveOrUpdateOrDelBatch(oemAndAbilityEntities, Func.toLongList(deleteIds)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemMeritsController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemMeritsController.java index f75d8194..9819027f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemMeritsController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemMeritsController.java @@ -16,6 +16,7 @@ import org.springblade.core.tool.utils.Func; import org.springblade.desk.oem.pojo.entity.OemAndAbilityEntity; import org.springblade.desk.oem.pojo.excel.OemMeritsExcel; import org.springblade.desk.oem.pojo.excel.OemOrderExcel; +import org.springblade.desk.oem.pojo.request.ApplyOemMeritsSave; import org.springblade.desk.oem.pojo.request.MaintenanceSave; import org.springblade.desk.oem.pojo.request.OemMeritsQuery; import org.springblade.desk.oem.pojo.request.ProofreadSave; @@ -71,7 +72,8 @@ public class OemMeritsController extends BladeController { */ @GetMapping("/page") @ApiOperationSupport(order = 3) - @Operation(summary = "分页", description = "传入mesOemMerits") + @Operation(summary = "分页,申请页面statusList传1;计算页面statusList传1,2并且produceStatusList或qualityStatusList传1,2;" + + "评审页面statusList传2并且produceStatusList传3并且qualityStatusList传3;审核页面statusList传3,4", description = "传入mesOemMerits") public R> page(OemMeritsQuery mesOemMerits, Query query) { IPage pages = mesOemMeritsService.selectOemMeritsPage(Condition.getPage(query), mesOemMerits); return R.data(pages); @@ -123,8 +125,10 @@ public class OemMeritsController extends BladeController { @PostMapping("/applyOemMerits") @ApiOperationSupport(order = 8) @Operation(summary = "外协绩效申请", description = "") - public R applyOemMerits(@Valid @RequestBody List oemMeritsEntities, @DateTimeFormat(pattern = "yyyy-MM") LocalDate date) { - return mesOemMeritsService.applyOemMerits(oemMeritsEntities, date); + public R applyOemMerits(@Valid @RequestBody ApplyOemMeritsSave applyOemMeritsSave) { + String dateStr = applyOemMeritsSave.getDate(); + List oemMeritsEntities = applyOemMeritsSave.getOemMeritsEntities(); + return mesOemMeritsService.applyOemMerits(oemMeritsEntities, DateUtil.parse(dateStr, "yyyy-MM")); } @@ -176,7 +180,7 @@ public class OemMeritsController extends BladeController { */ @PostMapping("/processSubmit") @ApiOperationSupport(order = 13) - @Operation(summary = "厂家绩效评审保存", description = "") + @Operation(summary = "厂家绩效审核保存", description = "") public R processSubmit(@Valid @RequestBody List oemMeritsEntities) { return mesOemMeritsService.processSubmit(oemMeritsEntities); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java index c7f8ec17..14943eb2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java @@ -1,5 +1,6 @@ package org.springblade.desk.oem.controller; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -14,6 +15,7 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity; import org.springblade.desk.oem.pojo.excel.OemAndAbilityImport; import org.springblade.desk.oem.pojo.excel.OemMeritsExcel; import org.springblade.desk.oem.pojo.excel.OemProcessExcel; @@ -84,6 +86,10 @@ public class OemProcessController extends BladeController { @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入mesOemProcess") public R save(@Valid @RequestBody OemProcessEntity mesOemProcess) { + OemProcessEntity one = mesOemProcessService.getOne(Wrappers.lambdaQuery().eq(OemProcessEntity::getProcessId, mesOemProcess.getProcessId())); + if (one != null) { + return R.fail("外协工序已存在"); + } return R.status(mesOemProcessService.save(mesOemProcess)); } @@ -94,6 +100,10 @@ public class OemProcessController extends BladeController { @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入mesOemProcess") public R update(@Valid @RequestBody OemProcessEntity mesOemProcess) { + OemProcessEntity one = mesOemProcessService.getOne(Wrappers.lambdaQuery().eq(OemProcessEntity::getProcessId, mesOemProcess.getProcessId())); + if (one != null && !one.getId().equals(mesOemProcess.getId())) { + return R.fail("外协工序已存在"); + } return R.status(mesOemProcessService.updateById(mesOemProcess)); } @@ -104,6 +114,10 @@ public class OemProcessController extends BladeController { @ApiOperationSupport(order = 6) @Operation(summary = "新增或修改", description = "传入mesOemProcess") public R submit(@Valid @RequestBody OemProcessEntity mesOemProcess) { + OemProcessEntity one = mesOemProcessService.getOne(Wrappers.lambdaQuery().eq(OemProcessEntity::getProcessId, mesOemProcess.getProcessId())); + if (one != null && !one.getId().equals(mesOemProcess.getId())) { + return R.fail("外协工序已存在"); + } return R.status(mesOemProcessService.saveOrUpdate(mesOemProcess)); } 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 1f87e8f5..03b3a407 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 @@ -12,10 +12,14 @@ import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; +import org.springblade.desk.oem.pojo.excel.OemMeritsExcel; import org.springblade.desk.oem.pojo.excel.OemStatementExcel; +import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; import org.springblade.desk.oem.pojo.request.OemSettleAccountsSave; 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.web.bind.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -27,6 +31,7 @@ import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.excel.util.ExcelUtil; +import java.util.ArrayList; import java.util.Map; import java.util.List; @@ -62,7 +67,7 @@ public class OemStatementController extends BladeController { */ @GetMapping("/page") @ApiOperationSupport(order = 3) - @Operation(summary = "分页", description = "传入mesOemStatement") + @Operation(summary = "分页", description = "【未结算】rosStatusList传1;【结算中】rosStatusList传2;【结算异常】rosStatusList传3;【结算完成】rosStatusList传-1,4") public R> page(StatementQuery mesOemStatement, Query query) { IPage pages = mesOemStatementService.selectOemStatementPage(Condition.getPage(query), mesOemStatement); return R.data(pages); @@ -118,17 +123,70 @@ public class OemStatementController extends BladeController { return mesOemStatementService.oemSettleAccounts(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice(), oemSettleAccountsSave.getPutStoreDate()); } + /** + * 外协预结算-预览 + */ + @PostMapping("/preSettlement") + @ApiOperationSupport(order = 8) + @Operation(summary = "外协预结算-预览", description = "") + public R> preSettlement(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) { + return R.data(mesOemStatementService.preSettlement(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice())); + } + + /** + * 外协结算批量审核 + */ + @PostMapping("/approval") + @ApiOperationSupport(order = 9) + @Operation(summary = "外协结算批量审核", description = "") + public R approval(@Valid @RequestBody OemSettleAccountsApproval oemSettleAccountsApproval) { + return mesOemStatementService.approval(oemSettleAccountsApproval); + } + + /** + * 外协结算无需结算 + */ + @PostMapping("/noSettlement") + @ApiOperationSupport(order = 10) + @Operation(summary = "外协结算无需结算", description = "") + public R noSettlement(@RequestBody List list) { + return mesOemStatementService.notNeedSettlement(list); + } /** * 导出数据 */ @GetMapping("/export-mesOemStatement") - @ApiOperationSupport(order = 9) + @ApiOperationSupport(order = 12) @Operation(summary = "导出数据", description = "传入mesOemStatement") - public void exportOemStatement(@Parameter(hidden = true) @RequestParam Map mesOemStatement, BladeUser bladeUser, HttpServletResponse response) { - QueryWrapper queryWrapper = Condition.getQueryWrapper(mesOemStatement, OemStatementEntity.class); - List list = mesOemStatementService.exportOemStatement(queryWrapper); - ExcelUtil.export(response, "外协结算单数据" + DateUtil.time(), "外协结算单数据表", list, OemStatementExcel.class); + public void exportOemStatement(StatementQuery mesOemStatement, Query query, BladeUser bladeUser, HttpServletResponse response) { + query.setSize(9999); + IPage pages = mesOemStatementService.selectOemStatementPage(Condition.getPage(query), mesOemStatement); + List list = pages.getRecords(); + List excels = new ArrayList<>(); + for (StatementVO statementVO : list) { + OemStatementExcel excel = new OemStatementExcel(); + BeanUtils.copyProperties(statementVO, excel); + excels.add(excel); + } + ExcelUtil.export(response, "外协结算单数据" + DateUtil.time(), "外协结算单数据表", excels, OemStatementExcel.class); + } + + /** + * 外协预结算导出数据 + */ + @PostMapping("/export-preSettlement") + @ApiOperationSupport(order = 13) + @Operation(summary = "外协预结算-导出", description = "传入mesOemStatement") + public void exportPreSettlement(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave, BladeUser bladeUser, HttpServletResponse response) { + List list = mesOemStatementService.preSettlement(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice()); + List excels = new ArrayList<>(); + for (StatementVO statementVO : list) { + OemStatementExcel excel = new OemStatementExcel(); + BeanUtils.copyProperties(statementVO, excel); + excels.add(excel); + } + ExcelUtil.export(response, "外协预结算单数据" + DateUtil.time(), "外协预结算单数据表", excels, OemStatementExcel.class); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemMeritsMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemMeritsMapper.xml index bea568ad..1f5c5ecc 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemMeritsMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemMeritsMapper.xml @@ -71,8 +71,8 @@ om.*, oem.oc_name AS oem_name, oem.code AS oem_code, - ca.code AS ca_code, - ca.name AS ca_name + ca.ca_code, + ca.ca_name from MES_OEM_MERITS om LEFT JOIN BS_OEM oem ON om.oc_id = oem.id LEFT JOIN BS_CRAFT_ABILITY ca ON om.ca_id = ca.id diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml index 25adf0ba..29848a70 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml @@ -16,6 +16,7 @@ + @@ -44,6 +45,9 @@ AND mop.OEM_PROCESS_CODE LIKE CONCAT('%', CONCAT(#{query.oemProcessCode}, '%')) + + AND mop.MANUAL = #{query.manual} + ORDER BY mop.CREATE_TIME DESC 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 979331de..966cfc78 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 @@ -20,6 +20,7 @@ + @@ -41,6 +42,7 @@ + @@ -59,6 +61,7 @@ + @@ -92,6 +95,7 @@ d.BATCH_NO, wm_concat(to_char(e.PRODUCT_IDENT)) AS PROD_IDENT, -- g.BOP_NAME, + wm_concat(g.MANUAL) AS MANUAL, wm_concat(to_char(d.PUT_STORE_TIME, 'yyyy-MM-dd')) AS PUT_STORE_TIME, wm_concat(d.MAKE_QTY) AS MAKE_QTY, wm_concat(to_char(e.YP_AREA, 'fm99999999999999999990.9999999999')) AS YP_AREA, @@ -102,7 +106,7 @@ wm_concat(to_char(p.plate_thickness)) AS plate_thickness, d.id as WO_ID, c.id as OC_ID, - g.id as BOP_ID, + g.id as OP_ID, a.id as WP_ID, h.id, wm_concat(to_char(h.UNIT_PRICE)) AS UNIT_PRICE, @@ -110,6 +114,7 @@ wm_concat(to_char(h.TOTAL_PRICE)) AS TOTAL_PRICE, wm_concat(to_char(h.QUOTATION)) AS QUOTATION, wm_concat(to_char(h.MEMO)) AS MEMO, + wm_concat(to_char(h.APPROVAL_STATUS)) AS APPROVAL_STATUS, 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, @@ -169,6 +174,9 @@ AND e.PRODUCT_IDENT = #{query.prodIdent} + + AND g.manual = #{query.manual} + AND (f.WO_CODE LIKE CONCAT('%', CONCAT(#{query.woCode}, '%')) OR d.WO_CODE LIKE CONCAT('%', CONCAT(#{query.woCode}, '%'))) @@ -193,6 +201,13 @@ #{id} + + AND h.APPROVAL_STATUS IN + + #{status} + + GROUP BY g.PROCESS_ID, a.ID, c.OC_NAME, c.ID, g.ID, d.ID, d.BATCH_NO, c.CODE, a.HOUR_QUOTA, e.yo_code, i.ca_name, e.use_dept,b.name,b.code,h.id diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemMeritsService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemMeritsService.java index 407c654e..4e542b67 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemMeritsService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemMeritsService.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import java.time.LocalDate; +import java.util.Date; import java.util.List; /** @@ -45,7 +46,7 @@ public interface IOemMeritsService extends BaseService { * @param entities * @return */ - R applyOemMerits(List entities, LocalDate date); + R applyOemMerits(List entities, Date date); /** * 维护厂家绩效 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 a1a44e4b..4c2a4ee9 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import org.springblade.core.tool.api.R; import org.springblade.desk.oem.pojo.entity.OemStatementEntity; import org.springblade.desk.oem.pojo.excel.OemStatementExcel; +import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; import org.springblade.desk.oem.pojo.request.StatementQuery; import org.springblade.desk.oem.pojo.vo.OemStatementVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -48,4 +49,30 @@ public interface IOemStatementService extends BaseService { * @return */ R oemSettleAccounts(List statementVOS, BigDecimal price, LocalDate putStoreDate); + + /** + * 预结算 + * + * @param statementVOS + * @param price + * @return + */ + List preSettlement(List statementVOS, BigDecimal price); + + /** + * 结算单审核 + * + * @param oemSettleAccountsApproval + * @return + */ + R approval(OemSettleAccountsApproval oemSettleAccountsApproval); + + /** + * 无需结算 + * + * @param list + * @return + */ + R notNeedSettlement(List list); + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemAndAbilityServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemAndAbilityServiceImpl.java index 2952125f..b47dc677 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemAndAbilityServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemAndAbilityServiceImpl.java @@ -62,6 +62,9 @@ public class OemAndAbilityServiceImpl extends BaseServiceImpl list, List deleteIds) { + if (deleteIds != null && deleteIds.size() > 0) { + baseMapper.deleteByIds(deleteIds); + } //去重 Set uniqueSet = new LinkedHashSet<>(list.size()); List deduplicatedList = new ArrayList<>(); @@ -80,20 +83,16 @@ public class OemAndAbilityServiceImpl extends BaseServiceImpl 0) { - baseMapper.deleteByIds(deleteIds); - } return R.status(true); } @@ -115,6 +114,10 @@ public class OemAndAbilityServiceImpl extends BaseServiceImpl oemMap = oems.stream().collect(Collectors.toMap( entity -> entity.getCode(), entity -> entity.getId())); + ocCodeSet.removeAll(oemMap.keySet()); + if (ocCodeSet.size() > 0) { + return R.fail("外协厂家:" + String.join(",", ocCodeSet) + "不存在。"); + } //根据工艺编码获取相关工艺 LambdaQueryWrapper processAbilityLambdaQueryWrapper = new LambdaQueryWrapper<>(); processAbilityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(caCodeSet), CraftAbilityEntity::getCaCode, caCodeSet); // [8](@ref) @@ -122,6 +125,10 @@ public class OemAndAbilityServiceImpl extends BaseServiceImpl processAbilitiyMap = processAbilities.stream().collect(Collectors.toMap( entity -> entity.getCaCode(), entity -> entity.getId())); + caCodeSet.removeAll(processAbilitiyMap.keySet()); + if (caCodeSet.size() > 0) { + return R.fail("工艺能力:" + String.join(",", caCodeSet) + "不存在。"); + } //组装外协绩效模板 List validList = importList.stream() .filter(entity -> entity.getOcCode() != null && entity.getCaCode() != null) // 1. 过滤空代码 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 1ef04121..24157c93 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 @@ -52,13 +52,13 @@ public class OemMeritsServiceImpl extends BaseServiceImpl entities, LocalDate date) { + public R applyOemMerits(List entities, Date date) { if (null == date) { return R.fail("无效日期"); } List saves = new ArrayList<>(); for (OemMeritsEntity entity : entities) { - entity.setUpdateTime(DateUtils.toDate(date)); + entity.setUpdateTime(date); entity.setOmStatus(OemMeritsEntity.NEW_DATA); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.apply("TO_CHAR(update_time, 'YYYY-MM') = TO_CHAR({0}, 'YYYY-MM')", date) @@ -78,7 +78,9 @@ public class OemMeritsServiceImpl extends BaseServiceImpl 0) { + baseMapper.insertOrUpdate(saves); + } return R.status(true); } 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 5ed1f41d..be3d70f6 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 @@ -2,6 +2,7 @@ package org.springblade.desk.oem.service.impl; import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.StringUtil; @@ -89,6 +90,10 @@ public class OemProcessServiceImpl extends BaseServiceImpllambdaQuery().eq(OemProcessEntity::getProcessId, oemProcessEntity.getProcessId())); + if (one != null) { + oemProcessEntity.setId(one.getId()); + } saves.add(oemProcessEntity); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java index c2804fd2..e1823754 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java @@ -1,7 +1,9 @@ package org.springblade.desk.oem.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; @@ -11,6 +13,7 @@ import org.springblade.desk.oem.mapper.PlatingTypeRulesMapper; import org.springblade.desk.oem.pojo.entity.OemStatementEntity; import org.springblade.desk.oem.pojo.entity.PlatingTypeRulesEntity; import org.springblade.desk.oem.pojo.excel.OemStatementExcel; +import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; import org.springblade.desk.oem.pojo.request.PriceSheetQuery; import org.springblade.desk.oem.pojo.request.StatementQuery; import org.springblade.desk.oem.mapper.OemStatementMapper; @@ -70,7 +73,73 @@ 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); + if (priceSheetAllList.isEmpty()) { //【结算异常】 statementVOList.forEach(statementVO -> { @@ -90,13 +159,13 @@ public class OemStatementServiceImpl extends BaseServiceImpl { List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); - if (matchedPriceSheets.isEmpty()) { + if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { return; } statementVO.setPriceSheetList(matchedPriceSheets); //4.匹配规则,过滤出唯一报价 //①.匹配车间订单号 - if (ruleWoNo(statementVO)) { + if (ruleWoNo(statementVO, true)) { return; } //②.匹配物料名称和质量等级 @@ -108,7 +177,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl preSettlement(List statementVOS, BigDecimal price) { + //1.以外协厂商分组的Map<厂家名称, 待结算工序结算单列表> + Map> oemAndStatementMap = statementVOS.stream().collect(Collectors.groupingBy(StatementVO::getOcName)); + for (Map.Entry> listEntry : oemAndStatementMap.entrySet()) { + //外协厂商下全部需要结算的结算单 + List statementVOList = listEntry.getValue(); + + //2.以外协名称查出的全部报价单 + String oemName = listEntry.getKey(); +// 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); + if (priceSheetAllList.isEmpty()) { + //【结算异常】 + statementVOList.forEach(statementVO -> { + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); + }); + } else { + //工序分组Map<工序, 报价列表> + Map> priceSheetMap = priceSheetAllList.stream() + .collect(Collectors.groupingBy( + PriceSheetVO::getGxinfo, + () -> new TreeMap<>(Collections.reverseOrder()), // 按键的倒序排序 + Collectors.collectingAndThen( + Collectors.toList(), + list -> { + // 对每个分组内的列表按生效日期倒序排序 + return list.stream() + .sorted(Comparator.comparing(PriceSheetVO::getStartdat).reversed()) + .collect(Collectors.toList()); + } + ) + )); + //3.为每个结算单匹配报价集合 + statementVOList.forEach(statementVO -> { + List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); + if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { + return; + } + statementVO.setPriceSheetList(matchedPriceSheets); + //4.匹配规则,过滤出唯一报价 + //①.匹配车间订单号 + if (ruleWoNo(statementVO, false)) { + return; + } + //②.匹配物料名称和质量等级 + if (rulePartNameAndProdIdent(statementVO)) { + return; + } + //③.匹配金价银价 + if (ruleGoldAndSilverPrices(statementVO, price)) { + return; + } + //④.涂色标、涂色带、涂箭头 + if (ruleColor(statementVO, false)) { + return; + } + //⑤.物料号匹配 + if (ruleGoods(statementVO)) { + return; + } + //⑥.阶梯价匹配 + if (ruleTieredPricing(statementVO, false)) { + return; + } + }); + } + } + return statementVOS; + } + + @Override + public R approval(OemSettleAccountsApproval oemSettleAccountsApproval) { + List ids = oemSettleAccountsApproval.getIds(); + if (CollectionUtils.isEmpty(ids)) { + return R.fail("未选取结算单"); + } + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + + if (3 == oemSettleAccountsApproval.getApprovalStatus()) { + //审核通过 + updateWrapper + .set("approval_status", OemStatementEntity.APPROVAL_STATUS_VIA) + .set("memo", "外协结算完成") + .set("ros_status", OemStatementEntity.OK_SETTLEMENT) + .in("id", ids); + } else { + //审核不通过:(1)原因为不需要结算的更新为【无需结算】(2)原因是基础数据有误的更新为【结算异常】 + if (1 == oemSettleAccountsApproval.getReason()) { + updateWrapper + .set("approval_status", OemStatementEntity.APPROVAL_STATUS_VIA) + .set("memo", "无需结算") + .set("ros_status", OemStatementEntity.NOT_NEED_SETTLEMENT) + .in("id", ids); + } else { + updateWrapper + .set("approval_status", OemStatementEntity.APPROVAL_STATUS_FAIL) + .set("memo", "基础数据有误") + .set("ros_status", OemStatementEntity.ERR_SETTLEMENT) + .in("id", ids); + } + } + + return R.status(baseMapper.update(null, updateWrapper) > 0); + } + + @Override + public R notNeedSettlement(List list) { + if (null != list && list.size() > 0) { + List saves = list.stream() + .map(statementVO -> { + OemStatementEntity entity = new OemStatementEntity(); + BeanUtils.copyProperties(statementVO, entity); + entity.setApprovalStatus(OemStatementEntity.APPROVAL_STATUS_VIA); + entity.setRosStatus(OemStatementEntity.NOT_NEED_SETTLEMENT); + entity.setMemo("无需结算"); + entity.setUpdateTime(new Date()); + return entity; + }) + .collect(Collectors.toList()); + baseMapper.insertOrUpdate(saves); + } + return R.fail("未选取结算单"); + } + /** * 获取报价单列表 */ @@ -145,13 +412,30 @@ public class OemStatementServiceImpl extends BaseServiceImpl> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ -// setSize(99999); -// }}); + R> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ + setSize(99999); + }}); + + if (pageR != null && pageR.getData() != null) { + return pageR.getData().getRecords(); + } + return Collections.emptyList(); + } + + /** + * 获取报价单列表 + */ + private List getPriceSheets(String oemName) { + PriceSheetQuery query = new PriceSheetQuery(); + query.setOcName(oemName); + + R> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ + setSize(99999); + }}); -// if (pageR != null && pageR.getData() != null) { -// return pageR.getData().getRecords(); -// } + if (pageR != null && pageR.getData() != null) { + return pageR.getData().getRecords(); + } return Collections.emptyList(); } @@ -177,9 +461,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetList = statementVO.getPriceSheetList(); //取出匹配车间订单号的报价和无车间订单号的报价 Map> woNoPriceSheetMap = priceSheetList.stream() @@ -194,7 +479,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl woNoPriceSheetList = woNoPriceSheetMap.get(statementVO.getWoCode()); //多条【结算异常】 - if (woNoPriceSheetList.size() > 1) { + if (woNoPriceSheetList.size() > 1 && flag) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,工作订单号【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), statementVO.getWoCode())); //结算异常:多条报价记录结算结果 @@ -205,6 +490,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetList = statementVO.getPriceSheetList(); String plateGoodsCode = statementVO.getPlateGoodsCode(); //判断传入参数的当前金价银价 > 0 && 零件镀层物料编码不为空,则需匹配规则 - if (price.compareTo(BigDecimal.ZERO) > 0 && StringUtils.isEmpty(plateGoodsCode)) { + if (price.compareTo(BigDecimal.ZERO) > 0 && !StringUtils.isEmpty(plateGoodsCode)) { //取出所有备注 Map> remarkPriceSheetMap = priceSheetList.stream() .filter(priceSheet -> { @@ -297,9 +583,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetList = statementVO.getPriceSheetList(); //结算单色标色带箭头数量>0,需要匹配报价里色标色带箭头 //如果结算单没有数量,直接返回false进入下个规则 @@ -336,7 +623,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 0 && prtnoPriceSheetMap.containsKey("涂箭头")) { List tjtPriceSheetList = prtnoPriceSheetMap.get("涂箭头"); - if (tjtPriceSheetList.size() > 1) { + if (tjtPriceSheetList.size() > 1 && flag) { //结算异常:多条报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂箭头数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tjtNum)); @@ -350,7 +637,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 0 && prtnoPriceSheetMap.containsKey("涂色带")) { List tsdPriceSheetList = prtnoPriceSheetMap.get("涂色带"); - if (tsdPriceSheetList.size() > 1) { + if (tsdPriceSheetList.size() > 1 && flag) { //结算异常:多条报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色带数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tsdNum)); @@ -364,7 +651,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 0 && prtnoPriceSheetMap.containsKey("涂色标")) { List tsbPriceSheetList = prtnoPriceSheetMap.get("涂色标"); - if (tsbPriceSheetList.size() > 1) { + if (tsbPriceSheetList.size() > 1 && flag) { //结算异常:多条报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色标数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tsbNum)); @@ -379,12 +666,13 @@ public class OemStatementServiceImpl extends BaseServiceImpl 0) { statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); + statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); statementVO.setTotalPrice(totalPrice); statementVO.setMemo("结算中"); statementVO.setQuotation(quotation); return true; } else { - //结算异常:多条报价记录结算结果 + //结算异常:无报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】涂色标、涂色带、涂箭头匹配无报价记录", statementVO.getOcName(), statementVO.getPartName())); return true; @@ -446,7 +734,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl> map = priceSheetList.stream().collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); + Map> map = priceSheetList.stream() + .filter(vo -> vo.getPrtno() != null) // 过滤掉prtno为null的对象 + .collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); //1.精确匹配,完整的镀种 if (map.containsKey(plate)) { statementVO.setPriceSheetList(map.get(plate)); @@ -454,9 +744,8 @@ public class OemStatementServiceImpl extends BaseServiceImpl queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(PlatingTypeRulesEntity::getOrderPlat, plate) - .orderByDesc(PlatingTypeRulesEntity::getCreateTime) // 按创建时间降序 - .last("AND ROWNUM = 1"); // 只取第一条 + queryWrapper.apply("ROWNUM = 1").eq(PlatingTypeRulesEntity::getOrderPlat, plate) + .orderByDesc(PlatingTypeRulesEntity::getCreateTime); PlatingTypeRulesEntity platingTypeRulesEntity = platingTypeRulesMapper.selectOne(queryWrapper); if (platingTypeRulesEntity == null || StringUtils.isBlank(platingTypeRulesEntity.getQuotationPlat())) { return false; @@ -481,7 +770,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl> map = priceSheetList.stream().collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); + Map> map = priceSheetList.stream() + .filter(vo -> vo.getPrtno() != null) // 过滤掉prtno为null的对象 + .collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); //1.精确匹配,完整的零件号 if (map.containsKey(partCode)) { statementVO.setPriceSheetList(map.get(partCode)); @@ -491,7 +782,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl> newMap = map.entrySet().stream() .filter(entry -> entry.getKey().contains("-%")) .collect(Collectors.toMap( - entry -> entry.getKey().split("%")[0], // 只保留%之前的部分 + entry -> entry.getKey().split("-%")[0], // 只保留%之前的部分 Map.Entry::getValue )); List priceSheetVOList = newMap.entrySet().stream() @@ -519,7 +810,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl> map = priceSheetList.stream().collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); + Map> map = priceSheetList.stream() + .filter(vo -> vo.getPrtno() != null) // 过滤掉prtno为null的对象 + .collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); //镀层厚度值相等,保存报价集合 if (map.containsKey(plateThickness)) { statementVO.setPriceSheetList(map.get(plateThickness)); @@ -532,9 +825,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetList = statementVO.getPriceSheetList(); //如果无报价,结算异常:无报价记录结算结果 if (null == priceSheetList || priceSheetList.isEmpty()) { @@ -549,6 +843,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetVOS = StairPriceSheetMap.get("非阶梯价"); if (null == priceSheetVOS || priceSheetVOS.isEmpty()) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); return true; - } else if (null != priceSheetVOS && priceSheetVOS.size() > 1) { + } else if (null != priceSheetVOS && priceSheetVOS.size() > 1 && flag) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); return true; } //唯一使用此报价单**结算** @@ -589,6 +884,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1) { List priceSheetVOList = priceSheetVOS.stream() .filter(vo -> { + //现场数据库里lower是上限,upper反而是下限 double lower = Double.parseDouble(vo.getLower()); double upper = Double.parseDouble(vo.getUpper()); - return ypAreaValue >= lower && ypAreaValue <= upper; + return ypAreaValue >= upper && ypAreaValue <= lower; }).collect(Collectors.toList()); - if (null != priceSheetVOList && priceSheetVOList.size() > 1) { + if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单件面积)")); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单件面积)")); return true; - } else if (null != priceSheetVOList && priceSheetVOList.size() == 1) { + } else if ((null != priceSheetVOList && priceSheetVOList.size() == 1) || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) { //唯一使用此报价单**结算** PriceSheetVO priceSheet = priceSheetVOList.get(0); BigDecimal unitPrice = new BigDecimal(priceSheet.getPrice()); BigDecimal qty = new BigDecimal(statementVO.getMakeQty()); statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); + statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); statementVO.setUnitPrice(unitPrice); statementVO.setUnit(priceSheet.getPrtum()); statementVO.setTotalPrice(unitPrice.multiply(qty)); @@ -629,7 +927,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1) { List priceSheetVOList = priceSheetVOS.stream() .filter(vo -> { + //现场数据库里lower是上限,upper反而是下限 double lower = Double.parseDouble(vo.getLower()); double upper = Double.parseDouble(vo.getUpper()); - return totalAreaValue >= lower && totalAreaValue <= upper; + return totalAreaValue >= upper && totalAreaValue <= lower; }).collect(Collectors.toList()); - if (null != priceSheetVOList && priceSheetVOList.size() > 1) { + if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单批面积)")); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单批面积)")); return true; - } else if (null != priceSheetVOList && priceSheetVOList.size() == 1) { + } else if (null != priceSheetVOList && priceSheetVOList.size() == 1 || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) { //唯一使用此报价单**结算** PriceSheetVO priceSheet = priceSheetVOList.get(0); BigDecimal unitPrice = new BigDecimal(priceSheet.getPrice()); BigDecimal qty = new BigDecimal(statementVO.getMakeQty()); statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); + statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); statementVO.setUnitPrice(unitPrice); statementVO.setUnit(priceSheet.getPrtum()); statementVO.setTotalPrice(unitPrice.multiply(qty)); @@ -667,7 +967,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl { public WorkOrder checkPrWorkOrder(String cardNo); + void handleBaoZhuangWorkPlan(List wpList, YieldOrder yo); + + boolean saveProCheck(InspectionTask inspectionTask); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java index 21040ee8..5894628e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java @@ -264,6 +264,29 @@ public class PdaLoadServiceImpl extends BaseServiceImpl wpList, YieldOrder yo) { + /*if (wpList == null || wpList.size() == 0) { + return; + } + for (WorkPlan wp : wpList) { + // 如果工序是包装,并且工艺能力是包装、加工单位为空 + if ("包装".equals(wp.getProcedureSet().getPpsName()) && (wp.getBsCraftAbility() != null && wp.getBsCraftAbility().getCaName().contains("包装")) + && wp.getMakeTeam() == null && wp.getOemCustomer() == null) { + // 获取当前工序之前的主工序 + PrWorkPlan prWorkPlan = prWorkPlanService.fontMainProcess(wp.getPrWorkOrder().getWoId()); + if (prWorkPlan != null && prWorkPlan.getWpId() != null) { + if (prWorkPlan.getOemCustomer() != null && prWorkPlan.getOemCustomer().getOcId() != null) { + wp.setOemCustomer(prWorkPlan.getOemCustomer()); + wp.setOem("1"); +// } else { +// wp.setMakeTeam(prWorkPlan.getMakeTeam()); + } + } + } + }*/ + } + private WorkOrder checkWo(String cardNo) { WorkOrder prWorkOrder = workOrderService.getOne(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getCardNo, cardNo)); if (prWorkOrder == null) { 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 9c5ca259..438d087c 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 @@ -29,6 +29,7 @@ import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.produce.mapper.*; import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.enums.ProcessCycleEnum; +import org.springblade.desk.produce.service.IPdaLoadService; import org.springblade.desk.produce.service.IPlateAroundService; import org.springblade.desk.produce.service.IWorkOrderRunService; import org.springblade.desk.produce.service.IWorkOrderService; @@ -81,6 +82,8 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl