Browse Source

2025-06-03

master
fengyuan_yang 8 months ago
parent
commit
19556250e5
  1. 79
      src/main/java/com/spring/modules/part/service/impl/RoutingManagementServiceImpl.java
  2. 10
      src/main/resources/mapper/part/RoutingManagementMapper.xml

79
src/main/java/com/spring/modules/part/service/impl/RoutingManagementServiceImpl.java

@ -1612,53 +1612,54 @@ public class RoutingManagementServiceImpl extends ServiceImpl<RoutingManagementM
throw new RuntimeException(e.getMessage());
}
// // 查询PLM数据
// String[] arr = data.getSiteCon().replace("(", "").replace(")", "").replace("'", "").split(",");
// List<WorkCenterCost> plmWorkCenterCosts = routingManagementMapper.getPLMWorkCenterCosts(arr);
//
// // 转换列表为映射以便于比较
// Map<String, WorkCenterCost> mapListAll = ifsWorkCenterCosts.stream()
// .collect(Collectors.toMap(WorkCenterCost::getIfsRowId, Function.identity()));
// Map<String, WorkCenterCost> mapList1 = plmWorkCenterCosts.stream()
// .collect(Collectors.toMap(WorkCenterCost::getIfsRowId, Function.identity()));
// // 找出需要新增的对象IFS有而PLM没有的
// Set<String> keysToAdd = new HashSet<>(mapListAll.keySet());
// keysToAdd.removeAll(mapList1.keySet());
// List<WorkCenterCost> toAdd = keysToAdd.stream()
// .map(mapListAll::get)
// .collect(Collectors.toList());
//
// // 找出需要更新的对象ifsRowVersion不同
// Set<String> commonKeys = new HashSet<>(mapListAll.keySet());
// commonKeys.retainAll(mapList1.keySet());
// List<WorkCenterCost> toUpdate = commonKeys.stream()
// .filter(key -> !mapListAll.get(key).getIfsRowVersion().equals(mapList1.get(key).getIfsRowVersion()))
// .map(key -> mapListAll.get(key)) // 选择listAll中的版本进行更新
// .collect(Collectors.toList());
// 查询PLM数据
String[] arr = data.getSiteCon().replace("(", "").replace(")", "").replace("'", "").split(",");
List<WorkCenterCost> plmWorkCenterCosts = routingManagementMapper.getPLMWorkCenterCosts(arr);
// 转换列表为映射以便于比较
Map<String, WorkCenterCost> mapListAll = ifsWorkCenterCosts.stream()
.collect(Collectors.toMap(WorkCenterCost::getKey, Function.identity()));
Map<String, WorkCenterCost> mapList1 = plmWorkCenterCosts.stream()
.collect(Collectors.toMap(WorkCenterCost::getKey, Function.identity()));
// 找出需要新增的对象IFS有而PLM没有的
Set<String> keysToAdd = new HashSet<>(mapListAll.keySet());
keysToAdd.removeAll(mapList1.keySet());
List<WorkCenterCost> toAdd = keysToAdd.stream()
.map(mapListAll::get)
.collect(Collectors.toList());
// 找出需要更新的对象ifsRowVersion不同
Set<String> commonKeys = new HashSet<>(mapListAll.keySet());
commonKeys.retainAll(mapList1.keySet());
List<WorkCenterCost> toUpdate = commonKeys.stream()
.filter(key -> !mapListAll.get(key).getIfsRowVersion().equals(mapList1.get(key).getIfsRowVersion()))
.map(key -> mapListAll.get(key)) // 选择listAll中的版本进行更新
.collect(Collectors.toList());
// 删除再新增
if (!ifsWorkCenterCosts.isEmpty()) {
if (!toAdd.isEmpty()) {
// 清空数据
routingManagementMapper.deleteWorkCenterCostAll();
// 2025-06-03 改回原来的 有则修改 无则新增
// routingManagementMapper.deleteWorkCenterCostAll();
// 分批插入
int batchSize = 50; // 假设每批100条记录
for (int i = 0; i < ifsWorkCenterCosts.size(); i += batchSize) {
int end = Math.min(i + batchSize, ifsWorkCenterCosts.size());
List<WorkCenterCost> subList = ifsWorkCenterCosts.subList(i, end);
for (int i = 0; i < toAdd.size(); i += batchSize) {
int end = Math.min(i + batchSize, toAdd.size());
List<WorkCenterCost> subList = toAdd.subList(i, end);
routingManagementMapper.syncSaveWorkCenterCost(subList);
}
}
// // 修改
// if (!toUpdate.isEmpty()) {
// // 分批修改
// int batchSize = 50; // 假设每批100条记录
// for (int i = 0; i < toUpdate.size(); i += batchSize) {
// int end = Math.min(i + batchSize, toUpdate.size());
// List<WorkCenterCost> subList = toUpdate.subList(i, end);
// routingManagementMapper.syncUpdateWorkCenterCost(subList);
// }
// }
// 修改
if (!toUpdate.isEmpty()) {
// 分批修改
int batchSize = 50; // 假设每批100条记录
for (int i = 0; i < toUpdate.size(); i += batchSize) {
int end = Math.min(i + batchSize, toUpdate.size());
List<WorkCenterCost> subList = toUpdate.subList(i, end);
routingManagementMapper.syncUpdateWorkCenterCost(subList);
}
}
}
@Override

10
src/main/resources/mapper/part/RoutingManagementMapper.xml

@ -1558,11 +1558,11 @@
<!-- 批量新增 -->
<insert id="syncSaveWorkCenterCost">
INSERT INTO work_center_cost (site, work_center_no, item_no, unit_cost, overhead1_cost, overhead2_cost, um_id, begin_date, end_date, remark,
current_work_center_cost, ifs_row_id, ifs_row_version, cost_set, cost_set_desc, wc_rate, wc_cost_code, overhead1_fac, overhead2_fac, overhead1_appl, overhead2_appl)
ifs_row_id, ifs_row_version, cost_set, cost_set_desc, wc_rate, wc_cost_code, overhead1_fac, overhead2_fac, overhead1_appl, overhead2_appl)
VALUES
<foreach item="item" collection="list" separator=",">
(#{item.site}, #{item.workCenterNo}, #{item.itemNo,jdbcType=FLOAT}, #{item.unitCost,jdbcType=FLOAT}, #{item.overhead1Cost,jdbcType=FLOAT}, #{item.overhead2Cost,jdbcType=FLOAT}, #{item.umId}, #{item.beginDate,jdbcType=DATE}, #{item.endDate,jdbcType=DATE}, #{item.remark},
#{item.currentWorkCenterCost,jdbcType=DECIMAL}, #{item.ifsRowId}, #{item.ifsRowVersion}, #{item.costSet}, #{item.costSetDesc}, #{item.wcRate}, #{item.wcCostCode}, #{item.overhead1Fac}, #{item.overhead2Fac}, #{item.overhead1Appl}, #{item.overhead2Appl})
#{item.ifsRowId}, #{item.ifsRowVersion}, #{item.costSet}, #{item.costSetDesc}, #{item.wcRate}, #{item.wcCostCode}, #{item.overhead1Fac}, #{item.overhead2Fac}, #{item.overhead1Appl}, #{item.overhead2Appl})
</foreach>
</insert>
@ -1618,12 +1618,6 @@
</foreach>
ELSE remark
END,
current_work_center_cost = CASE ifs_row_id
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN #{item.ifsRowId} THEN #{item.currentWorkCenterCost}
</foreach>
ELSE current_work_center_cost
END,
ifs_row_version = CASE ifs_row_id
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN #{item.ifsRowId} THEN #{item.ifsRowVersion}

Loading…
Cancel
Save