diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/UrgentPartVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/UrgentPartVO.java index e1e921281..d22d1b0e2 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/UrgentPartVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/UrgentPartVO.java @@ -3,12 +3,16 @@ */ package org.springblade.desk.basic.pojo.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.desk.basic.pojo.entity.UrgentPart; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serial; +import java.util.Date; /** * [急件维护] 视图实体类 @@ -33,4 +37,13 @@ public class UrgentPartVO extends UrgentPart { @Schema(description = "状态名称") private String statusName; + + @Schema(description = "需求交期") + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + private Date requireDateStart; + @Schema(description = "需求交期") + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + private Date requireDateEnd; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java index 11dbdc731..bbd8ce6ed 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java @@ -2,6 +2,7 @@ package org.springblade.desk.oem.pojo.request; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.springblade.core.mp.support.Query; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; @@ -69,4 +70,7 @@ public class PriceSheetQuery { @Schema(description = "价格类型") private String pricetype; + + @Schema(description = "查询条件") + private Query query; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java index ccc10cca3..7e479377f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java @@ -3,6 +3,7 @@ package org.springblade.desk.produce.feign; import org.springblade.core.launch.constant.AppConstant; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; /** * 调度任务同步接口 @@ -20,6 +21,7 @@ public interface IDisTaskingClient { String RECEIVE_ORDER = API_PREFIX + "/receiveOrder"; String RB_TRANSFER_ORDER = API_PREFIX + "/rbTransferOrder"; String UN_BIND_EC = API_PREFIX + "/unBindEc"; + String SAVE_WORK_ORDER_RUN = API_PREFIX + "/saveWorkOrderRun"; /** @@ -43,4 +45,10 @@ public interface IDisTaskingClient { @GetMapping(UN_BIND_EC) boolean unBindEc(); + + /** + * 保存生产运行记录 + */ + @GetMapping(SAVE_WORK_ORDER_RUN) + boolean saveWorkOrderRun(@RequestParam String woId); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java index 0c48a5ad8..7fe7606cc 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java @@ -44,10 +44,10 @@ public interface IErpDataOemClient { /** * 报价单查询 * - * @param query + * @param priceSheetQuery */ @GetMapping(PRICE_SHEET_DATA) - R> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery, @SpringQueryMap Query query); + R> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery); /** * 协作外协订单接收 diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java index 5613325ba..da5723554 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java @@ -22,7 +22,7 @@ public class IErpDataOemClientFallback implements IErpDataOemClient { } @Override - public R> priceSheetData(PriceSheetQuery priceSheetQuery, Query query) { + public R> priceSheetData(PriceSheetQuery priceSheetQuery) { return R.fail("查询报价单 失败"); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java index 579527f26..7e5afddda 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java @@ -171,7 +171,7 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl iPage = page(page, queryWrapper); String userIdSet = iPage.getRecords().stream().map(s -> { @@ -169,7 +172,7 @@ public class UrgentPartServiceImpl extends BaseServiceImpl> priceSheetData(PriceSheetQuery priceSheetQuery, Query query) { - R> pageR = erpDataOemClient.priceSheetData(priceSheetQuery, query); + priceSheetQuery.setQuery(query); + R> pageR = erpDataOemClient.priceSheetData(priceSheetQuery); Page data = pageR.getData(); Page pages = new Page<>(); // 复制分页属性 @@ -250,7 +251,8 @@ public class OemOrderController extends BladeController { @Operation(summary = "报价单导出数据", description = "") public void exportPriceSheetData(PriceSheetQuery priceSheetQuery, Query query, HttpServletResponse response) { query.setSize(99999); - R> pageR = erpDataOemClient.priceSheetData(priceSheetQuery, query); + priceSheetQuery.setQuery(query); + R> pageR = erpDataOemClient.priceSheetData(priceSheetQuery); Page data = pageR.getData(); List list = data.getRecords(); List excels = new ArrayList<>(); 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 d23970155..49f027066 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 @@ -654,10 +654,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ + query.setQuery(new Query() {{ setSize(99999); }}); + R> pageR = erpDataOemClient.priceSheetData(query); if (pageR != null && pageR.getData() != null) { return pageR.getData().getRecords(); @@ -675,9 +675,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl getPriceSheets(String oemName) { PriceSheetQuery query = new PriceSheetQuery(); query.setOcName(oemName); - R> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ + query.setQuery(new Query() {{ setSize(99999); }}); + R> pageR = erpDataOemClient.priceSheetData(query); if (pageR != null && pageR.getData() != null) { return pageR.getData().getRecords(); @@ -1508,7 +1509,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl - Map> priceSheetMap = priceSheetAllList.stream().collect(Collectors.groupingBy(PriceSheetVO::getGxinfo, () -> new TreeMap<>(Collections.reverseOrder()), // 按键的倒序排序 + Map> priceSheetMap = priceSheetAllList.stream().filter(item -> item.getGxinfo() != null).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()); @@ -1573,9 +1574,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ + query.setQuery(new Query() {{ setSize(99999); }}); + R> pageR = erpDataOemClient.priceSheetData(query); if (pageR != null && pageR.getData() != null) { return pageR.getData().getRecords(); @@ -1715,11 +1717,12 @@ public class OemStatementServiceImpl extends BaseServiceImpl - AND two.wo_code LIKE CONCAT('%', CONCAT(#{query.orderCode}, '%')) + AND mwor.wo_code LIKE CONCAT('%', CONCAT(#{query.orderCode}, '%')) AND tyo.part_code LIKE CONCAT('%', CONCAT(#{query.partCode}, '%')) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index cef1c2a7a..897d4449c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -295,5 +295,5 @@ public interface IWorkOrderService extends BaseService { /** * 生产运行记录 */ - void addPrWorkOrderRun(WorkOrder workOrder); + void addPrWorkOrderRun(String woId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java index 45d4da6f7..4a0b1980b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java @@ -107,7 +107,7 @@ public class PlateAroundServiceImpl extends BaseServiceImpl tsIds = getTsIds(); BeforePlatInVO beforePlatOutCardNo = baseMapper.getBeforePlatOutCardNo(wo.getId(), tsIds, AuthUtil.getUserId()); if (beforePlatOutCardNo == null) { - throw new ServiceException("未找到镀前入库记录,无法出库!"); + throw new ServiceException("未找到镀前入库记录,请上序班组镀前入库!"); } long count = this.count(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, beforePlatOutCardNo.getWpId()).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAN_OUT)); if (count > 0) { 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 3472a19d5..2ea44e522 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 @@ -163,16 +163,22 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl approvals) { + List errors = new ArrayList<>(); for (int i = 0; i < approvals.size(); i++) { OemApproval approval = approvals.get(i); try { R r = singleApprovalInNewTransaction(approval); } catch (Exception e) { - log.error(String.format("审批失败,单据ID: {}", approval.getWorkOrderRunId()), e); + String errMsg = "审批失败,单据ID: " + approval.getWorkOrderRunId(); + log.error(errMsg, e); + errors.add(errMsg + "," + e.getMessage()); } } + if (!errors.isEmpty()) { + return R.fail(String.join(";", errors)); + } return R.success("操作完成"); } @@ -203,10 +209,11 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl() - .eq(WorkPlan::getWoId, wo.getId())); + if (oldWorkOrderRun != null) { + oldWorkOrderRun.setRunStatus(WorkOrderRun.RUN_STATUS_VOIDED); + workOrderRunMapper.updateById(oldWorkOrderRun); + } + wp = workPlanMapper.selectById(wo.getWpId()); wo.setCollaborate(workOrderRun.getCollaborate()); // 若当前序小于等于已接收 @@ -296,16 +303,31 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl() .eq(WorkPlan::getId, wp.getNextWpId())); - oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper().eq(OemCraftAbilityEntity::getOtherId, nextWp.getOcId()) - .eq(OemCraftAbilityEntity::getCraftAbilityId, nextWp.getCaId())); + if (nextWp != null) { + oemId = nextWp.getOcId(); + craftAbilityId = nextWp.getCaId(); + oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper().eq(OemCraftAbilityEntity::getOtherId, oemId) + .eq(OemCraftAbilityEntity::getCraftAbilityId, craftAbilityId)); + } } else { - oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper().eq(OemCraftAbilityEntity::getOtherId, wp.getOcId()) - .eq(OemCraftAbilityEntity::getCraftAbilityId, wp.getCaId())); + oemId = wp.getOcId(); + craftAbilityId = wp.getCaId(); + oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper().eq(OemCraftAbilityEntity::getOtherId, oemId) + .eq(OemCraftAbilityEntity::getCraftAbilityId, craftAbilityId)); } //更改订单调度员和计划员 + if (oa == null) { + Oem oem = oemMapper.selectById(oemId); + String oemName = oem != null ? oem.getOcName() : "未知厂商"; + String errorMsg = String.format("外协厂商【%s】(ID:%s)的工艺能力(ID:%s)未维护,可在基础数据-外协工艺能力页面维护", oemName, oemId, craftAbilityId); + log.error(errorMsg); + throw new ServiceException(errorMsg); + } workOrderService.maintainOrder(wo, oa.getPlanner(), oa.getDispatcher(), workOrderRun, true); } Date date = DateUtil.plusDays(wo.getSendDownTime(), days); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 14c084140..886d4758c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -2910,7 +2910,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery, @SpringQueryMap Query query) { + public R> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery) { + Query query = priceSheetQuery.getQuery(); IPage iPages = erpDataOemService.priceSheetData(Condition.getPage(query), priceSheetQuery); Page pages = new Page<>(); diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml index 27c931caf..571b70de9 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml @@ -31,10 +31,10 @@ AND a.remark LIKE concat(concat('%', #{query.memo}),'%') - AND to_date(${query.inDateStart},'YYYY-MM-DD'), = ]]> a.startdat + AND #{query.inDateStart} = ]]> a.startdat - AND to_date(${query.inDateEnd},'YYYY-MM-DD'), a.validdat + AND #{query.inDateEnd} a.validdat AND a.validflag IN diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StClassRequestServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StClassRequestServiceImpl.java index 8cfa2b02e..4a1149ecb 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StClassRequestServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StClassRequestServiceImpl.java @@ -354,7 +354,6 @@ public class StClassRequestServiceImpl extends BaseServiceImpl