liweidong
liweidong-hj 2 days ago
commit a6aa5f0780
  1. 13
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGraphiteMoldOut.java
  2. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderDailyAssignMapper.xml
  3. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java
  4. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderDailyAssignImpl.java
  5. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java
  6. 1
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml
  7. 10
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java

@ -158,6 +158,17 @@ public class StGraphiteMoldOut extends TenantEntity {
* 齐套数量 * 齐套数量
*/ */
@Schema(description = "齐套数量") @Schema(description = "齐套数量")
private Double completeQuantity; private Integer completeQuantity;
/**
* 生产数量
*/
@Schema(description = "生产数量")
private Double produceQuantity;
/**
* 单套数量
*/
@Schema(description = "单套数量")
private Double singleQuantity;
} }

@ -25,6 +25,7 @@
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 a.CRAFT_ABILITY_ID = #{hostCaId} WHERE a.CRAFT_ABILITY_ID = #{hostCaId}
AND b.IS_DELETED = 0
AND a.CREATE_TIME >= TRUNC(SYSDATE) AND a.CREATE_TIME < TRUNC(SYSDATE) + 1 AND a.CREATE_TIME >= TRUNC(SYSDATE) AND a.CREATE_TIME < TRUNC(SYSDATE) + 1
AND a.WORK_CENTER_ID IN AND a.WORK_CENTER_ID IN
<foreach collection="wcList" item="id" open="(" close=")" separator=","> <foreach collection="wcList" item="id" open="(" close=")" separator=",">
@ -59,6 +60,7 @@
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 a.CRAFT_ABILITY_ID = #{hostCaId} WHERE a.CRAFT_ABILITY_ID = #{hostCaId}
AND b.IS_DELETED = 0
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.WORK_CENTER_ID IN AND a.WORK_CENTER_ID IN
<foreach collection="wcList" item="id" open="(" close=")" separator=","> <foreach collection="wcList" item="id" open="(" close=")" separator=",">

