定时修改生产计划交件数量

liweidong
李涛 7 days ago
parent c06e7a1aa4
commit ad51b543b6
  1. 30
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/PlanUpdateToQty.java
  2. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java
  3. 9
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java
  4. 10
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java
  5. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.java
  6. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.xml
  7. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java
  8. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java
  9. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java
  10. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  11. 66
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  12. 10
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java
  13. 4
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java
  14. 6
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml
  15. 4
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java
  16. 10
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.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.IDisTaskingClient;
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 PlanUpdateToQty implements BasicProcessor {
@Resource
private IDisTaskingClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
log.info("修改生产计划交付数量开始");
return new ProcessResult(client.planUpdateToQty());
}
}

@ -22,6 +22,7 @@ public interface IDisTaskingClient {
String RB_TRANSFER_ORDER = API_PREFIX + "/rbTransferOrder";
String UN_BIND_EC = API_PREFIX + "/unBindEc";
String SAVE_WORK_ORDER_RUN = API_PREFIX + "/saveWorkOrderRun";
String PLAN_UPDATE_TO_QTY = API_PREFIX + "/planUpdateToQty";
/**
@ -51,4 +52,10 @@ public interface IDisTaskingClient {
*/
@GetMapping(SAVE_WORK_ORDER_RUN)
boolean saveWorkOrderRun(@RequestParam String woId);
/**
* 修改生产计划交付数量
*/
@GetMapping(PLAN_UPDATE_TO_QTY)
boolean planUpdateToQty();
}

@ -49,7 +49,8 @@ public interface IErpDataProduceClient {
String CREATE_MOLD_PLAN = API_PREFIX + "/createMoldPlan";
String RETURN_HANDOVER_RECORD = API_PREFIX + "/returnHandoverRecord";
String RETURN_OEM_ERP_BY_WXNO = API_PREFIX + "/returnOemErpByWxno";
String SELECT_MAX_WOTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWototqtyByWono";
String SELECT_MAX_WOCLSTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWoclstotqtyByWono";
/**
* 缺件申报-通过零件号获取批次号
@ -237,4 +238,10 @@ public interface IErpDataProduceClient {
@GetMapping(RETURN_OEM_ERP_BY_WXNO)
R<String> returnOemErpByWxno(@RequestParam(value = "hrCode") String wxNo);
@GetMapping(SELECT_MAX_WOTOTQTY_BY_WONO)
R<Double> selectMaxWototqtyByWono(String code);
@GetMapping(SELECT_MAX_WOCLSTOTQTY_BY_WONO)
R<Double> selectMaxWoclstotqtyByWono(String code);
}

@ -133,4 +133,14 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient {
return R.fail("获取数据失败");
}
@Override
public R<Double> selectMaxWototqtyByWono(String code) {
return R.fail("获取数据失败");
}
@Override
public R<Double> selectMaxWoclstotqtyByWono(String code) {
return R.fail("获取数据失败");
}
}

@ -63,4 +63,12 @@ public interface YieldPlanMapper extends BaseMapper<YieldPlan> {
* @return
*/
void updateByNewlevdateMax(String newlevdateMax, String code);
List<String> selectNeedSyncPoCodes();
void updateWithWo(String code, Double woTotqty);
void updateWithWocls(String code, Double woclsTotqty);
void updateOnlyCheckTime(String code);
}

