diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/YieldOrderAutoDispatchProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/YieldOrderAutoDispatchProcessor.java new file mode 100644 index 000000000..58e51241b --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/YieldOrderAutoDispatchProcessor.java @@ -0,0 +1,30 @@ +package org.springblade.job.processor.produce; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.produce.feign.IApsProduceClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * 异常订单自动分派 + * + * @author litao + */ +@Component +@Data +@Slf4j +public class YieldOrderAutoDispatchProcessor implements BasicProcessor { + + @Resource + private IApsProduceClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("异常订单自动分派开始"); + return new ProcessResult(client.yieldOrderAutoDispatch()); + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/enums/MesApprovalRecordBizTypeEnum.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/enums/MesApprovalRecordBizTypeEnum.java index 4a47fd517..4b3738e05 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/enums/MesApprovalRecordBizTypeEnum.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/enums/MesApprovalRecordBizTypeEnum.java @@ -22,6 +22,7 @@ public enum MesApprovalRecordBizTypeEnum { BATCH_PLANNING_CATEGORY("槽液计划类/审核"), BATCH_PLANNING_TASK("槽液任务/审核"), PLATE_GOODS_RECORD("镀层物料需求申报/审核"), + PLATE_GOODS_APPLY("镀层物料添加量申报/审核"), ; private final String desc; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IApsProduceClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IApsProduceClient.java index 227bbd5a6..39a748809 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IApsProduceClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IApsProduceClient.java @@ -18,8 +18,7 @@ public interface IApsProduceClient { String SYNC_ORDER_FROM_OLD_MES = API_PREFIX + "/syncOrderFromOldMes"; String CONFIRM_ORDER = API_PREFIX + "/confirmOrder"; - - + String YIELD_ORDER_AUTO_DISPATCH = API_PREFIX + "/yieldOrderAutoDispatch"; /** * 从旧mes平台同步生产订单 * @@ -35,4 +34,12 @@ public interface IApsProduceClient { */ @GetMapping(CONFIRM_ORDER) boolean confirmOrder(); + + /** + * 异常订单自动分派 + * + * @return + */ + @GetMapping(YIELD_ORDER_AUTO_DISPATCH) + boolean yieldOrderAutoDispatch(); } diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java index 9c9bc195f..e61a8af91 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java @@ -203,7 +203,8 @@ public class StRealtimeStock extends TenantEntity { @TableField(exist = false) private Long outRecordId; - + @Schema(description = "领料人ID") + private Long picker; } diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGoodsVO.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGoodsVO.java index f51e76601..4ab9af3e6 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGoodsVO.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGoodsVO.java @@ -30,4 +30,7 @@ public class StGoodsVO extends StGoods { @Schema(description = "库房ID(关联st_storehouse表)") private Long shId; + @TableField(exist = false) + private String goodsCodeAndGoodsName; + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesPlateGoodsApplyServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesPlateGoodsApplyServiceImpl.java new file mode 100644 index 000000000..9c20e95e5 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesPlateGoodsApplyServiceImpl.java @@ -0,0 +1,50 @@ +package org.springblade.desk.common.service.impl; + +import org.springblade.core.tool.utils.Func; +import org.springblade.desk.common.enums.MesApprovalRecordBizTypeEnum; +import org.springblade.desk.common.service.ApprovalRecordDetailStrategy; +import org.springblade.desk.order.pojo.entity.PlateGoodsApply; +import org.springblade.desk.order.pojo.entity.PlateGoodsRecord; +import org.springblade.desk.order.pojo.vo.PlateGoodsApplyVo; +import org.springblade.desk.order.service.IPlateGoodsApplyDetailService; +import org.springblade.desk.order.service.IPlateGoodsApplyService; +import org.springblade.desk.order.wrapper.PlateGoodsApplyWrapper; +import org.springblade.desk.order.wrapper.PlateGoodsRecordWrapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料添加量申报审核待办策略实现类 + */ +@Service +public class MesPlateGoodsApplyServiceImpl implements ApprovalRecordDetailStrategy { + + @Autowired + IPlateGoodsApplyService plateGoodsApplyService; + + @Autowired + IPlateGoodsApplyDetailService plateGoodsApplyDetailService; + + + @Override + public String getBizType() { + return MesApprovalRecordBizTypeEnum.PLATE_GOODS_APPLY.getDesc(); + } + + @Override + public PlateGoodsApplyVo getDetail(Long bizId) { + PlateGoodsApply apply = plateGoodsApplyService.getById(bizId); + + PlateGoodsApplyVo vo = PlateGoodsApplyWrapper.build().entityVO(apply); + + // 查询关联订单列表 + List recordList = plateGoodsApplyDetailService.listRecordByApplyId(apply.getId()); + if (Func.isNotEmpty(recordList)) { + vo.setRecordVos(PlateGoodsRecordWrapper.build().listVO(recordList)); + } + + return vo; + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java index 34cf19854..e46ee4d5a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java @@ -340,4 +340,11 @@ public interface IYieldOrderService extends BaseService { YieldOrder getByCardNo(String cardNo); List getSubCompleteData(YieldOrder yieldOrder); + + /** + * 生产订单自动分派 + * @param yieldOrder + * @return + */ + List yieldOrderAutoDispatch(YieldOrder yieldOrder); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyServiceImpl.java index d5d84dbcf..2ff278ec3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyServiceImpl.java @@ -10,6 +10,8 @@ import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; +import org.springblade.desk.common.enums.MesApprovalRecordBizTypeEnum; +import org.springblade.desk.common.service.IMesApprovalRecordService; import org.springblade.desk.order.mapper.PlateGoodsApplyMapper; import org.springblade.desk.order.pojo.entity.AssayContentDetail; import org.springblade.desk.order.pojo.entity.PlateGoodsApply; @@ -18,6 +20,7 @@ import org.springblade.desk.order.pojo.entity.PlateGoodsRecord; import org.springblade.desk.order.pojo.enums.AssayContentEnum; import org.springblade.desk.order.pojo.enums.PlateGoodsEnum; import org.springblade.desk.order.service.*; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +43,9 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl selectPage(IPage page, PlateGoodsApply entity) { List dataList = baseMapper.selectPage(page, entity); @@ -60,6 +66,14 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl goodsApplyDetailList = new ArrayList<>(); for (PlateGoodsRecord goodsRecord : addRecordList) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java index 938e1d697..24021f04c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java @@ -614,6 +614,14 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl yieldOrderAutoDispatch(YieldOrder yieldOrder) { boolean result = this.verifyYieldOrderResource(yieldOrder); if (result) { List list = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraft::getYoId, yieldOrder.getId()).orderByAsc(YieldOrderCraft::getProcessNo)); - list.stream().forEach(craft -> { + list.forEach(craft -> { if (craft.getWorkCenterId() != null) { WorkCenter workCenter = workCenterService.getById(craft.getWorkCenterId()); craft.setWorkCenterName(workCenter.getWcName()); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java index a049f07f9..4c7640014 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; import java.time.ZoneId; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -61,4 +62,19 @@ public class ApsProduceClient implements IApsProduceClient { return true; } + @Override + public boolean yieldOrderAutoDispatch() { + List orders = yieldOrderService.list(Wrappers.lambdaQuery().eq(YieldOrder::getValidationResult, YieldOrderEnum.VALIDATION_RESULT_LESS_RESOURCE.getCode())); + log.info("异常订单待自动分派数量:{}", orders.size()); + for (YieldOrder yieldOrder : orders) { + try { + yieldOrderService.yieldOrderAutoDispatch(yieldOrder); + } catch (Exception e) { + log.error("异常订单自动分派失败,流程卡号{},错误信息为{}", yieldOrder.getCardNo(), e.getMessage()); + } + } + log.info("异常订单自动分派结束"); + return true; + } + } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGoodsController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGoodsController.java index 6869a9335..7812b88e3 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGoodsController.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGoodsController.java @@ -1,5 +1,6 @@ package org.springblade.wms.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; @@ -69,6 +70,11 @@ public class StGoodsController extends BladeController { QueryWrapper wrapper = Condition.getQueryWrapper(stGoods, StGoods.class); wrapper.eq("is_deleted", 0) .orderByDesc("create_time"); + + String goodsCodeAndGoodsName = StrUtil.toString(stGoods.get("goodsCodeAndGoodsName")); + if (StrUtil.isNotBlank(goodsCodeAndGoodsName)) { + wrapper.and(w -> w.like("goods_code", goodsCodeAndGoodsName).or().like("goods_name", goodsCodeAndGoodsName)); + } IPage pages = stGoodsService.page(Condition.getPage(query), wrapper); return R.data(StGoodsWrapper.build().pageVO(pages)); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsMapper.xml index 2eb30708a..0af9a2cbc 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsMapper.xml @@ -115,6 +115,11 @@ ON g.goods_code = sl.goods_code WHERE g.is_deleted = 0 AND g.used = 1 + + AND (g.goods_code LIKE '%' || #{stGoods.goodsCodeAndGoodsName} || '%' + OR g.goods_name LIKE '%' || #{stGoods.goodsCodeAndGoodsName} || '%') + + AND g.goods_code LIKE '%' || #{stGoods.goodsCode} || '%' diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java index 1c9a51bfa..6a259f087 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.wms.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; @@ -254,6 +255,9 @@ public class StOtherOutRecordServiceImpl extends BaseServiceImpl