外协订单下达接收feign接口实现,以及从erp获取需求日期代码补充

liweidong
zangzhipeng 1 day ago
parent bce082e11b
commit 3a0462dd07
  1. 35
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/oem/OemOrderOutProcessor.java
  2. 26
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkOrderRunOutClient.java
  3. 11
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClient.java
  4. 5
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClientFallback.java
  5. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkOrderRunOutClient.java
  6. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java
  7. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpMesRbWoClient.java
  8. 8
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java
  9. 4
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml
  10. 8
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpMesRbWoService.java
  11. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java

@ -0,0 +1,35 @@
package org.springblade.job.processor.oem;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.produce.feign.IWorkOrderRunOutClient;
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;
/**
* 外协订单下达ERP定时任务
*
* @author zangzhipeng
*/
@Component
@Slf4j
public class OemOrderOutProcessor implements BasicProcessor {
@Resource
private IWorkOrderRunOutClient workOrderRunOutClient;
@Override
public ProcessResult process(TaskContext context) throws Exception {
log.info("外协订单下达ERP定时任务开始");
try {
workOrderRunOutClient.oemOrderOut();
log.info("外协订单下达ERP定时任务执行完毕");
return new ProcessResult(true);
} catch (Exception e) {
log.error("外协订单下达ERP定时任务执行失败", e);
return new ProcessResult(false, e.getMessage());
}
}
}

@ -0,0 +1,26 @@
package org.springblade.desk.produce.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* 外协订单下达ERP定时任务 Feign接口
*
* @author zangzhipeng
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IWorkOrderRunOutClient {
String API_PREFIX = "/feign/client/workOrderRunOut";
String OEM_ORDER_OUT = API_PREFIX + "/oemOrderOut";
/**
* 外协订单下达ERP定时任务调用
*/
@GetMapping(OEM_ORDER_OUT)
R oemOrderOut();
}

@ -8,6 +8,7 @@ import org.springblade.erpdata.pojo.dto.view.MesRbWo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -35,6 +36,7 @@ public interface IErpMesRbWoClient {
String SYN_OUTSOURCING = API_PREFIX + "/synOutsourcing";
String SYN_CRAFT = API_PREFIX + "/synCraft";
String SYN_SUPPORTING_FACILITIES = API_PREFIX + "/synSupportingFacilities";
String GET_DEMAND_DATE = API_PREFIX + "/getDemandDateByWono";
/**
* 查询烧结配套信息
@ -73,4 +75,13 @@ public interface IErpMesRbWoClient {
R<Void> synCraft();
@GetMapping(SYN_SUPPORTING_FACILITIES)
R<Void> synSupportingFacilities();
/**
* 根据工作订单号查询ERP需求日期
*
* @param wono 工作订单号
* @return 需求日期字符串
*/
@GetMapping(GET_DEMAND_DATE)
R<String> getDemandDateByWono(@RequestParam(required = true) String wono);
}

@ -75,4 +75,9 @@ public class IErpMesRbWoClientFallback implements IErpMesRbWoClient {
public R<Void> synSupportingFacilities() {
return R.fail("获取数据失败");
}
@Override
public R<String> getDemandDateByWono(String wono) {
return R.fail("获取数据失败");
}
}

@ -0,0 +1,27 @@
package org.springblade.desk.produce.feign;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.service.IWorkOrderRunService;
import org.springframework.web.bind.annotation.RestController;
/**
* 外协订单下达ERP Feign实现
*
* @author zangzhipeng
*/
@NonDS
@Hidden
@RestController
@RequiredArgsConstructor
public class WorkOrderRunOutClient implements IWorkOrderRunOutClient {
private final IWorkOrderRunService workOrderRunService;
@Override
public R oemOrderOut() {
return workOrderRunService.oemOrderOut();
}
}

