自动分派逻辑修改

liweidong
李涛 3 days ago
parent 643adce808
commit 086312cf22
  1. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderDailyAssignMapper.java
  2. 28
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderDailyAssignMapper.xml
  3. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java
  4. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderDailyAssignImpl.java

@ -25,5 +25,5 @@ public interface YieldOrderDailyAssignMapper extends BaseMapper<YieldOrderAssign
List<YieldOrderAssignDaily> findSuitableByParams(Long hostCaId, List<Long> wcList, Double quantity, int batch, double area, String time); List<YieldOrderAssignDaily> findSuitableByParams(Long hostCaId, List<Long> wcList, Double quantity, int batch, double area, String time);
List<YieldOrderAssignDaily> findMinNum(Long abilityId, List<Long> wcList); List<YieldOrderAssignDaily> findMinNum(Long hostCaId, List<Long> wcList, String time);
} }

@ -24,10 +24,9 @@
INNER JOIN BS_OEM_CRAFT b ON a.WORK_CENTER_ID = b.OTHER_ID AND a.CRAFT_ABILITY_ID = b.CRAFT_ABILITY_ID INNER JOIN BS_OEM_CRAFT b ON a.WORK_CENTER_ID = b.OTHER_ID AND a.CRAFT_ABILITY_ID = b.CRAFT_ABILITY_ID
INNER JOIN BS_CENTER_TEAM c ON b.OTHER_ID = c.wc_id INNER JOIN BS_CENTER_TEAM c ON b.OTHER_ID = c.wc_id
INNER JOIN BS_TEAM_TIME d ON c.TS_ID = d.TS_ID INNER JOIN BS_TEAM_TIME d ON c.TS_ID = d.TS_ID
WHERE WHERE a.CRAFT_ABILITY_ID = #{hostCaId}
a.CA_ID = #{hostCaId}
AND a.CREATE_TIME >= TRUNC(SYSDATE) AND a.CREATE_TIME &lt; TRUNC(SYSDATE) + 1 AND a.CREATE_TIME >= TRUNC(SYSDATE) AND a.CREATE_TIME &lt; TRUNC(SYSDATE) + 1
AND a.wc_id IN AND a.WORK_CENTER_ID IN
<foreach collection="wcList" item="id" open="(" close=")" separator=","> <foreach collection="wcList" item="id" open="(" close=")" separator=",">
#{id} #{id}
</foreach> </foreach>
@ -35,21 +34,21 @@
AND ( AND (
d.END_TIME >= #{time} OR d.END_TIME &lt;= d.START_TIME) d.END_TIME >= #{time} OR d.END_TIME &lt;= d.START_TIME)
AND ( AND (
b.QUANTITY IS NULL b.QUALITY IS NULL
OR b.QUANTITY = 0 OR b.QUALITY = 0
OR ( b.QUANTITY * ( b.saturation / 100 ) ) > to_char( a.DAA_QTY + #{quantity}) OR ( b.QUALITY * ( b.SATURATION / 100 ) ) > to_char( a.QUANTITY + #{quantity})
) )
AND ( AND (
b.BATCH_NO IS NULL b.BATCH IS NULL
OR b.BATCH_NO = 0 OR b.BATCH = 0
OR ( b.BATCH_NO * ( b.saturation / 100 ) ) > to_char( a.DAA_BACTH + #{batch}) OR ( b.BATCH * ( b.SATURATION / 100 ) ) > to_char( a.BATCH + #{batch})
) )
AND ( AND (
b.AREA IS NULL b.AREA IS NULL
OR b.AREA = 0 OR b.AREA = 0
OR ( b.AREA * ( b.saturation / 100 ) ) > to_char( a.DAA_AREA + #{area}) OR ( b.AREA * ( b.SATURATION / 100 ) ) > to_char( a.AREA + #{area})
) )
ORDER BY a.DAA_NUM ASC ORDER BY a.NUM ASC
</select> </select>
<select id="findMinNum" resultType="org.springblade.desk.order.pojo.entity.YieldOrderAssignDaily"> <select id="findMinNum" resultType="org.springblade.desk.order.pojo.entity.YieldOrderAssignDaily">
SELECT DISTINCT SELECT DISTINCT
@ -59,16 +58,15 @@
INNER JOIN BS_WORK_CENTER b ON a.WORK_CENTER_ID = b.ID INNER JOIN BS_WORK_CENTER b ON a.WORK_CENTER_ID = b.ID
INNER JOIN BS_CENTER_TEAM c ON b.ID = c.wc_id INNER JOIN BS_CENTER_TEAM c ON b.ID = c.wc_id
INNER JOIN BS_TEAM_TIME d ON c.TS_ID = d.TS_ID INNER JOIN BS_TEAM_TIME d ON c.TS_ID = d.TS_ID
WHERE WHERE a.CRAFT_ABILITY_ID = #{hostCaId}
a.CA_ID = #{hostCaId}
AND a.CREATE_TIME >= TRUNC(SYSDATE) AND a.CREATE_TIME &lt; TRUNC(SYSDATE) + 1 AND a.CREATE_TIME >= TRUNC(SYSDATE) AND a.CREATE_TIME &lt; TRUNC(SYSDATE) + 1
AND a.wc_id IN AND a.WORK_CENTER_ID IN
<foreach collection="wcList" item="id" open="(" close=")" separator=","> <foreach collection="wcList" item="id" open="(" close=")" separator=",">
#{id} #{id}
</foreach> </foreach>
AND d.START_TIME &lt; #{time} AND d.START_TIME &lt; #{time}
AND ( AND (
d.END_TIME >= #{time} OR d.END_TIME &lt;= d.START_TIME) d.END_TIME >= #{time} OR d.END_TIME &lt;= d.START_TIME)
ORDER BY a.DAA_NUM ASC ORDER BY a.NUM ASC
</select> </select>
</mapper> </mapper>

@ -599,7 +599,10 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
// 改伊川喷砂工艺能力不限制厂家等级资质 // 改伊川喷砂工艺能力不限制厂家等级资质
// 使用工艺能力表中加工类型字段控制工艺能力是否需要进行外协等级资质判断 // 使用工艺能力表中加工类型字段控制工艺能力是否需要进行外协等级资质判断
boolean aBoolean = false; boolean aBoolean = false;
String wtId = craftAbility.getWtId();
if (StringUtils.isBlank(wtId) || !"0".equals(wtId)) {
aBoolean = assignSteerService.queryOemAndCaid(oemCode, yieldOrder.getProductIdent()); aBoolean = assignSteerService.queryOemAndCaid(oemCode, yieldOrder.getProductIdent());
}
//zxh 20251015 工作订单备注中包含zdzx时,单独校验厂家是否有JI以及JHT资质,若不存在相关等级资质,不允许派此厂家 //zxh 20251015 工作订单备注中包含zdzx时,单独校验厂家是否有JI以及JHT资质,若不存在相关等级资质,不允许派此厂家
if (yieldOrder.getYpMemo() != null && yieldOrder.getYpMemo().toLowerCase(Locale.ROOT).contains("zdzx")) { if (yieldOrder.getYpMemo() != null && yieldOrder.getYpMemo().toLowerCase(Locale.ROOT).contains("zdzx")) {
boolean aBooleanJI = assignSteerService.queryOemAndCaid(oemCode, "JI"); boolean aBooleanJI = assignSteerService.queryOemAndCaid(oemCode, "JI");
@ -609,7 +612,8 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
} }
} }
if ("0".equals(craftAbility.getWtId())) { // 0-不受派外协等级限制 1-A
if ("0".equals(wtId)) {
aBoolean = true; aBoolean = true;
} }

@ -103,24 +103,8 @@ public class YieldOrderDailyAssignImpl extends BaseServiceImpl<YieldOrderDailyAs
@Override @Override
public YieldOrderAssignDaily findMinNum(Long abilityId, List<Long> workCenterIdList) { public YieldOrderAssignDaily findMinNum(Long abilityId, List<Long> workCenterIdList) {
// LocalDate today = LocalDate.now(); String format = LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm"));
// LocalDateTime startOfDay = today.atStartOfDay(); List<YieldOrderAssignDaily> list = baseMapper.findMinNum(abilityId, workCenterIdList, format);
// LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
// LambdaQueryWrapper<YieldOrderAssignDaily> wrapper = Wrappers.<YieldOrderAssignDaily>query().lambda()
// .eq(YieldOrderAssignDaily::getIsDeleted, CommonConstant.BOOLEAN_FALSE)
// .eq(YieldOrderAssignDaily::getCraftAbilityId, abilityId)
// .between(YieldOrderAssignDaily::getCreateTime,
// DateUtil.toDate(startOfDay),
// DateUtil.toDate(endOfDay));
// if (Func.isNotEmpty(workCenterIdList)) {
// wrapper.in(YieldOrderAssignDaily::getWorkCenterId, workCenterIdList);
// }
// List<YieldOrderAssignDaily> list = baseMapper.selectList(wrapper);
// if(CollectionUtils.isEmpty(list)){
// return null;
// }
// return list.get(0);
List<YieldOrderAssignDaily> list = baseMapper.findMinNum(abilityId, workCenterIdList);
return CollectionUtils.isNotEmpty(list) ? list.get(0) : null; return CollectionUtils.isNotEmpty(list) ? list.get(0) : null;
} }

Loading…
Cancel
Save