@ -94,6 +94,14 @@
and DICT_KEY = '1'
</where>
</select>
<select id="selectNeedSyncPoCodes" resultType="java.lang.String">
SELECT po_code
FROM (SELECT *
FROM MES_YIELD_PLAN
WHERE status &lt; 10015
ORDER BY CHECK_TOTQTY_TIME)
WHERE rownum &lt;= 2000
</select>
<update id="updateByNewlevdateMax">
UPDATE BLADE_DICT
SET DICT_VALUE = #{newlevdateMax}
@ -104,4 +112,13 @@
and DICT_KEY = '1'
</where>
</update>
<update id="updateWithWo">
UPDATE MES_YIELD_PLAN SET DELIVERY_QTY = #{woTotqty}, CHECK_TOTQTY_TIME = SYSDATE WHERE YP_CODE = #{code}
</update>
<update id="updateWithWocls">
UPDATE MES_YIELD_PLAN SET DELIVERY_QTY = #{woTotqty}, CHECK_TOTQTY_TIME = SYSDATE, STATUS = 10015, CHECK_CLOSE_TIME = SYSDATE WHERE YP_CODE = #{code}
</update>
<update id="updateOnlyCheckTime">
UPDATE MES_YIELD_PLAN SET CHECK_TOTQTY_TIME = SYSDATE WHERE YP_CODE = #{code}
</update>
</mapper>

@ -103,4 +103,15 @@ public interface IYieldPlanService extends BaseService<YieldPlan> {
*
*/
void updateByNewlevdateMax(String newlevdateMax, String code);
/**
* 获取需要同步的订单号
*/
List<String> selectNeedSyncPoCodes();
void updateWithWo(String code, Double woTotqty);
void updateWithWocls(String code, Double woclsTotqty);
void updateOnlyCheckTime(String code);
}

@ -284,4 +284,24 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
public void updateByNewlevdateMax(String max, String code) {
baseMapper.updateByNewlevdateMax(max,code);
}
@Override
public List<String> selectNeedSyncPoCodes() {
return baseMapper.selectNeedSyncPoCodes();
}
@Override
public void updateWithWo(String code, Double woTotqty) {
baseMapper.updateWithWo(code, woTotqty);
}
@Override
public void updateWithWocls(String code, Double woclsTotqty) {
baseMapper.updateWithWocls(code, woclsTotqty);
}
@Override
public void updateOnlyCheckTime(String code) {
baseMapper.updateOnlyCheckTime(code);
}
}

@ -54,4 +54,9 @@ public class DisTaskingClient implements IDisTaskingClient {
return true;
}
@Override
public boolean planUpdateToQty() {
return workOrderService.planUpdateToQty();
}
}

@ -296,4 +296,9 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
* 生产运行记录
*/
void addPrWorkOrderRun(String woId);
/**
* 修改生产计划交付数量
*/
boolean planUpdateToQty();
}

