计划异常订单新增负责人

liweidong
liweidong-hj 12 hours ago
parent 42c70e1d0d
commit da1101c8aa
  1. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java
  2. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/UrgentPartMapper.java
  3. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/UrgentPartMapper.xml
  4. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUrgentPartService.java
  5. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UrgentPartServiceImpl.java
  6. 55
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
  7. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
  8. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml
  9. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldDemandServiceImpl.java
  10. 98
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  11. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  12. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  13. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java
  14. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  15. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java

@ -517,6 +517,9 @@ public class YieldOrder extends BaseEntity {
@Schema(description = "一级工序名称状态")
private Integer firseqNameStatus;
@Schema(description = "工艺任务ID")
private Long taskingId;
@JsonSerialize(nullsUsing = NullSerializer.class)
private Double plateThickness1;
@ -540,4 +543,7 @@ public class YieldOrder extends BaseEntity {
@TableField(exist = false)
private List<YieldOrder> children;
@TableField(exist = false)
private String craftMan;
}

@ -29,4 +29,5 @@ public interface UrgentPartMapper extends BaseMapper<UrgentPart> {
*/
List<UrgentPartExcel> exportUrgentPart(@Param("ew") Wrapper<UrgentPart> queryWrapper);
List<UrgentPart> selectByPlanNoAndPartCode(@Param("ypCode") String ypCode,@Param("partCode") String partCode);
}

@ -14,6 +14,9 @@
FROM BS_URGENT_PART
${ew.customSqlSegment}
</select>
<select id="selectByPlanNoAndPartCode" resultType="org.springblade.desk.basic.pojo.entity.UrgentPart">
select * from BS_URGENT_PART where IS_DELETED = 0 and PLAN_NO=#{ypCode} and PART_CODE=#{partCode}
</select>
</mapper>

@ -61,4 +61,12 @@ public interface IUrgentPartService extends BaseService<UrgentPart> {
* @return R
*/
R voidRecords(List<Long> ids);
/**
* 根据计划单号和零件号查询
* @param ypCode
* @param partCode
* @return
*/
List<UrgentPart> selectByPlanNoAndPartCode(String ypCode, String partCode);
}

@ -234,4 +234,9 @@ public class UrgentPartServiceImpl extends BaseServiceImpl<UrgentPartMapper, Urg
return R.fail("作废失败");
}
}
@Override
public List<UrgentPart> selectByPlanNoAndPartCode(String ypCode, String partCode) {
return baseMapper.selectByPlanNoAndPartCode(ypCode,partCode);
}
}

