diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskBillDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskBillDTO.java index 9a556266..dfc88a2e 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskBillDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskBillDTO.java @@ -49,8 +49,10 @@ public class DsTaskBillDTO extends DsTaskBillEntity { private String fillMemo; - private List fillingDetailList; +// private List fillingDetailList; +// +// private List deleteIds; - private List deleteIds; + private String fileUrl; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java index 90662a8a..d523f8b4 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java @@ -325,4 +325,23 @@ public class DsPartEntity extends BaseEntity { @Schema(description = "子件类型") private String subType; + /** + * 玻璃饼直径 + */ + @Schema(description = "玻璃饼直径") + private BigDecimal blbDiameter; + + /** + * 壳体最大外径 + */ + @Schema(description = "壳体最大外径") + private BigDecimal externalDiameter; + + + /** + * 镀层厚度2 + */ + @Schema(description = "镀层厚度2") + private BigDecimal plateThicknessTwo; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java index fb61ae42..39d036a5 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java @@ -122,4 +122,10 @@ public class DsSpecialProEntity extends BaseEntity { @Schema(description = "设备名称") private String equipmentName; + /** + * 同步状态 + */ + @Schema(description = "同步状态") + private String syncStatus; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskBillEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskBillEntity.java index ce23357d..414e1a2a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskBillEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskBillEntity.java @@ -123,6 +123,12 @@ public class DsTaskBillEntity extends BaseEntity { @Schema(description = "设备名称") private String equipmentName; + /** + * 文件路径 + */ + @Schema(description = "文件路径") + private String fileUrl; + /** * 未处理 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsSpecialProVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsSpecialProVO.java index dc01eeb7..5a0d5f3d 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsSpecialProVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsSpecialProVO.java @@ -25,6 +25,7 @@ */ package org.springblade.desk.dashboard.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import org.springblade.desk.dashboard.pojo.entity.DsSpecialProEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -42,4 +43,10 @@ public class DsSpecialProVO extends DsSpecialProEntity { @Serial private static final long serialVersionUID = 1L; + /** + * 文件路径 + */ + @Schema(description = "文件路径") + private String fileUrl; + } 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 index 044d59f7..23ba8440 100644 --- 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 @@ -15,9 +15,9 @@ public class OemSettleAccountsApproval { /** * 结算单IDList */ - @Schema(description = "结算单IDList", required = true) + @Schema(description = "结算单IDStrList", required = true) @NotNull(message = "结算单ID不能为空") - private List ids; + private String ids; /** * 审批意见 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsSave.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsSave.java index f9e36d9d..2fc813c8 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsSave.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsSave.java @@ -18,7 +18,7 @@ public class OemSettleAccountsSave { @DateTimeFormat(pattern = "yyyy-MM-dd") @Schema(description = "镀后入库时间") - @NotNull(message = "镀后入库时间不能为空") +// @NotNull(message = "镀后入库时间不能为空") private LocalDate putStoreDate; @Schema(description = "现执行价格") 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 cc2f8956..1ebfe4e4 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 @@ -54,7 +54,7 @@ public class StatementQuery { * 工序IDS */ @Schema(description = "工序IDs(传字符串1,2,3,4)") - private String ppsIds; + private String psCode; /** * 外协厂商IDS */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartRelationController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartRelationController.java index a26e6583..8ca1e3fa 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartRelationController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartRelationController.java @@ -38,6 +38,8 @@ 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.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.service.IDsPartService; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -50,6 +52,8 @@ import org.springblade.core.boot.ctrl.BladeController; 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; import jakarta.servlet.http.HttpServletResponse; @@ -68,6 +72,8 @@ public class DsPartRelationController extends BladeController { private final IDsPartRelationService dsPartRelationService; + private final IDsPartService dsPartService; + /** * 部件-子件关联表 详情 */ @@ -100,6 +106,24 @@ public class DsPartRelationController extends BladeController { return R.data(pages); } + @GetMapping("/getSubParts") + @ApiOperationSupport(order = 3) + @Operation(summary = "分页", description = "传入dsPartRelation") + public R> getSubParts(String partCode) { + List pages = new ArrayList<>(); + + QueryWrapper relationQuery = new QueryWrapper<>(); + relationQuery.eq("part_code", partCode); + List list = dsPartRelationService.list(relationQuery); + if(null != list && list.size() > 0){ + List childPartIds = list.stream().map(DsPartRelationEntity::getChildPartId).toList(); + QueryWrapper partQuery = new QueryWrapper<>(); + partQuery.in("id", childPartIds); + pages = dsPartService.list(partQuery); + } + return R.data(pages); + } + /** * 部件-子件关联表 新增 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java index 8b50aeb9..6e7f70c0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java @@ -25,6 +25,7 @@ */ package org.springblade.desk.dashboard.controller; +import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -41,6 +42,7 @@ import org.springblade.core.tool.utils.Func; import org.springblade.desk.dashboard.pojo.dto.DsTaskBillDTO; import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity; import org.springblade.desk.dashboard.service.IBsFillingDetailService; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -185,10 +187,12 @@ public class DsTaskBillController extends BladeController { public R handleDsTaskBill(@Valid @RequestBody DsTaskBillDTO dto) { Long tbId = dto.getTbId(); String fillMemo = dto.getFillMemo(); - List fillingDetailList = dto.getFillingDetailList(); - List deleteIds = dto.getDeleteIds(); + String fileUrl = dto.getFileUrl(); + if(tbId == null || StringUtils.isEmpty(fileUrl)){ + return R.fail("tbId 和 fileUrl 不能为空"); + } - return R.status(dsTaskBillService.handleDsTaskBill(tbId,fillMemo,fillingDetailList,deleteIds)); + return R.status(dsTaskBillService.handleDsTaskBill(tbId,fillMemo,fileUrl)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml index cbdce1b4..0a3644e6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml @@ -127,6 +127,10 @@ + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml index 6e1e58bb..07075cd8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml @@ -24,17 +24,20 @@ + - + select sp.*,tb.FILE_URL from DS_SPECIAL_PRO sp left join DS_TASK_BILL tb on sp.ID = tb.SP_ID + where sp.is_deleted = 0 - and WC_ID = #{dsSpecialPro.wcId} + and sp.WC_ID = #{dsSpecialPro.wcId} - and EQUIPMENT_ID = #{dsSpecialPro.equipmentId} + and sp.EQUIPMENT_ID = #{dsSpecialPro.equipmentId} + order by sp.UPDATE_TIME desc @@ -46,6 +49,8 @@ SELECT * FROM ds_special_pro a WHERE IS_DELETED = 0 AND to_char(NVL(a.last_due_time, a.create_time) - a.rem_days, 'yyyy-mm-dd HH24:MI:SS') < #{nextRunTimeStr} + AND a.SYNC_STATUS = 0 + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskBillMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskBillMapper.xml index 92a0d70c..2ee3767f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskBillMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskBillMapper.xml @@ -25,6 +25,7 @@ + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskBillService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskBillService.java index d0196b16..e470735b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskBillService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskBillService.java @@ -68,9 +68,8 @@ public interface IDsTaskBillService extends BaseService { *处理特殊工艺任务 * @param tbId * @param fillMemo - * @param fillingDetailList - * @param deleteIds + * @param fileUrl * @return */ - boolean handleDsTaskBill(Long tbId, String fillMemo, List fillingDetailList, List deleteIds); + boolean handleDsTaskBill(Long tbId, String fillMemo,String fileUrl); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskBillServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskBillServiceImpl.java index 5ec3a6f4..fe30c926 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskBillServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskBillServiceImpl.java @@ -26,6 +26,7 @@ package org.springblade.desk.dashboard.service.impl; import com.alibaba.druid.sql.visitor.functions.Function; import com.google.common.base.Strings; +import lombok.extern.slf4j.Slf4j; import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity; import org.springblade.desk.dashboard.pojo.entity.DsSpecialProEntity; import org.springblade.desk.dashboard.pojo.entity.DsTaskBillEntity; @@ -53,6 +54,7 @@ import java.util.List; * @author BladeX * @since 2025-11-22 */ +@Slf4j @Service public class DsTaskBillServiceImpl extends BaseServiceImpl implements IDsTaskBillService { @@ -82,12 +84,10 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl spList = specialProService.listSpByTime(nextRunTimeStr); if(CollectionUtils.isEmpty(spList)){ return; @@ -97,10 +97,6 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl fillingDetailList, List deleteIds) { + public boolean handleDsTaskBill(Long tbId, String fillMemo,String fileUrl) { DsTaskBillEntity dsTaskBill = taskBillMapper.selectById(tbId); dsTaskBill.setFillMemo(fillMemo); dsTaskBill.setTbStatus(DsTaskBillEntity.TBSTATUS_END); + dsTaskBill.setFileUrl(fileUrl); int update = taskBillMapper.updateById(dsTaskBill); //存入上次处理时间 @@ -136,16 +142,6 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl 0) { - for (BsFillingDetailEntity fillingDetail : fillingDetailList) { - fillingDetail.setBusId(tbId); - fillingDetail.setBusType(BsFillingDetailEntity.DS_TASK_BILL); - fillingDetailService.save(fillingDetail); - } - } - if (deleteIds.size() > 0) { - fillingDetailService.deleteLogic(deleteIds); - } return true; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java index 316451bf..55417631 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java @@ -356,7 +356,12 @@ public class DsTaskingServiceImpl extends BaseServiceImpl partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); for (DsPartRelationEntity dsPartRelationEntity : partRelationEntityList) { DsPartEntity zPartEntity = partService.getById(dsPartRelationEntity.getChildPartId()); - if(null != zPartEntity){ + assert zPartEntity != null; + if(null != zPartEntity.getSinTerType()){ + List zCraftList = craftService.getPartCraft(zPartEntity.getId(),"2"); + if(CollectionUtils.isEmpty(zCraftList) ){ + throw new ServiceException("子件工艺缺失"); + } //检验子件超期 if(null == zPartEntity.getNextDue()){ throw new ServiceException("【子件号】"+zPartEntity.getPartCode()+"工艺超期"); @@ -365,13 +370,6 @@ public class DsTaskingServiceImpl extends BaseServiceImpl zCraftList = craftService.getPartCraft(zPartEntity.getId(),"2"); - if(CollectionUtils.isEmpty(zCraftList) ){ - throw new ServiceException("子件工艺缺失"); - } // List zProcessEntities = processService.selectDsProcessByCraftId(zCraft.getId()); // if(CollectionUtils.isEmpty(zProcessEntities)){ // throw new ServiceException("【子件号】工艺未编制工序"); @@ -1005,6 +1003,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl> listForSelect() { + List list = mesOemProcessService.list(); + List listVO = OemProcessWrapper.build().listVO(list); + return R.data(listVO); + } + /** * 外协工序 自定义分页 */ 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 387124a4..bacda0c8 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 @@ -123,8 +123,8 @@ public class OemStatementController extends BladeController { @ApiOperationSupport(order = 8) @Operation(summary = "外协手动结算", description = "") @ApiLog("外协手动结算") - public R oemSettleAccounts(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) { - return mesOemStatementService.oemSettleAccounts(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice(), oemSettleAccountsSave.getPutStoreDate()); + public R oemManualSettlement(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) { + return mesOemStatementService.oemManualSettlement(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice()); } /** 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 bb03b721..47831eb6 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 @@ -194,9 +194,9 @@ #{id} - - AND g.ID IN - + AND g.oem_process_code IN + #{id} 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 45485a51..467f4815 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 @@ -48,7 +48,7 @@ public interface IOemStatementService extends BaseService { * @param putStoreDate 镀后入库时间 * @return */ - R oemSettleAccounts(List statementVOS, BigDecimal price, LocalDate putStoreDate); + R oemManualSettlement(List statementVOS, BigDecimal price); /** * 外协自动结算 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 64579f2f..5bf9343d 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 @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; 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.mapper.PlatingTypeRulesMapper; import org.springblade.desk.oem.pojo.entity.OemStatementEntity; import org.springblade.desk.oem.pojo.entity.PlatingTypeRulesEntity; @@ -68,6 +69,44 @@ public class OemStatementServiceImpl extends BaseServiceImpl statementVOS, BigDecimal price) { + // 初始化成功和失败计数器 + AtomicInteger totalSuccess = new AtomicInteger(0); + AtomicInteger totalError = new AtomicInteger(0); + //按照镀后入库日期分组后,调用结算方法 + Map> groupedMap = statementVOS.stream() + .filter(vo -> vo.getPutStoreTime() != null && !vo.getPutStoreTime().trim().isEmpty()) + .collect(Collectors.groupingBy(StatementVO::getPutStoreTime)); + groupedMap.entrySet().forEach(stringListEntry -> { + R result = oemSettleAccounts(stringListEntry.getValue(), price, LocalDate.parse(stringListEntry.getKey())); + + if (result != null && result.isSuccess()) { + Map data = (Map) result.getData(); + if (data != null) { + Object successObj = data.get("success"); + Object errorObj = data.get("error"); + + if (successObj instanceof Integer) { + totalSuccess.addAndGet((Integer) successObj); + } else if (successObj instanceof Number) { + totalSuccess.addAndGet(((Number) successObj).intValue()); + } + + if (errorObj instanceof Integer) { + totalError.addAndGet((Integer) errorObj); + } else if (errorObj instanceof Number) { + totalError.addAndGet(((Number) errorObj).intValue()); + } + } + } + }); + + return R.data(Map.of( + "success", totalSuccess.get(), + "error", totalError.get() + )); + } + public R oemSettleAccounts(List statementVOS, BigDecimal price, LocalDate putStoreDate) { // 定义计数器 AtomicInteger countSuccess = new AtomicInteger(0); @@ -110,7 +149,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); + statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName)); }); } else { //工序分组Map<工序, 报价列表> @@ -209,13 +248,83 @@ 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); if (priceSheetAllList.isEmpty()) { //【结算异常】 statementVOList.forEach(statementVO -> { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); + statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName)); }); } else { //工序分组Map<工序, 报价列表> @@ -292,76 +401,76 @@ 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()) { // 【结算异常】 statementVOList.forEach(statementVO -> { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); + statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName)); }); } else { // 2. 工序分组Map<工序, 报价列表> @@ -435,7 +544,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl ids = oemSettleAccountsApproval.getIds(); + List ids = Func.toLongList(oemSettleAccountsApproval.getIds()); if (CollectionUtils.isEmpty(ids)) { return R.fail("未选取结算单"); } @@ -568,7 +677,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1 && flag) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,工作订单号【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), statementVO.getWoCode())); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,工作订单号【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), statementVO.getWoCode())); //结算异常:多条报价记录结算结果 return true; } @@ -621,7 +730,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1 && flag) { //结算异常:多条报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂箭头数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tjtNum)); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂箭头数量【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), tjtNum)); return true; } //唯一使用此报价单**结算** @@ -758,7 +867,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1 && flag) { //结算异常:多条报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色带数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tsdNum)); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色带数量【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), tsdNum)); return true; } //唯一使用此报价单**结算** @@ -772,7 +881,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1 && flag) { //结算异常:多条报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色标数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tsbNum)); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色标数量【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), tsbNum)); return true; } //唯一使用此报价单**结算** @@ -792,7 +901,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1) { //结算异常:多条报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料号匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName())); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料号-报价不唯一", statementVO.getOcName(), statementVO.getPartName())); return true; } else { //结算异常:无报价记录结算结果 statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料号匹配无报价记录", statementVO.getOcName(), statementVO.getPartName())); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料号-未找到报价", statementVO.getOcName(), statementVO.getPartName())); return true; } } @@ -951,7 +1060,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价类型【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), String.join(", ", StairPriceSheetMap.keySet()))); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价类型【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), String.join(", ", StairPriceSheetMap.keySet()))); return true; } else if (StairPriceSheetMap.keySet().size() < 1) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价匹配无报价记录", statementVO.getOcName(), statementVO.getPartName())); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价-未找到报价", statementVO.getOcName(), statementVO.getPartName())); return true; } if (StairPriceSheetMap.keySet().contains("非阶梯价")) { @@ -990,11 +1099,11 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetVOS = StairPriceSheetMap.get("非阶梯价"); if (null == priceSheetVOS || priceSheetVOS.isEmpty()) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%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 && flag) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); + statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); return true; } //唯一使用此报价单**结算** @@ -1028,7 +1137,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1 && flag) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%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) || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) { //唯一使用此报价单**结算** @@ -1045,7 +1154,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl 1 && flag) { statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); - statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%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 || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) { //唯一使用此报价单**结算** @@ -1085,14 +1194,14 @@ public class OemStatementServiceImpl extends BaseServiceImpl AND t.WP_ID = #{q.wpId} diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/实验项目管理.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/实验项目管理.xls new file mode 100644 index 00000000..7b7932e9 Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/QA/实验项目管理.xls differ