@ -43,6 +43,7 @@ import org.springblade.desk.produce.service.IPlateAroundService;
import org.springblade.desk.produce.service.IWorkOrderRunService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.erpdata.feign.IErpDataOemClient;
import org.springblade.erpdata.feign.IErpMesRbWoClient;
import org.springblade.system.cache.DictCache;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
@ -102,6 +103,8 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
private final IErpDataOemClient erpDataOemClient;
private final IErpMesRbWoClient erpMesRbWoClient;
@Resource
@Lazy
private void setPostHandleService(IPlateAroundService plateAroundService) {
@ -737,6 +740,13 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
if (yo.getDemandDate() != null) {
demandDateStr = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
.withZone(ZoneId.systemDefault()).format(yo.getDemandDate().toInstant());
} else {
// 需求日期为空时从ERP视图查询,查不到默认当天+10天
Date demandDate = fetchDemandDateFromErp(yo.getYpCode());
yo.setDemandDate(demandDate);
yieldOrderMapper.updateById(yo);
demandDateStr = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
.withZone(ZoneId.systemDefault()).format(demandDate.toInstant());
}
wxWoCode = erpDataOemClient.collaborativeOutsourcing(
yo.getPartCode(), yo.getProductIdent(), demandDateStr, wo.getMakeQty(),
@ -787,6 +797,28 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
return R.success("外协订单下达完成");
}
/**
* 从ERP视图查询需求日期查不到则返回当前日期+10天
*
* @param ypCode ERP工作订单号
* @return 需求日期
*/
private Date fetchDemandDateFromErp(String ypCode) {
try {
R<String> result = erpMesRbWoClient.getDemandDateByWono(ypCode);
if (result.isSuccess() && StringUtils.isNotBlank(result.getData())) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(result.getData());
}
} catch (Exception e) {
log.warn("从ERP查询需求日期失败,ypCode={},使用默认值");
}
// 默认当前日期+10天
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 10);
return cal.getTime();
}
@Transactional(rollbackFor = Exception.class)
@Override
public R changeOemManufacturer(Long worId, Long ocId) {

@ -107,4 +107,9 @@ public class ErpMesRbWoClient implements IErpMesRbWoClient {
log.info("同步配套订单定时任务结束");
return R.success();
}
@Override
public R<String> getDemandDateByWono(String wono) {
return R.data(erpMesRbWoService.getDemandDateByWono(wono));
}
}

@ -20,4 +20,12 @@ public interface ErpMesRbWoMapper extends Mapper {
List<MesRbWo> getYieldPlanErpList(String newlevdateMax);
String getNewlevdateMax(String selectTime);
/**
* 根据工作订单号查询需求日期
*
* @param wono 工作订单号
* @return 需求日期字符串
*/
String getDemandDateByWono(String wono);
}

@ -43,4 +43,8 @@
a.wopordat >= TO_DATE(#{selectTime}, 'YYYY-MM-DD HH24:MI:SS')
</where>
</select>
<select id="getDemandDateByWono" resultType="java.lang.String">
SELECT MAX(a.woreqdat) FROM dba_mgr.v_mes_rb_wo a WHERE a.wono = #{wono}
</select>
</mapper>

@ -56,4 +56,12 @@ public interface IErpMesRbWoService {
* 同步配套数据
*/
void synSupportingFacilities();
/**
* 根据工作订单号查询ERP需求日期
*
* @param wono 工作订单号
* @return 需求日期字符串查不到返回null
*/
String getDemandDateByWono(String wono);
}

@ -817,6 +817,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
// apsOrderClient.saveOrderList(yieldOrderList);
}
@Override
public String getDemandDateByWono(String wono) {
return mesRbWoMapper.getDemandDateByWono(wono);
}
private YieldOrder updateYieldType(YieldOrder yieldOrder,String pritno,String firseq){
//从零件表中查询零件信息
DsPartEntity part=apsOrderClient.getDsCraftListByCode(pritno);

Loading…
Cancel
Save