@ -1,6 +1,7 @@
package org.springblade.desk.order.service.impl; package org.springblade.desk.order.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -218,10 +219,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
} }
//如果匹配到了作业单位,则直接停止 //如果匹配到了作业单位,则直接停止
if (dispatchCraftList != null && dispatchCraftList.size() > 0) { if (CollectionUtils.isEmpty(dispatchCraftList)) {
return;
}
// 厂内优先 // 厂内优先
if (workCenter.getLimitType().equals(WorkCenter.LIMIT_TYPE_PRIOR)) { if (workCenter.getLimitType().equals(WorkCenter.LIMIT_TYPE_PRIOR)) {
log.info("自动分派,流程卡号:{},优先厂内", yieldOrder.getCardNo()); log.info("自动分派,流程卡号:{},优先厂内", yieldOrder.getCardNo());
@ -229,10 +227,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
} }
//如果匹配到了作业单位,则直接停止 //如果匹配到了作业单位,则直接停止
if (dispatchCraftList != null && dispatchCraftList.size() > 0) { if (CollectionUtils.isEmpty(dispatchCraftList)) {
return;
}
//外协优先 //外协优先
if (oemCustomer.getLimitType().equals(WorkCenter.LIMIT_TYPE_PRIOR)) { if (oemCustomer.getLimitType().equals(WorkCenter.LIMIT_TYPE_PRIOR)) {
log.info("自动分派,流程卡号:{},优先外协", yieldOrder.getCardNo()); log.info("自动分派,流程卡号:{},优先外协", yieldOrder.getCardNo());
@ -240,10 +235,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
} }
//如果匹配到了作业单位,则直接停止 //如果匹配到了作业单位,则直接停止
if (dispatchCraftList != null && dispatchCraftList.size() > 0) { if (CollectionUtils.isEmpty(dispatchCraftList)) {
return;
}
// 开始根据分派比例分派 // 开始根据分派比例分派
Long facTotalNum = 0L; Long facTotalNum = 0L;
YieldOrderAssignCount facCapacity = dailyAssignService.queryCount(hostAbilityId, BsAssignEntity.IN_FACTORY); YieldOrderAssignCount facCapacity = dailyAssignService.queryCount(hostAbilityId, BsAssignEntity.IN_FACTORY);
@ -273,14 +265,15 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
} }
//如果匹配到了作业单位,则直接停止 //如果匹配到了作业单位,则直接停止
if (dispatchCraftList != null && !dispatchCraftList.isEmpty()) { if (CollectionUtils.isEmpty(dispatchCraftList)) {
return;
}
// 外协 // 外协
log.info("{}自动分派按照比例分派给外协:{},分派比例:{} 应分比例:{}", yieldOrder.getCardNo(), oemCustomer.getOcName(), rate, craftAbility.getInRate()); log.info("{}自动分派按照比例分派给外协:{},分派比例:{} 应分比例:{}", yieldOrder.getCardNo(), oemCustomer.getOcName(), rate, craftAbility.getInRate());
dispatchCraftList = this.bindOem(oemCustomer, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null); dispatchCraftList = this.bindOem(oemCustomer, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
} }
}
}
}
}
} else { } else {
if (Boolean.TRUE.equals(factor)) { if (Boolean.TRUE.equals(factor)) {
if (workCenter == null) { if (workCenter == null) {
@ -295,7 +288,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
} }
} }
if (dispatchCraftList == null || dispatchCraftList.size() == 0) { if (dispatchCraftList == null || dispatchCraftList.isEmpty()) {
throw new ServiceException("自动分派失败,未找到合适的班组或者供应商!"); throw new ServiceException("自动分派失败,未找到合适的班组或者供应商!");
} }
@ -762,6 +755,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
Double totalArea = yieldOrder.getYpArea() * yieldOrder.getYpQty(); Double totalArea = yieldOrder.getYpArea() * yieldOrder.getYpQty();
BigDecimal areaVal = new BigDecimal(totalArea); BigDecimal areaVal = new BigDecimal(totalArea);
BigDecimal ypArea = new BigDecimal(yieldOrder.getYpArea());
//单批面积规则和单位面积规则取其一,如果单批面积存在则按照单批面积规则 //单批面积规则和单位面积规则取其一,如果单批面积存在则按照单批面积规则
if ((rules.getSingleUpArea() != null && rules.getSingleUpArea().compareTo(BigDecimal.ZERO) > 0) || (rules.getSingleDownArea() != null && rules.getSingleDownArea().compareTo(BigDecimal.ZERO) > 0)) { if ((rules.getSingleUpArea() != null && rules.getSingleUpArea().compareTo(BigDecimal.ZERO) > 0) || (rules.getSingleDownArea() != null && rules.getSingleDownArea().compareTo(BigDecimal.ZERO) > 0)) {
@ -784,7 +778,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
} else { } else {
//单位面积下限 //单位面积下限
if (rules.getLowArea() != null && rules.getLowArea().compareTo(BigDecimal.ZERO) > 0) { if (rules.getLowArea() != null && rules.getLowArea().compareTo(BigDecimal.ZERO) > 0) {
if (areaVal.compareTo(rules.getLowArea()) >= 0) { if (ypArea.compareTo(rules.getLowArea()) >= 0) {
sum = sum + 7; sum = sum + 7;
} else { } else {
return 0; return 0;
@ -792,7 +786,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
} }
//单位面积上限 //单位面积上限
if (rules.getUpArea() != null && rules.getUpArea().compareTo(BigDecimal.ZERO) > 0) { if (rules.getUpArea() != null && rules.getUpArea().compareTo(BigDecimal.ZERO) > 0) {
if (areaVal.compareTo(rules.getUpArea()) <= 0) { if (ypArea.compareTo(rules.getUpArea()) <= 0) {
sum = sum + 4; sum = sum + 4;
} else { } else {
return 0; return 0;

@ -73,8 +73,8 @@ public class YieldOrderDailyAssignImpl extends BaseServiceImpl<YieldOrderDailyAs
assignDaily.setOemId(oemId); assignDaily.setOemId(oemId);
assignDaily.setArea(area); assignDaily.setArea(area);
assignDaily.setQuantity(quantity); assignDaily.setQuantity(quantity);
assignDaily.setBatch(1L); assignDaily.setBatch(0L);
assignDaily.setNum(1L); assignDaily.setNum(0L);
assignDaily.setCreateTime(DateUtil.toDate(LocalDate.now())); assignDaily.setCreateTime(DateUtil.toDate(LocalDate.now()));
this.save(assignDaily); this.save(assignDaily);

@ -414,7 +414,7 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
wp = workPlanMapper.selectOne(new LambdaQueryWrapper<WorkPlan>() wp = workPlanMapper.selectOne(new LambdaQueryWrapper<WorkPlan>()
.eq(WorkPlan::getId, wpr.getWpId())); .eq(WorkPlan::getId, wpr.getWpId()));
// 如果是外协工序,且未报工,清空班组和时间,便于排产 // 如果工序未报工状态,清空班组和时间,便于排产重新分配
if (wp.getStatus().compareTo(WorkPlan.STATUS_WORK_OK) < 0) { if (wp.getStatus().compareTo(WorkPlan.STATUS_WORK_OK) < 0) {
wp.setMakeTeam(null); wp.setMakeTeam(null);
wp.setPlanStartTime(null); wp.setPlanStartTime(null);
@ -495,8 +495,10 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
int days = ProcessCycleEnum.BC_TYPE_CYCLE_HEAT.getValue(); int days = ProcessCycleEnum.BC_TYPE_CYCLE_HEAT.getValue();
Date date = DateUtil.plusDays(wo.getSendDownTime(), days); Date date = DateUtil.plusDays(wo.getSendDownTime(), days);
wo.setPlanEndDate(DateUtil.format(date, DateUtil.PATTERN_DATETIME)); wo.setPlanEndDate(DateUtil.format(date, DateUtil.PATTERN_DATETIME));
// 车间订单状态修改为【未下达】 // 如果当前工序的加工班组和外协商为空,则等待排产,整单状态变为未开始
if (wo.getTsId() == null && wo.getOcId() == null) {
wo.setRunStatus(WorkOrder.RUN_STATUS_NORMAL); wo.setRunStatus(WorkOrder.RUN_STATUS_NORMAL);
}
//更改订单调度员和计划员 //更改订单调度员和计划员
// TeamSet makeTeam = teamSetMapper.selectById(wo.getTsId()); // TeamSet makeTeam = teamSetMapper.selectById(wo.getTsId());

@ -36,6 +36,7 @@
gmo.card_no, gmo.need_quantity, gmo.outed_quantity, gmo.card_no, gmo.need_quantity, gmo.outed_quantity,
gmo.cur_status, gmo.out_time, gmo.out_user, gmo.out_code, gmo.picker, gmo.cur_status, gmo.out_time, gmo.out_user, gmo.out_code, gmo.picker,
gmo.parent_out_code, gmo.complete_quantity, gmo.parent_out_code, gmo.complete_quantity,
gmo.produce_quantity, gmo.single_quantity,
-- 物料表字段 -- 物料表字段
g.goods_code, g.goods_code,
g.id AS goodsId, g.id AS goodsId,

@ -170,8 +170,10 @@ public class StGraphiteMoldOutServiceImpl extends BaseServiceImpl<StGraphiteMold
preOutStock.setOutCode(outCode); preOutStock.setOutCode(outCode);
childNum++; childNum++;
// preOutStock.setOutCode(stStockInoutRecordService.generateCode()); // preOutStock.setOutCode(stStockInoutRecordService.generateCode());
preOutStock.setNeedQuantity(singleUse * totalNeedSet); preOutStock.setProduceQuantity(totalNeedSet);
preOutStock.setCompleteQuantity(totalNeed); preOutStock.setNeedQuantity(singleUse * maxCanMakeSet);
preOutStock.setCompleteQuantity(maxCanMakeSet);
preOutStock.setSingleQuantity(singleUse);
preOutStock.setGoodsId(maxStock.getGoodsId()); preOutStock.setGoodsId(maxStock.getGoodsId());
StGoods stGoods = stGoodsService.getById(maxStock.getGoodsId()); StGoods stGoods = stGoodsService.getById(maxStock.getGoodsId());
preOutStock.setGoodsName(stGoods.getGoodsName()); preOutStock.setGoodsName(stGoods.getGoodsName());
@ -391,8 +393,8 @@ public class StGraphiteMoldOutServiceImpl extends BaseServiceImpl<StGraphiteMold
this.updateById(outEntity); this.updateById(outEntity);
resultList.add(outEntity); resultList.add(outEntity);
if (outEntity.getOutedQuantity() < outEntity.getCompleteQuantity()) { if (outEntity.getOutedQuantity() < outEntity.getNeedQuantity()) {
Double resOccupyQty = outEntity.getCompleteQuantity() - outEntity.getOutedQuantity(); Double resOccupyQty = outEntity.getNeedQuantity() - outEntity.getOutedQuantity();
realtimeStock.setOccupyQuantity(realtimeStock.getOccupyQuantity() - resOccupyQty); realtimeStock.setOccupyQuantity(realtimeStock.getOccupyQuantity() - resOccupyQty);
stRealtimeStockService.updateById(realtimeStock); stRealtimeStockService.updateById(realtimeStock);

Loading…
Cancel
Save