@ -42,7 +42,6 @@ import org.springblade.desk.efficiency.enums.BsSalaryStandardEnum;
import org.springblade.desk.efficiency.pojo.entity.BsSalaryStandardEntity;
import org.springblade.desk.efficiency.service.IBsSalaryStandardService;
import org.springblade.desk.efficiency.util.BsSalaryUtil;
import org.springblade.desk.energy.util.DateTime;
import org.springblade.desk.energy.util.HttpRequestService;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
@ -50,9 +49,9 @@ import org.springblade.desk.order.mapper.YieldOrderMapper;
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.desk.order.service.IYieldPlanService;
import org.springblade.desk.produce.mapper.PlateAroundMapper;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.dto.*;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.enums.ProcessCycleEnum;
@ -70,7 +69,6 @@ import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springblade.scheduling.pojo.entity.QualityGradeEntity;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
import org.springblade.scheduling.pojo.entity.YieldOrderEntity;
import org.springblade.system.cache.DictCache;
import org.springblade.system.cache.UserCache;
import org.springblade.system.feign.IDictClient;
@ -114,12 +112,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final StGlassCakeOutClient stGlassCakeOutClient;
// 关键:用set方法注入
// @Autowired
// public void setWorkPlanService(IWorkPlanService workPlanService) {
// this.workPlanService = workPlanService;
// }
private final IBsProcessSetService bsProcessSetService;
private final IWorkPlanItemService workPlanItemService;
@ -172,14 +164,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IReviewSheetService reviewSheetService;
@Resource
private final WorkPlanMapper workPlanMapper;
// @Autowired
// public void setReviewSheetService(IReviewSheetService reviewSheetService) {
// this.reviewSheetService = reviewSheetService;
// }
private final IOemCraftAbilityService oemCraftAbilityService;
private final IWorkCenterService workCenterService;
@ -207,6 +191,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final ICenterTeamService centerTeamService;
private final IYieldPlanService yieldPlanService;
@Resource
private final IErpDataCheckerSealClient erpDataCheckerSealClient;
@ -2962,6 +2948,52 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
}
@Override
public boolean planUpdateToQty() {
int successCount = 0;
int failCount = 0;
// 1. 查询需要同步的前2000条计划单
List<String> poCodeList = yieldPlanService.selectNeedSyncPoCodes();
if (CollectionUtils.isEmpty(poCodeList)) {
log.error("没有需要同步的计划单");
return false;
}
for (String code : poCodeList) {
try {
this.processSinglePlan(code);
successCount++;
} catch (Exception e) {
failCount++;
log.error("同步计划单失败,poCode:{}", code, e);
}
}
log.info("同步计划单总数量完成,成功:{}条,失败:{}条", successCount, failCount);
return true;
}
private void processSinglePlan(String code) {
// 第一步:查询t_wo表
Double woTotqty = erpDataProduceClient.selectMaxWototqtyByWono(code).getData();
if (woTotqty != null) {
// 存在WO记录,更新数量和检查时间
yieldPlanService.updateWithWo(code, woTotqty);
return;
}
// 第二步:查询t_wocls表
Double woclsTotqty = erpDataProduceClient.selectMaxWoclstotqtyByWono(code).getData();
if (woclsTotqty != null) {
// 存在已关闭WO记录,更新数量、检查时间并关闭状态
yieldPlanService.updateWithWocls(code, woclsTotqty);
return;
}
// 第三步:两个表都没有记录,仅更新检查时间
yieldPlanService.updateOnlyCheckTime(code);
}
@Override
public void launchTest(Map<String, Object> data, BladeUser user) throws Exception {
// 提取参数

@ -142,5 +142,15 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
return R.data(erpDataProduceService.returnOemErpByWxno(wxNo));
}
@Override
public R<Double> selectMaxWototqtyByWono(String code) {
return R.data(erpDataProduceService.selectMaxWototqtyByWono(code));
}
@Override
public R<Double> selectMaxWoclstotqtyByWono(String code) {
return R.data(erpDataProduceService.selectMaxWoclstotqtyByWono(code));
}
}

@ -40,4 +40,8 @@ public interface ErpDataProduceMapper extends Mapper {
List<MesRbRedoRoutDTO> loadReworkNoProcess();
List<Map<String, String>> trialItemList(List<String> nameList);
Double selectMaxWototqtyByWono(String code);
Double selectMaxWoclstotqtyByWono(String code);
}

@ -186,4 +186,10 @@
</foreach>
</if>
</select>
<select id="selectMaxWototqtyByWono" resultType="java.lang.Double">
SELECT MAX(wototqty) FROM dba_mgr.t_wo WHERE wono = #{code}
</select>
<select id="selectMaxWoclstotqtyByWono" resultType="java.lang.Double">
SELECT MAX(wototqty) FROM dba_mgr.t_wocls WHERE wono = #{code}
</select>
</mapper>

@ -66,4 +66,8 @@ public interface IErpDataProduceService {
String returnHandoverRecord(String hrCode, String partCode, String batchNo);
String returnOemErpByWxno(String wxNo);
Double selectMaxWototqtyByWono(String code);
Double selectMaxWoclstotqtyByWono(String code);
}

@ -579,4 +579,14 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
}
return excflag;
}
@Override
public Double selectMaxWototqtyByWono(String code) {
return erpDataProduceMapper.selectMaxWototqtyByWono(code);
}
@Override
public Double selectMaxWoclstotqtyByWono(String code) {
return erpDataProduceMapper.selectMaxWoclstotqtyByWono(code);
}
}

Loading…
Cancel
Save