Browse Source

2026-03-19

1、获取物料成本时,同时抓取Estimated Material Cost成本字段,反刷到PLM
2、取消勾选框,添加数字录入框,需要传输到OA
  展示到项目名称后面
master
fengyuan_yang 4 weeks ago
parent
commit
d989042c57
  1. 12
      src/main/java/com/spring/modules/part/controller/PartInformationController.java
  2. 2
      src/main/java/com/spring/modules/part/service/PartInformationService.java
  3. 45
      src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java
  4. 4
      src/main/java/com/spring/modules/quote/entity/Quote.java
  5. 2
      src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java

12
src/main/java/com/spring/modules/part/controller/PartInformationController.java

@ -878,4 +878,16 @@ public class PartInformationController {
@RequestParam(required = false, defaultValue = "") String fieldName) { @RequestParam(required = false, defaultValue = "") String fieldName) {
return R.ok().put("rows", partInformationService.queryFieldChangeLog(site, partNo, fieldName)); return R.ok().put("rows", partInformationService.queryFieldChangeLog(site, partNo, fieldName));
} }
/**
* 查询物料的 estimatedMaterialCost仅编辑模式调用
* @param inData
* @return
*/
@PostMapping("/getInventoryPartCost")
@ResponseBody
public R getInventoryPartCost(@RequestBody InventoryPartUnitCostSumEntity inData) {
Map<String, Object> result = partInformationService.getInventoryPartCost(inData);
return R.ok().put("rows", result);
}
} }

2
src/main/java/com/spring/modules/part/service/PartInformationService.java

@ -183,4 +183,6 @@ public interface PartInformationService {
* @param fieldName 字段名传空字符串则查两个字段 * @param fieldName 字段名传空字符串则查两个字段
*/ */
List<PartFieldChangeLogEntity> queryFieldChangeLog(String site, String partNo, String fieldName); List<PartFieldChangeLogEntity> queryFieldChangeLog(String site, String partNo, String fieldName);
Map<String, Object> getInventoryPartCost(InventoryPartUnitCostSumEntity inData);
} }

45
src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java

@ -4057,6 +4057,51 @@ public class PartInformationServiceImpl extends ServiceImpl<PartInformationMappe
return partInformationMapper.queryPartUnitCostList(inData); return partInformationMapper.queryPartUnitCostList(inData);
} }
/**
* 查询物料的 estimatedMaterialCost仅编辑模式下调用
*/
@Override
public Map<String, Object> getInventoryPartCost(InventoryPartUnitCostSumEntity inData) {
log.info("[getInventoryPartCost] START - site: {}, partNo: {}, userName: {}",
inData.getSite(), inData.getPartNo(), inData.getUserName());
Map<String, Object> result = new HashMap<>();
PartInformationEntity partData = partInformationMapper.selectOne(
new QueryWrapper<PartInformationEntity>().eq("site", inData.getSite()).eq("part_no", inData.getPartNo()));
if (partData == null) {
log.warn("[getInventoryPartCost] Part not found in PLM - site: {}, partNo: {}", inData.getSite(), inData.getPartNo());
result.put("estimatedMaterialCost", null);
return result;
}
log.info("[getInventoryPartCost] Part found - site: {}, partNo: {}, status: {}", inData.getSite(), inData.getPartNo(), partData.getStatus());
if (!"Y".equals(partData.getStatus())) {
log.info("[getInventoryPartCost] Part is not an official part (status={}), skip IFS query - site: {}, partNo: {}",
partData.getStatus(), inData.getSite(), inData.getPartNo());
result.put("estimatedMaterialCost", null);
return result;
}
log.info("[getInventoryPartCost] Part is official, fetching IFS server for user: {}", inData.getUserName());
Server srv = getIfsServer(inData.getUserName());
PartIfsInventory partIfsInventory = new PartIfsInventory();
partIfsInventory.setContract(inData.getSite());
partIfsInventory.setPartNo(inData.getPartNo());
log.info("[getInventoryPartCost] Calling IFS getInventoryPartCost - contract: {}, partNo: {}", inData.getSite(), inData.getPartNo());
Map<String, String> costResponse = inventoryServiceBean.getInventoryPartCost(srv, partIfsInventory);
log.info("[getInventoryPartCost] IFS response - resultCode: {}, obj: {}, resultMsg: {}",
costResponse.get("resultCode"), costResponse.get("obj"), costResponse.get("resultMsg"));
if ("200".equals(costResponse.get("resultCode"))) {
PartIfsInventoryConfig config = JSONObject.parseObject(costResponse.get("obj"), PartIfsInventoryConfig.class);
log.info("[getInventoryPartCost] SUCCESS - estimatedMaterialCost: {}, configurationId: {}",
config.getEstimatedMaterialCost(), config.getConfigurationId());
result.put("estimatedMaterialCost", config.getEstimatedMaterialCost());
} else {
log.error("[getInventoryPartCost] IFS call failed - site: {}, partNo: {}, error: {}",
inData.getSite(), inData.getPartNo(), costResponse.get("resultMsg"));
result.put("estimatedMaterialCost", null);
}
log.info("[getInventoryPartCost] END - result: {}", result);
return result;
}
/** /**
* 同步 unitValue 到PLM * 同步 unitValue 到PLM
*/ */

4
src/main/java/com/spring/modules/quote/entity/Quote.java

@ -116,9 +116,9 @@ public class Quote extends QueryPage {
private Integer rejectStepId; private Integer rejectStepId;
/** /**
* 项目年销售额>100M
* 项目年销售额CNYK
*/ */
private String annualSales;
private BigDecimal annualSales;
/** /**
* ------------------(额外字段)---------------------- * ------------------(额外字段)----------------------

2
src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java

@ -540,7 +540,7 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements
Quote updateQuote = new Quote(); Quote updateQuote = new Quote();
updateQuote.setId(quote.getId()); updateQuote.setId(quote.getId());
// 只更新需要的字段 // 只更新需要的字段
if (!StringUtils.isEmpty(quote.getAnnualSales())) {
if (quote.getAnnualSales() != null) {
updateQuote.setAnnualSales(quote.getAnnualSales()); updateQuote.setAnnualSales(quote.getAnnualSales());
} }
// 可以根据需要添加其他需要更新的字段 // 可以根据需要添加其他需要更新的字段

Loading…
Cancel
Save