@ -28,6 +28,7 @@ import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.dashboard.utils.DateUtils;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.erpdata.feign.IErpDataPartClient;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
import org.springblade.system.feign.IDictClient;
@ -123,6 +124,10 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
@Autowired
IDictClient dictClient;
@Autowired
@Lazy
IYieldOrderService yieldOrderService;
@Override
public IPage<DsPartVO> selectDsPartPage(IPage<DsPartVO> page, DsPartVO dsPart) {
@ -686,7 +691,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
// 5. 如果没有工艺,创建维护任务并返回null
if (CollectionUtils.isEmpty(dsCraftList)) {
createMaintainTask(partEntity, partVersionEntity);
createMaintainTask(partEntity, partVersionEntity,yieldOrder);
return PartCraftVO.build(PartCraftStatusEnum.NO_CRAFT_INFO.getCode());
}
@ -987,24 +992,52 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
/**
* 创建维护任务
*/
private void createMaintainTask(DsPartEntity partEntity, DsPartVersionEntity partVersionEntity) {
//查询是否有无工艺任务
List<DsTaskingEntity> taskingEntityList = taskingService.selectTaskingByPartCode(partEntity.getPartCode(),TaskingConstant.TASK_STATUS_WAIT,TaskingConstant.INSPECTION_TIMEOUT);
private void createMaintainTask(DsPartEntity partEntity, DsPartVersionEntity partVersionEntity, YieldOrder yieldOrder) {
// 1. 查询是否存在等待中的超时检验任务
List<DsTaskingEntity> taskingEntityList = taskingService.selectTaskingByPartCode(
partEntity.getPartCode(),
TaskingConstant.TASK_STATUS_WAIT,
TaskingConstant.INSPECTION_TIMEOUT
);
// 2. 如果存在未完成的任务,
if (!CollectionUtils.isEmpty(taskingEntityList)) {
DsTaskingEntity existingTask = taskingEntityList.stream()
.sorted(Comparator.comparing(DsTaskingEntity::getCreateTime).reversed())
.findFirst()
.orElse(taskingEntityList.get(0));
yieldOrder.setTaskingId(existingTask.getId());
yieldOrderService.updateById(yieldOrder);
log.debug("订单关联已有维护任务,订单ID:{},任务ID:{}", yieldOrder.getId(), existingTask.getId());
return;
}
DsTaskingEntity dsTaskingEntity = new DsTaskingEntity();
dsTaskingEntity.setPartCode(partEntity.getPartCode());
dsTaskingEntity.setPartName(partEntity.getPartName());
dsTaskingEntity.setTaskStatus(TaskingConstant.TASK_STATUS_WAIT);
dsTaskingEntity.setTaskType(TaskingConstant.INSPECTION_TIMEOUT);
// 3. 创建新任务
DsTaskingEntity newTask = new DsTaskingEntity();
newTask.setPartCode(partEntity.getPartCode());
newTask.setPartName(partEntity.getPartName());
newTask.setTaskStatus(TaskingConstant.TASK_STATUS_WAIT);
newTask.setTaskType(TaskingConstant.INSPECTION_TIMEOUT);
if (partVersionEntity != null) {
dsTaskingEntity.setVersion(partVersionEntity.getPartVersion());
newTask.setVersion(partVersionEntity.getPartVersion());
}
boolean taskingSave = taskingService.save(dsTaskingEntity);
boolean taskingSave = taskingService.save(newTask);
if (!taskingSave) {
log.error("创建维护任务失败,零件编码:{}", partEntity.getPartCode());
throw new ServiceException("创建维护任务失败,零件编码:" + partEntity.getPartCode());
}
// 4. 保存成功后设置任务ID
yieldOrder.setTaskingId(newTask.getId());
boolean updateResult = yieldOrderService.updateById(yieldOrder);
if (!updateResult) {
log.error("更新订单任务ID失败,订单ID:{},任务ID:{}", yieldOrder.getId(), newTask.getId());
throw new ServiceException("更新订单任务ID失败");
}
log.info("创建维护任务成功,零件编码:{},任务ID:{}", partEntity.getPartCode(), newTask.getId());
}
/**

@ -148,12 +148,15 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
@Autowired
@Lazy
IYieldOrderService yieldOrderService;
@Autowired
@Lazy
IWorkOrderService workOrderService;
@Autowired
@Lazy
IWorkPlanService workPlanService;
@Autowired
@ -163,9 +166,11 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
ICraftAbilityService craftAbilityService;
@Autowired
@Lazy
IMoldDemandService moldDemandService;
@Autowired
@Lazy
IReviewSheetService reviewSheetService;
@Autowired

@ -13,7 +13,7 @@
YP_MEMO, yo.SJ_MOLD_PREPARATION, yo.SJ_KIT_PREPARATION, yo.PK_USERNAME, yo.PK_DATE, yo.KIT_PREPARATION_MAN, yo.KIT_PREPARATION_TIME,
PRIORITY_APS, yo.PRIORITY_ERP, yo.VALIDATION_RESULT, yo.VALIDATION_MOMO, yo.VALIDATION_TIME, yo.VALIDATION_USER, yo.RECEIVE_STATUS,
WORK_CENTER_ID, yo.ERROR_INFO, yo.RECEIVE_USER, yo.RECEIVE_TIME, yo.GOODS_DEMAND, yo.TOOLS_DEMAND, yo.PLATE_GOODS_CODE, yo.PART_VERSION,
yo.PLAN_DEPTCODE,yo.GLASS_BISCUIT_STATUS,yo.QUOTA1,yo.QUOTA2,yo.PLATE_THICKNESS1,yo.PLATE_THICKNESS2
yo.PLAN_DEPTCODE,yo.GLASS_BISCUIT_STATUS,yo.QUOTA1,yo.QUOTA2,yo.PLATE_THICKNESS1,yo.PLATE_THICKNESS2,yo.TASKING_ID
</sql>
<select id = "selectPage" resultType = "org.springblade.desk.order.pojo.entity.YieldOrder">

@ -42,7 +42,6 @@ import java.util.stream.Collectors;
public class MoldDemandServiceImpl extends BaseServiceImpl<MoldDemandMapper, MoldDemand> implements IMoldDemandService {
private final IDsPartService dsPartService;
private final IYieldPlanService planService;
private final IYieldOrderService orderService;
private final IMoldApplyService moldApplyService;

@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.ehcache.core.util.CollectionUtil;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.exception.BusinessException;
import org.springblade.common.utils.StringPrefixUtils;
@ -23,9 +24,11 @@ import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.*;
import org.springblade.desk.basic.pojo.entity.LocallyPlatedPart;
import org.springblade.desk.basic.pojo.entity.UrgentPart;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.ILocallyPlatedPartService;
import org.springblade.desk.basic.service.IQualityGradeService;
import org.springblade.desk.basic.service.IUrgentPartService;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.common.constant.BizTypeConstant;
import org.springblade.desk.common.feign.IMesNotifyMessageClient;
@ -59,6 +62,9 @@ import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.erpdata.feign.IErpYieldOrderClient;
import org.springblade.scheduling.pojo.entity.PartRelationEntity;
import org.springblade.scheduling.pojo.entity.QualityGradeEntity;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springblade.system.pojo.entity.UserInfo;
import org.springblade.wms.feign.WmsTaskClient;
import org.springblade.wms.pojo.dto.StGraphiteMoldOutDTO;
import org.springblade.wms.pojo.entity.StGraphiteMoldOut;
@ -78,6 +84,7 @@ import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -131,8 +138,9 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
@Autowired
private IWorkCenterService workCenterService;
@Lazy
@Autowired
@Lazy
private IDsTaskingService dsTaskingService;
@Autowired
@ -152,13 +160,79 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
@Autowired
private WmsTaskClient wmsTaskClient;
@Autowired
private IUrgentPartService urgentPartService;
@Autowired
private IDsTaskingService taskingService;
@Autowired
IUserClient userClient;
@Override
public IPage<YieldOrder> selectPage(IPage<YieldOrder> page, YieldOrderDto entity) {
//烧结 热表订单
List<YieldOrderEnum> yieldTypeList = new ArrayList<>();
yieldTypeList.add(YieldOrderEnum.getEnum(entity.getYieldType()));
List<YieldOrder> dataList = baseMapper.selectPage(page, entity, yieldTypeList);
if (CollectionUtils.isNotEmpty(dataList)) {
// 1. 收集所有需要查询的 taskingId
List<Long> taskingIdList = dataList.stream()
.filter(order -> order.getTaskingId() != null)
.map(YieldOrder::getTaskingId)
.distinct()
.collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(taskingIdList)) {
// 2. 批量查询任务信息(一次数据库查询)
List<DsTaskingEntity> taskingList = taskingService.listByIds(taskingIdList);
// 3. 收集所有需要查询的用户ID,直接转换为逗号分隔的字符串
String userIdsStr = taskingList.stream()
.filter(tasking -> tasking != null && tasking.getCraftMan() != null)
.map(DsTaskingEntity::getCraftMan)
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.joining(","));
// 4. 批量查询用户信息(一次远程调用)
Map<Long, String> userNameMap = new HashMap<>();
if (StringUtils.isNotBlank(userIdsStr)) {
try {
List<User> userList = userClient.userListByIds(userIdsStr);
if (CollectionUtils.isNotEmpty(userList)) {
userNameMap = userList.stream()
.filter(user -> user != null && user.getId() != null)
.collect(Collectors.toMap(
User::getId,
User::getName,
(v1, v2) -> v1
));
}
} catch (Exception e) {
log.error("批量获取用户信息失败", e);
}
}
// 5. 构建 tasking 映射
Map<Long, DsTaskingEntity> taskingMap = taskingList.stream()
.collect(Collectors.toMap(DsTaskingEntity::getId, Function.identity()));
// 6. 组装数据
for (YieldOrder yieldOrder : dataList) {
if (yieldOrder.getTaskingId() != null) {
DsTaskingEntity tasking = taskingMap.get(yieldOrder.getTaskingId());
if (tasking != null && StringUtils.isNotBlank(tasking.getCraftMan())) {
Long userId = Func.toLong(tasking.getCraftMan());
String userName = userNameMap.get(userId);
if (StringUtils.isNotBlank(userName)) {
yieldOrder.setCraftMan(userName);
}
}
}
}
}
}
return page.setRecords(dataList);
}
@ -1429,6 +1503,26 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
if ("1".equals(mark)) {
yieldOrder.setSiteWork(true);
}
//校验订单是否是 急件维护
List<UrgentPart> urgentPartList = urgentPartService.selectByPlanNoAndPartCode(yieldOrder.getYpCode(),yieldOrder.getPartCode());
boolean isUrgent = false;
if (CollectionUtils.isNotEmpty(urgentPartList)) {
for (UrgentPart urgentPart : urgentPartList) {
// 批次号为空,急件维护
if (StringUtils.isEmpty(urgentPart.getBatchNo())) {
isUrgent = true;
break;
}
// 批次号不为空,判断是否与订单批次号一致
if (urgentPart.getBatchNo().equals(yieldOrder.getBatchNo())) {
isUrgent = true;
break;
}
}
}
if (isUrgent) {
yieldOrder.setSiteWork(true);
}
// 接收订单前置
yieldOrder.setReceiveTime(new Date());

@ -29,6 +29,7 @@ import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import org.springblade.desk.produce.service.*;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.*;
@ -51,6 +52,7 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
private final IMacToolUseService macToolUseService;
@Lazy
private final IYieldOrderService yieldOrderService;
private final IMesQcProduceRunService mesQcProduceRunService;

@ -79,6 +79,7 @@ import org.springblade.system.pojo.entity.User;
import org.springblade.wms.feign.StGlassCakeOutClient;
import org.springblade.wms.pojo.dto.StGlassCakeOutDTO;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -106,6 +107,7 @@ import static com.alibaba.fastjson2.util.DateUtils.DEFAULT_ZONE_ID;
@Slf4j
public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkOrder> implements IWorkOrderService {
@Lazy
private final IYieldOrderService yieldOrderService;
private final IWorkPlanService workPlanService;

@ -42,6 +42,7 @@ import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.desk.util.date.DateUtils;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@ -71,6 +72,7 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
private final IWorkPlanItemService workPlanItemService;
@Lazy
private final IInspectionTaskService inspectionTaskService;
private final IWorkOrderRunService workOrderRunService;

@ -76,6 +76,7 @@ import org.springblade.system.pojo.entity.User;
import org.springframework.beans.BeanUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -153,6 +154,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
@Resource
private IWorkPlanItemService workPlanItemService;
@Resource
@Lazy
private IMakeRecService makeRecService;
@Resource
private AuditFileMapper auditFileMapper;

@ -109,6 +109,7 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
@Autowired
private IWorkOrderService workOrderService;
@Lazy
private final IInspectionTaskService inspectionTaskService;
private final WorkOrderRunMapper workOrderRunMapper;

Loading…
Cancel
Save