From 695d501ce0a2eacecc58bb94892a5acfbf4eccca Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期四, 08 五月 2025 16:18:23 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml | 158 +++++
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java | 82 ++
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java | 40 +
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml | 52 +
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomLineJob.java | 280 +++++++++
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java | 39 +
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java | 226 +++++++
aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomLineJobService.java | 62 ++
aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java | 17
aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml | 206 ++++++
aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml | 12
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java | 82 ++
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java | 88 ++
aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java | 10
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java | 47 +
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomHeaderJob.java | 169 +++++
aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java | 68 ++
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomLineJobServiceImpl.java | 97 +++
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java | 13
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java | 25
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java | 6
21 files changed, 1,773 insertions(+), 6 deletions(-)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java
index 1d7c37f..0aeb3f6 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java
@@ -103,4 +103,10 @@
{
return toAjax(apsBomHeaderService.deleteApsBomHeaderByIds(ids));
}
+
+ @PostMapping("/test")
+ public void test()
+ {
+ apsBomHeaderService.setBomDataToRedis("FORTUNA");
+ }
}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java
new file mode 100644
index 0000000..1d1fa17
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java
@@ -0,0 +1,40 @@
+package com.aps.core.controller.mainPlan;
+
+import com.aps.common.core.web.controller.BaseController;
+import com.aps.common.core.web.page.TableDataInfo;
+import com.aps.common.security.annotation.RequiresPermissions;
+import com.aps.core.domain.ApsPlateOrderPlanManager;
+import com.aps.core.service.IApsPlateOrderPlanManagerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 閽i噾宸ュ崟璁″垝绠$悊LineController
+ *
+ * @author sfd
+ * @date 2025-05-08
+ */
+@RestController
+@RequestMapping("/ApsPlatOrderPlanManager")
+public class ApsPlatOrderPlanManagerController extends BaseController
+{
+ @Autowired
+ private IApsPlateOrderPlanManagerService iapPlateOrderPlanManagerService;
+
+ /**
+ * 鏌ヨ閽i噾宸ュ崟璁″垝
+ */
+ @RequiresPermissions("ApsPlatOrderPlanManager:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ApsPlateOrderPlanManager apsPlateOrderPlanManager)
+ {
+ startPage();
+ List<ApsPlateOrderPlanManager> list = iapPlateOrderPlanManagerService.selectApsPlanOrderManager(apsPlateOrderPlanManager);
+ return getDataTable(list);
+ }
+
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java
new file mode 100644
index 0000000..e391b63
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java
@@ -0,0 +1,88 @@
+package com.aps.core.domain;
+
+import com.aps.common.core.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serial;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 鏍囧噯宸ヨ壓璺嚎Header瀵硅薄 aps_standard_process_route_header
+ *
+ * @author zhl
+ * @date 2025-05-06
+ */
+@Data
+public class ApsPlateOrderPlanManager
+{
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /** 闇�姹侷D */
+ @Excel(name = "闇�姹侷D")
+ private String requireId;
+
+ /** 闇�姹傝拷婧疘D */
+ @Excel(name = "闇�姹傝拷婧疘D")
+ private String requireTraceId;
+
+ /** 宸ュ崟鍙� */
+ @Excel(name = "宸ュ崟鍙�")
+ private String workOrderNo;
+
+ /** 鍖归厤鏁伴噺 */
+ @Excel(name = "鍖归厤鏁伴噺")
+ private BigDecimal deductionAmount;
+
+ /** 宸ュ崟绫诲瀷 */
+ @Excel(name = "宸ュ崟绫诲瀷")
+ private String workOrderType;
+
+ /** 鏂欏彿 */
+ @Excel(name = "鏂欏彿")
+ private String mainPartNumber;
+
+ /** 涓讳欢鍥惧彿 */
+ @Excel(name = "涓讳欢鍥惧彿")
+ private String mainPartDrawingNumber;
+
+ /** 涓讳欢瀹㈡埛 */
+ @Excel(name = "涓讳欢瀹㈡埛")
+ private String customer;
+
+ /** 鐢熶骇鏁伴噺 */
+ @Excel(name = "鐢熶骇鏁伴噺")
+ private BigDecimal productionQuantity;
+
+ /** 閫傜敤宸ュ巶 */
+ @Excel(name = "閫傜敤宸ュ巶")
+ private String applicableFactories;
+
+ /** 寤惰繜椋庨櫓鏍囪瘑 */
+ @Excel(name = "寤惰繜椋庨櫓鏍囪瘑")
+ private String hasDelayRisk;
+
+ /** 鐢熶骇鍩哄湴 */
+ @Excel(name = "鐢熶骇鍩哄湴")
+ private String productionBase;
+
+ /** 璁″垝寮�宸ユ棩 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璁″垝寮�宸ユ棩", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date planStartDay;
+
+ /** 璁″垝瀹屽伐鏃� */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璁″垝瀹屽伐鏃�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date planEndDay;
+
+ /** 鏈尮閰嶇殑鐢熶骇鏁伴噺*/
+ private BigDecimal unmatchedQuantity;
+
+ /** 宸ュ崟鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "宸ュ崟鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date orderCreateTime;
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java
index ebc5448..a4708dd 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java
@@ -1,8 +1,10 @@
package com.aps.core.mapper;
-import java.util.List;
+import com.alibaba.fastjson2.JSONObject;
import com.aps.core.domain.ApsBomHeader;
import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
/**
* BOM Header 鏁版嵁绠$悊Mapper鎺ュ彛
@@ -60,4 +62,13 @@
* @return 缁撴灉
*/
public int deleteApsBomHeaderByIds(Long[] ids);
+
+
+ /**
+ * 鏌ヨBOM鏁版嵁 鐢ㄤ簬瀛樺偍鍒皉edis涓�
+ *
+ * @param orgCode BOM Header 鏁版嵁绠$悊
+ * @return BOM Header 鏁版嵁绠$悊闆嗗悎
+ */
+ List<JSONObject> selectBomRedisData(String orgCode);
}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java
new file mode 100644
index 0000000..b46fc96
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java
@@ -0,0 +1,25 @@
+package com.aps.core.mapper;
+
+import com.aps.core.domain.ApsPlateOrderPlanManager;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 閽i噾宸ュ崟璁″垝绠$悊鎺ュ彛
+ *
+ * @author sfd
+ * @date 2025-05-08
+ */
+@Mapper
+public interface ApsPlateOrderPlanManagerMapper
+{
+
+ /**
+ * 閽i噾宸ュ崟璁″垝绠$悊
+ *
+ * @param apsPlateOrderPlanManager 閽i噾宸ュ崟璁″垝绠$悊
+ * @return 閽i噾宸ュ崟璁″垝绠$悊
+ */
+ List<ApsPlateOrderPlanManager> selectApsPlanOrderManager(ApsPlateOrderPlanManager apsPlateOrderPlanManager);
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java
index d3172ba..c985f36 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java
@@ -1,7 +1,8 @@
package com.aps.core.service;
-import java.util.List;
import com.aps.core.domain.ApsBomHeader;
+
+import java.util.List;
/**
* BOM Header 鏁版嵁绠$悊Service鎺ュ彛
@@ -58,4 +59,11 @@
* @return 缁撴灉
*/
public int deleteApsBomHeaderById(Long id);
+
+
+ /**
+ * 鍚屾BOM鏁版嵁鍒癛edis
+ * @return
+ */
+ public boolean setBomDataToRedis(String orgCode);
}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java
new file mode 100644
index 0000000..05da025
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java
@@ -0,0 +1,17 @@
+package com.aps.core.service;
+
+import com.aps.core.domain.ApsPlateOrderPlanManager;
+
+import java.util.List;
+
+/**
+ * 閽i噾宸ュ崟璁″垝绠$悊Service鎺ュ彛
+ *
+ * @author sfd
+ * @date 2025-05-08
+ */
+public interface IApsPlateOrderPlanManagerService
+{
+
+ List<ApsPlateOrderPlanManager> selectApsPlanOrderManager(ApsPlateOrderPlanManager apsPlateOrderPlanManager);
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java
index 7ec3fdd..f1edfa2 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java
@@ -1,12 +1,16 @@
package com.aps.core.service.impl;
-import java.util.List;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
import com.aps.common.core.utils.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.aps.core.mapper.ApsBomHeaderMapper;
import com.aps.core.domain.ApsBomHeader;
+import com.aps.core.mapper.ApsBomHeaderMapper;
import com.aps.core.service.IApsBomHeaderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
/**
* BOM Header 鏁版嵁绠$悊Service涓氬姟灞傚鐞�
@@ -19,6 +23,9 @@
{
@Autowired
private ApsBomHeaderMapper apsBomHeaderMapper;
+
+ @Autowired
+ public RedisTemplate redisTemplate;
/**
* 鏌ヨBOM Header 鏁版嵁绠$悊
@@ -93,4 +100,36 @@
{
return apsBomHeaderMapper.deleteApsBomHeaderById(id);
}
+
+ /**
+ * 璁剧疆BOM鏁版嵁鍒癛edis
+ * @return
+ */
+ @Override
+ public boolean setBomDataToRedis(String orgCode) {
+ try {
+ List<JSONObject> bomRedisData = apsBomHeaderMapper.selectBomRedisData(orgCode);
+ String nowMainItemCode = "";
+ JSONArray bomLine = new JSONArray();
+ for (int i=0,size=bomRedisData.size();i<size;i++) {
+ JSONObject jsonObject = bomRedisData.get(i);
+ if("".equals(nowMainItemCode)){
+ nowMainItemCode = jsonObject.getString("mainitemcode");
+ }
+ if(!nowMainItemCode.equals(jsonObject.getString("mainitemcode"))){
+ redisTemplate.opsForValue().set("BOM:BOM_"+orgCode+"_"+nowMainItemCode, bomLine);
+ bomLine = new JSONArray();
+ }
+ bomLine.add(jsonObject);
+ nowMainItemCode = jsonObject.getString("mainitemcode");
+ if(i==size-1){
+ redisTemplate.opsForValue().set("BOM:BOM_"+orgCode+"_"+nowMainItemCode, bomLine);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java
new file mode 100644
index 0000000..001c0d9
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java
@@ -0,0 +1,39 @@
+package com.aps.core.service.impl;
+
+import com.aps.common.core.utils.DateUtils;
+import com.aps.common.core.utils.uuid.IdUtils;
+import com.aps.common.security.utils.SecurityUtils;
+import com.aps.core.domain.ApsPlant;
+import com.aps.core.domain.ApsPlateOrderPlanManager;
+import com.aps.core.mapper.ApsPlantMapper;
+import com.aps.core.mapper.ApsPlateOrderPlanManagerMapper;
+import com.aps.core.service.IApsPlantService;
+import com.aps.core.service.IApsPlateOrderPlanManagerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 閽i噾宸ュ崟璁″垝绠$悊鎺ュ彛 Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-04-14
+ */
+@Service
+public class ApsPlateOrderPlanManagerServiceImpl implements IApsPlateOrderPlanManagerService
+{
+ @Autowired
+ private ApsPlateOrderPlanManagerMapper apsPlateOrderPlanManagerMapper;
+
+ /**
+ * 鏌ヨ閽i噾宸ュ崟璁″垝绠$悊
+ *
+ * @param apsPlateOrderPlanManager 閽i噾宸ュ崟璁″垝绠$悊
+ * @return 閽i噾宸ュ崟璁″垝绠$悊
+ */
+ @Override
+ public List<ApsPlateOrderPlanManager> selectApsPlanOrderManager(ApsPlateOrderPlanManager apsPlateOrderPlanManager) {
+ return apsPlateOrderPlanManagerMapper.selectApsPlanOrderManager(apsPlateOrderPlanManager);
+ }
+}
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml
index 96ca63c..31c225b 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml
@@ -102,4 +102,16 @@
#{id}
</foreach>
</delete>
+
+ <select id="selectBomRedisData" parameterType="String" resultType="com.alibaba.fastjson2.JSONObject">
+ SELECT a.item_code as mainItemCode,f.num as mainStock,b.item_code as subItemCode,b.num as usageNum,c.num as subStock,d.self_made as selfMade FROM aps_bom_header a
+ LEFT JOIN aps_bom_line b on a.bom_header_id=b.bom_header_id
+ LEFT JOIN aps_material_storage_management c on b.item_code=c.item_number
+ LEFT JOIN aps_material_management d on b.item_code=d.item_number
+ LEFT JOIN aps_material_storage_management as f on a.item_code=f.item_number
+ <if test="orgCode != null and orgCode != ''">
+ WHERE a.org_code=#{orgCode} and d.applicable_factories=#{orgCode} and c.applicable_factories=#{orgCode}
+ </if>
+ ORDER BY mainItemCode
+ </select>
</mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml
new file mode 100644
index 0000000..506010d
--- /dev/null
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.aps.core.mapper.ApsPlateOrderPlanManagerMapper">
+
+ <resultMap type="ApsPlateOrderPlanManager" id="ApsPlateOrderPlanManagerResult">
+ <result property="require_id" column="requireId" />
+ <result property="requireTrackId" column="require_track_id" />
+ <result property="docNo" column="doc_no" />
+ <result property="deductionAmount" column="deduction_amount" />
+ <result property="workOrderType" column="work_order_type" />
+ <result property="mainPartNumber" column="main_part_number" />
+ <result property="mainPartDrawingNumber" column="main_part_drawing_number" />
+ <result property="customer" column="customer" />
+ <result property="productionQuantity" column="production_quantity" />
+ <result property="applicableFactories" column="applicable_factories" />
+ <result property="productionBase" column="production_base" />
+ <result property="planStartDay" column="plan_start_day" />
+ <result property="planEndDay" column="plan_end_day" />
+ <result property="unmatchedQuantity" column="unmatched_quantity" />
+ <result property="hasDelayRisk" column="has_delay_risk" />
+ </resultMap>
+
+ <select id="selectApsPlanOrderManager" parameterType="ApsPlateOrderPlanManager" resultMap="ApsPlateOrderPlanManagerResult">
+ select
+ detail.require_id,
+ detail.require_track_id,
+ detail.doc_no,
+ detail.deduction_amount,
+ plan.professional_affiliation as workOrderType,
+ plan.main_part_number as item_number,
+ plan.main_part_drawing_number,
+ plan.customer,
+ plan.production_quantity,
+ plan.plant as applicable_factories,
+ plan.production_base,
+ plan.plan_start_day,
+ plan.plan_end_day,
+ plan.unmatched_quantity,
+ plan.has_risk as has_delay_risk
+ from aps_plate_standard_require_bom_order_detail detail
+ left join aps_plate_plan plan on detail.doc_no = plan.document_number
+ <where>
+ <if test="workOrderNo != null and workOrderNo != ''"> and detail.doc_no = #{workOrderNo}</if>
+ <if test="requireId != null and requireId != ''"> and detail.require_id = #{requireId}</if>
+ <if test="mainPartNumber != null and mainPartNumber != ''"> and plan.main_part_number = #{mainPartNumber}</if>
+ <if test="hasDelayRisk != null and hasDelayRisk != ''"> and plan.has_risk = #{hasDelayRisk}</if>
+ </where>
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomHeaderJob.java b/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomHeaderJob.java
new file mode 100644
index 0000000..99d151e
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomHeaderJob.java
@@ -0,0 +1,169 @@
+package com.aps.job.domain;
+
+import com.aps.common.core.annotation.Excel;
+import com.aps.common.core.web.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * BOM Header 鏁版嵁绠$悊瀵硅薄 aps_bom_header_job
+ *
+ * @author hjy
+ * @date 2025-05-08
+ */
+public class ApsBomHeaderJob extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 涓婚敭ID */
+ private Long id;
+
+ /** bomID */
+ @JsonProperty("HID")
+ @Excel(name = "bomID")
+ private String bomHeaderId;
+
+ /** 鏂欏彿 */
+ @JsonProperty("HItemCode")
+ @Excel(name = "鏂欏彿")
+ private String itemCode;
+
+ /** 鐗╂枡鎻忚堪 */
+ @JsonProperty("HItemName")
+ @Excel(name = "鐗╂枡鎻忚堪")
+ private String itemName;
+
+ /** 鐢熸晥鏃ユ湡 */
+ @JsonProperty("HEffectiveDate")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鐢熸晥鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date startDate;
+
+ /** 澶辨晥鏃ユ湡 */
+ @JsonProperty("HDisableDate")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "澶辨晥鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date endDate;
+
+ /** 宸ュ巶缂栫爜 */
+ @JsonProperty("HOrgName")
+ @Excel(name = "宸ュ巶缂栫爜")
+ private String orgCode;
+
+ @JsonProperty("BOMLines")
+ private List<ApsBomLineJob> bomLines;
+
+ /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
+ private String delFlag;
+
+ public List<ApsBomLineJob> getBomLines() {
+ return bomLines;
+ }
+
+ public void setBomLines(List<ApsBomLineJob> bomLines) {
+ this.bomLines = bomLines;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setBomHeaderId(String bomHeaderId)
+ {
+ this.bomHeaderId = bomHeaderId;
+ }
+
+ public String getBomHeaderId()
+ {
+ return bomHeaderId;
+ }
+
+ public void setItemCode(String itemCode)
+ {
+ this.itemCode = itemCode;
+ }
+
+ public String getItemCode()
+ {
+ return itemCode;
+ }
+
+ public void setItemName(String itemName)
+ {
+ this.itemName = itemName;
+ }
+
+ public String getItemName()
+ {
+ return itemName;
+ }
+
+ public void setStartDate(Date startDate)
+ {
+ this.startDate = startDate;
+ }
+
+ public Date getStartDate()
+ {
+ return startDate;
+ }
+
+ public void setEndDate(Date endDate)
+ {
+ this.endDate = endDate;
+ }
+
+ public Date getEndDate()
+ {
+ return endDate;
+ }
+
+ public void setOrgCode(String orgCode)
+ {
+ this.orgCode = orgCode;
+ }
+
+ public String getOrgCode()
+ {
+ return orgCode;
+ }
+
+ public void setDelFlag(String delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public String getDelFlag()
+ {
+ return delFlag;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("bomHeaderId", getBomHeaderId())
+ .append("itemCode", getItemCode())
+ .append("itemName", getItemName())
+ .append("startDate", getStartDate())
+ .append("endDate", getEndDate())
+ .append("orgCode", getOrgCode())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomLineJob.java b/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomLineJob.java
new file mode 100644
index 0000000..fa9f869
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomLineJob.java
@@ -0,0 +1,280 @@
+package com.aps.job.domain;
+
+import com.aps.common.core.annotation.Excel;
+import com.aps.common.core.web.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * BOM鏁版嵁绠$悊瀵硅薄 aps_bom_line_job
+ *
+ * @author hjy
+ * @date 2025-05-08
+ */
+public class ApsBomLineJob extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 涓婚敭ID */
+ private Long id;
+
+ /** bom_line_id */
+ @JsonProperty("LID")
+ @Excel(name = "bom_line_id")
+ private String bomLineId;
+
+ /** 鐖惰妭鐐笲OM ID */
+ @JsonProperty("HID")
+ @Excel(name = "鐖惰妭鐐笲OM ID")
+ private String bomHeaderId;
+
+ /** 鏂欏彿 */
+ @JsonProperty("LItemCode")
+ @Excel(name = "鏂欏彿")
+ private String itemCode;
+
+ /** 鐗╂枡鎻忚堪 */
+ @JsonProperty("LItemName")
+ @Excel(name = "鐗╂枡鎻忚堪")
+ private String itemName;
+
+ /** 鐢熸晥鏃ユ湡 */
+ @JsonProperty("LEffectiveDate")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鐢熸晥鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date startDate;
+
+ /** 澶辨晥鏃ユ湡 */
+ @JsonProperty("LDisableDate")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "澶辨晥鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date endDate;
+
+ /** 宸ュ巶缂栫爜 */
+ @JsonProperty("LOrgName")
+ @Excel(name = "宸ュ巶缂栫爜")
+ private String orgCode;
+
+ /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
+ private String delFlag;
+
+ /** 鍥惧彿 */
+ @Excel(name = "鍥惧彿")
+ private String drawingNo;
+
+ /** 搴忓彿 */
+ @Excel(name = "搴忓彿")
+ private String processNo;
+
+ /** 鍗曚綅 */
+ @Excel(name = "鍗曚綅")
+ private String unit;
+
+ /** 鏁伴噺 */
+ @JsonProperty("UsageQty")
+ @Excel(name = "鏁伴噺")
+ private BigDecimal num;
+
+ /** 鎬绘暟閲� */
+ @Excel(name = "鎬绘暟閲�")
+ private BigDecimal totalNum;
+
+ /** 鍑嗗宸ユ椂 */
+ @Excel(name = "鍑嗗宸ユ椂")
+ private BigDecimal preparationTime;
+
+ /** 鍔犲伐宸ユ椂 */
+ @Excel(name = "鍔犲伐宸ユ椂")
+ private BigDecimal processingTime;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setBomLineId(String bomLineId)
+ {
+ this.bomLineId = bomLineId;
+ }
+
+ public String getBomLineId()
+ {
+ return bomLineId;
+ }
+
+ public void setBomHeaderId(String bomHeaderId)
+ {
+ this.bomHeaderId = bomHeaderId;
+ }
+
+ public String getBomHeaderId()
+ {
+ return bomHeaderId;
+ }
+
+ public void setItemCode(String itemCode)
+ {
+ this.itemCode = itemCode;
+ }
+
+ public String getItemCode()
+ {
+ return itemCode;
+ }
+
+ public void setItemName(String itemName)
+ {
+ this.itemName = itemName;
+ }
+
+ public String getItemName()
+ {
+ return itemName;
+ }
+
+ public void setStartDate(Date startDate)
+ {
+ this.startDate = startDate;
+ }
+
+ public Date getStartDate()
+ {
+ return startDate;
+ }
+
+ public void setEndDate(Date endDate)
+ {
+ this.endDate = endDate;
+ }
+
+ public Date getEndDate()
+ {
+ return endDate;
+ }
+
+ public void setOrgCode(String orgCode)
+ {
+ this.orgCode = orgCode;
+ }
+
+ public String getOrgCode()
+ {
+ return orgCode;
+ }
+
+ public void setDelFlag(String delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public String getDelFlag()
+ {
+ return delFlag;
+ }
+
+ public void setDrawingNo(String drawingNo)
+ {
+ this.drawingNo = drawingNo;
+ }
+
+ public String getDrawingNo()
+ {
+ return drawingNo;
+ }
+
+ public void setProcessNo(String processNo)
+ {
+ this.processNo = processNo;
+ }
+
+ public String getProcessNo()
+ {
+ return processNo;
+ }
+
+ public void setUnit(String unit)
+ {
+ this.unit = unit;
+ }
+
+ public String getUnit()
+ {
+ return unit;
+ }
+
+ public void setNum(BigDecimal num)
+ {
+ this.num = num;
+ }
+
+ public BigDecimal getNum()
+ {
+ return num;
+ }
+
+ public void setTotalNum(BigDecimal totalNum)
+ {
+ this.totalNum = totalNum;
+ }
+
+ public BigDecimal getTotalNum()
+ {
+ return totalNum;
+ }
+
+ public void setPreparationTime(BigDecimal preparationTime)
+ {
+ this.preparationTime = preparationTime;
+ }
+
+ public BigDecimal getPreparationTime()
+ {
+ return preparationTime;
+ }
+
+ public void setProcessingTime(BigDecimal processingTime)
+ {
+ this.processingTime = processingTime;
+ }
+
+ public BigDecimal getProcessingTime()
+ {
+ return processingTime;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("bomLineId", getBomLineId())
+ .append("bomHeaderId", getBomHeaderId())
+ .append("itemCode", getItemCode())
+ .append("itemName", getItemName())
+ .append("startDate", getStartDate())
+ .append("endDate", getEndDate())
+ .append("orgCode", getOrgCode())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .append("drawingNo", getDrawingNo())
+ .append("processNo", getProcessNo())
+ .append("unit", getUnit())
+ .append("num", getNum())
+ .append("totalNum", getTotalNum())
+ .append("preparationTime", getPreparationTime())
+ .append("processingTime", getProcessingTime())
+ .toString();
+ }
+}
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java
new file mode 100644
index 0000000..5854349
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java
@@ -0,0 +1,82 @@
+package com.aps.job.mapper;
+
+import com.aps.job.domain.ApsBomHeaderJob;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * BOM Header 鏁版嵁绠$悊Mapper鎺ュ彛
+ *
+ * @author hjy
+ * @date 2025-05-08
+ */
+public interface ApsBomHeaderJobMapper
+{
+ /**
+ * 鏌ヨBOM Header 鏁版嵁绠$悊
+ *
+ * @param id BOM Header 鏁版嵁绠$悊涓婚敭
+ * @return BOM Header 鏁版嵁绠$悊
+ */
+ public ApsBomHeaderJob selectApsBomHeaderJobById(Long id);
+
+ /**
+ * 鏌ヨBOM Header 鏁版嵁绠$悊鍒楄〃
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return BOM Header 鏁版嵁绠$悊闆嗗悎
+ */
+ public List<ApsBomHeaderJob> selectApsBomHeaderJobList(ApsBomHeaderJob apsBomHeaderJob);
+
+ /**
+ * 鏂板BOM Header 鏁版嵁绠$悊
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ public int insertApsBomHeaderJob(ApsBomHeaderJob apsBomHeaderJob);
+
+ /**
+ * 淇敼BOM Header 鏁版嵁绠$悊
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ public int updateApsBomHeaderJob(ApsBomHeaderJob apsBomHeaderJob);
+
+ /**
+ * 鍒犻櫎BOM Header 鏁版嵁绠$悊
+ *
+ * @param id BOM Header 鏁版嵁绠$悊涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteApsBomHeaderJobById(Long id);
+
+ /**
+ * 鎵归噺鍒犻櫎BOM Header 鏁版嵁绠$悊
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteApsBomHeaderJobByIds(Long[] ids);
+
+ /**
+ * 鎵归噺鎻掑叆BOM Header鏁版嵁
+ * @param list
+ * @return
+ */
+ public int insertApsBomHeaderJobBatch(@Param("list") List<ApsBomHeaderJob> list);
+
+ /**
+ * 鎵归噺鎻掑叆BOM Header鏁版嵁鍒颁笟鍔¤〃
+ * @return
+ */
+ public void insertIntoApsBomHeader();
+
+ /**
+ * 鍒犻櫎BOM Header鏁版嵁
+ * @return
+ */
+ public void deleteApsBomHeader();
+}
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java
new file mode 100644
index 0000000..3d2385d
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java
@@ -0,0 +1,82 @@
+package com.aps.job.mapper;
+
+import com.aps.job.domain.ApsBomLineJob;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * BOM鏁版嵁绠$悊Mapper鎺ュ彛
+ *
+ * @author hjy
+ * @date 2025-05-08
+ */
+public interface ApsBomLineJobMapper
+{
+ /**
+ * 鏌ヨBOM鏁版嵁绠$悊
+ *
+ * @param id BOM鏁版嵁绠$悊涓婚敭
+ * @return BOM鏁版嵁绠$悊
+ */
+ public ApsBomLineJob selectApsBomLineJobById(Long id);
+
+ /**
+ * 鏌ヨBOM鏁版嵁绠$悊鍒楄〃
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return BOM鏁版嵁绠$悊闆嗗悎
+ */
+ public List<ApsBomLineJob> selectApsBomLineJobList(ApsBomLineJob apsBomLineJob);
+
+ /**
+ * 鏂板BOM鏁版嵁绠$悊
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ public int insertApsBomLineJob(ApsBomLineJob apsBomLineJob);
+
+ /**
+ * 淇敼BOM鏁版嵁绠$悊
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ public int updateApsBomLineJob(ApsBomLineJob apsBomLineJob);
+
+ /**
+ * 鍒犻櫎BOM鏁版嵁绠$悊
+ *
+ * @param id BOM鏁版嵁绠$悊涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteApsBomLineJobById(Long id);
+
+ /**
+ * 鎵归噺鍒犻櫎BOM鏁版嵁绠$悊
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteApsBomLineJobByIds(Long[] ids);
+
+ /**
+ * 鎵归噺鎻掑叆BOM Line鏁版嵁绠$悊
+ * @param list
+ * @return
+ */
+ public int insertApsBomLineJobBatch(@Param("list") List<ApsBomLineJob> list);
+
+ /**
+ * 鎵归噺鎻掑叆BOM Line鏁版嵁绠$悊鍒颁笟鍔¤〃
+ * @return
+ */
+ public void insertIntoApsBomLine();
+
+ /**
+ * 鍒犻櫎BOM Line鏁版嵁
+ */
+ public void deleteApsBomLine() ;
+
+}
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java
new file mode 100644
index 0000000..2804618
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java
@@ -0,0 +1,68 @@
+package com.aps.job.service;
+
+import com.aps.job.domain.ApsBomHeaderJob;
+
+import java.util.List;
+
+/**
+ * BOM Header 鏁版嵁绠$悊Service鎺ュ彛
+ *
+ * @author hjy
+ * @date 2025-05-08
+ */
+public interface IApsBomHeaderJobService
+{
+ /**
+ * 鏌ヨBOM Header 鏁版嵁绠$悊
+ *
+ * @param id BOM Header 鏁版嵁绠$悊涓婚敭
+ * @return BOM Header 鏁版嵁绠$悊
+ */
+ public ApsBomHeaderJob selectApsBomHeaderJobById(Long id);
+
+ /**
+ * 鏌ヨBOM Header 鏁版嵁绠$悊鍒楄〃
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return BOM Header 鏁版嵁绠$悊闆嗗悎
+ */
+ public List<ApsBomHeaderJob> selectApsBomHeaderJobList(ApsBomHeaderJob apsBomHeaderJob);
+
+ /**
+ * 鏂板BOM Header 鏁版嵁绠$悊
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ public int insertApsBomHeaderJob(ApsBomHeaderJob apsBomHeaderJob);
+
+ /**
+ * 淇敼BOM Header 鏁版嵁绠$悊
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ public int updateApsBomHeaderJob(ApsBomHeaderJob apsBomHeaderJob);
+
+ /**
+ * 鎵归噺鍒犻櫎BOM Header 鏁版嵁绠$悊
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑BOM Header 鏁版嵁绠$悊涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteApsBomHeaderJobByIds(Long[] ids);
+
+ /**
+ * 鍒犻櫎BOM Header 鏁版嵁绠$悊淇℃伅
+ *
+ * @param id BOM Header 鏁版嵁绠$悊涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteApsBomHeaderJobById(Long id);
+
+ /**
+ * 鍚屾U9 BOM鏁版嵁
+ * @return
+ */
+ public boolean syncBomData(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList);
+}
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomLineJobService.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomLineJobService.java
new file mode 100644
index 0000000..2afbb46
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomLineJobService.java
@@ -0,0 +1,62 @@
+package com.aps.job.service;
+
+import com.aps.job.domain.ApsBomLineJob;
+
+import java.util.List;
+
+/**
+ * BOM鏁版嵁绠$悊Service鎺ュ彛
+ *
+ * @author hjy
+ * @date 2025-05-08
+ */
+public interface IApsBomLineJobService
+{
+ /**
+ * 鏌ヨBOM鏁版嵁绠$悊
+ *
+ * @param id BOM鏁版嵁绠$悊涓婚敭
+ * @return BOM鏁版嵁绠$悊
+ */
+ public ApsBomLineJob selectApsBomLineJobById(Long id);
+
+ /**
+ * 鏌ヨBOM鏁版嵁绠$悊鍒楄〃
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return BOM鏁版嵁绠$悊闆嗗悎
+ */
+ public List<ApsBomLineJob> selectApsBomLineJobList(ApsBomLineJob apsBomLineJob);
+
+ /**
+ * 鏂板BOM鏁版嵁绠$悊
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ public int insertApsBomLineJob(ApsBomLineJob apsBomLineJob);
+
+ /**
+ * 淇敼BOM鏁版嵁绠$悊
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ public int updateApsBomLineJob(ApsBomLineJob apsBomLineJob);
+
+ /**
+ * 鎵归噺鍒犻櫎BOM鏁版嵁绠$悊
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑BOM鏁版嵁绠$悊涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteApsBomLineJobByIds(Long[] ids);
+
+ /**
+ * 鍒犻櫎BOM鏁版嵁绠$悊淇℃伅
+ *
+ * @param id BOM鏁版嵁绠$悊涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteApsBomLineJobById(Long id);
+}
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java
new file mode 100644
index 0000000..3a1fa14
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java
@@ -0,0 +1,226 @@
+package com.aps.job.service.impl;
+
+import cn.hutool.core.util.IdUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.aps.common.core.utils.DateUtils;
+import com.aps.common.core.utils.StringUtils;
+import com.aps.job.domain.ApsBomHeaderJob;
+import com.aps.job.domain.ApsBomLineJob;
+import com.aps.job.domain.ApsWorkOrderJobLog;
+import com.aps.job.mapper.ApsBomHeaderJobMapper;
+import com.aps.job.mapper.ApsBomLineJobMapper;
+import com.aps.job.mapper.ApsWorkOrderJobLogMapper;
+import com.aps.job.service.IApsBomHeaderJobService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * BOM Header 鏁版嵁绠$悊Service涓氬姟灞傚鐞�
+ *
+ * @author hjy
+ * @date 2025-05-08
+ */
+@Service
+public class ApsBomHeaderJobServiceImpl implements IApsBomHeaderJobService
+{
+ @Autowired
+ private ApsBomHeaderJobMapper apsBomHeaderJobMapper;
+
+ @Autowired
+ private ApsBomLineJobMapper apsBomLineJobMapper;
+
+ /**
+ * 鑾峰彇璁㈠崟鎺ュ彛
+ * */
+ @Value("${u9.bomJobUrl}")
+ private String getBomUrl;
+
+ @Autowired
+ private ApsWorkOrderJobLogMapper jobLogMapper;
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ /**
+ * 鏌ヨBOM Header 鏁版嵁绠$悊
+ *
+ * @param id BOM Header 鏁版嵁绠$悊涓婚敭
+ * @return BOM Header 鏁版嵁绠$悊
+ */
+ @Override
+ public ApsBomHeaderJob selectApsBomHeaderJobById(Long id)
+ {
+ return apsBomHeaderJobMapper.selectApsBomHeaderJobById(id);
+ }
+
+ /**
+ * 鏌ヨBOM Header 鏁版嵁绠$悊鍒楄〃
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return BOM Header 鏁版嵁绠$悊
+ */
+ @Override
+ public List<ApsBomHeaderJob> selectApsBomHeaderJobList(ApsBomHeaderJob apsBomHeaderJob)
+ {
+ return apsBomHeaderJobMapper.selectApsBomHeaderJobList(apsBomHeaderJob);
+ }
+
+ /**
+ * 鏂板BOM Header 鏁版嵁绠$悊
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertApsBomHeaderJob(ApsBomHeaderJob apsBomHeaderJob)
+ {
+ apsBomHeaderJob.setCreateTime(DateUtils.getNowDate());
+ return apsBomHeaderJobMapper.insertApsBomHeaderJob(apsBomHeaderJob);
+ }
+
+ /**
+ * 淇敼BOM Header 鏁版嵁绠$悊
+ *
+ * @param apsBomHeaderJob BOM Header 鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateApsBomHeaderJob(ApsBomHeaderJob apsBomHeaderJob)
+ {
+ apsBomHeaderJob.setUpdateTime(DateUtils.getNowDate());
+ return apsBomHeaderJobMapper.updateApsBomHeaderJob(apsBomHeaderJob);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎BOM Header 鏁版嵁绠$悊
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑BOM Header 鏁版嵁绠$悊涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteApsBomHeaderJobByIds(Long[] ids)
+ {
+ return apsBomHeaderJobMapper.deleteApsBomHeaderJobByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎BOM Header 鏁版嵁绠$悊淇℃伅
+ *
+ * @param id BOM Header 鏁版嵁绠$悊涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteApsBomHeaderJobById(Long id)
+ {
+ return apsBomHeaderJobMapper.deleteApsBomHeaderJobById(id);
+ }
+
+ @Override
+ public boolean syncBomData(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList) {
+ try {
+ // 璁剧疆璇锋眰澶�
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ // 璁剧疆璇锋眰浣�
+ while (true) {
+ ApsWorkOrderJobLog jobLog = new ApsWorkOrderJobLog();
+ JSONObject requestBody = new JSONObject();
+ requestBody.put("PageIndex", pageIndex);
+ requestBody.put("PageSize", pageSize);
+ if(!StringUtils.isEmpty(orgCode)){
+ requestBody.put("OrgCode", orgCode);
+ }
+ // 鍒涘缓HttpEntity瀵硅薄
+ HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers);
+ // 鍙戦�丳OST璇锋眰
+ ResponseEntity<String> response = restTemplate.postForEntity(getBomUrl, request, String.class);
+ JSONObject responseBodyJson = JSONObject.parseObject(response.getBody());
+ if (response.getStatusCode().is2xxSuccessful() && "200".equals(responseBodyJson.getString("status"))) {
+ JSONArray jsonArray = responseBodyJson.getJSONArray("data");
+ if (!jsonArray.isEmpty()) {
+ List<ApsBomHeaderJob> headerList = new ArrayList<>();
+ List<ApsBomLineJob> lineList = new ArrayList<>();
+ for (Object o : jsonArray) {
+ //o瀵硅薄涓殑灞炴�ц祴鍊肩粰ApsBomHeaderJob瀵硅薄
+ JSONObject bomHeader = (JSONObject) o;
+ JSONArray bomLines = bomHeader.getJSONArray("BOMLines");
+ ApsBomHeaderJob insertBomHeader = new ApsBomHeaderJob();
+ insertBomHeader.setId(IdUtil.getSnowflakeNextId());
+ insertBomHeader.setBomHeaderId(bomHeader.getString("HID"));
+ insertBomHeader.setItemCode(bomHeader.getString("HItemCode"));
+ insertBomHeader.setItemName(bomHeader.getString("HItemName"));
+ insertBomHeader.setStartDate(DateUtils.parseDate(bomHeader.getString("HEffectiveDate")));
+ insertBomHeader.setEndDate(DateUtils.parseDate(bomHeader.getString("HDisableDate")));
+ insertBomHeader.setOrgCode(bomHeader.getString("HOrgName").contains("娌堥槼")?"FORTUNE":bomHeader.getString("HOrgName").contains("鍗楅��")?"FORTUNA":bomHeader.getString("HOrgName").contains("鍖椾含")?"FORTUBE":bomHeader.getString("HOrgName"));
+ headerList.add(insertBomHeader);
+ for(Object line : bomLines){
+ JSONObject lineJson = (JSONObject) line;
+ ApsBomLineJob bomLine = new ApsBomLineJob();
+ bomLine.setId(IdUtil.getSnowflakeNextId());
+ bomLine.setBomHeaderId(lineJson.getString("HID"));
+ bomLine.setBomLineId(lineJson.getString("LID"));
+ bomLine.setItemCode(lineJson.getString("LItemCode"));
+ bomLine.setItemName(lineJson.getString("LItemName"));
+ bomLine.setNum(lineJson.getBigDecimal("UsageQty"));
+ bomLine.setStartDate(DateUtils.parseDate(lineJson.getString("LEffectiveDate")));
+ bomLine.setEndDate(DateUtils.parseDate(lineJson.getString("LDisableDate")));
+ bomLine.setOrgCode(lineJson.getString("LOrgName").contains("娌堥槼")?"FORTUNE":lineJson.getString("LOrgName").contains("鍗楅��")?"FORTUNA":lineJson.getString("LOrgName").contains("鍖椾含")?"FORTUBE":lineJson.getString("LOrgName"));
+ lineList.add(bomLine);
+ }
+ }
+ List<ApsBomHeaderJob> temp1 = new ArrayList<>();
+ for(int i=0;i<headerList.size();i++){
+ temp1.add(headerList.get(i));
+ if(temp1.size()>=20){
+ apsBomHeaderJobMapper.insertApsBomHeaderJobBatch(temp1);
+ temp1 = new ArrayList<>();
+ }
+ }
+ List<ApsBomLineJob> temp2 = new ArrayList<>();
+ for(int j=0;j<lineList.size();j++){
+ temp2.add(lineList.get(j));
+ if(temp2.size()>=20){
+ apsBomLineJobMapper.insertApsBomLineJobBatch(temp2);
+ temp2 = new ArrayList<>();
+ }
+ }
+ jobLog.setRequestData(requestBody.toJSONString());
+ jobLog.setPageNum(Long.valueOf(pageIndex));
+ jobLog.setPageCount(Long.valueOf(pageSize));
+ jobLog.setCreateTime(DateUtils.getNowDate());
+ jobLog.setBizType("bom");
+ jobLog.setResult("header:"+headerList.size() + " line:"+lineList.size());
+ jobLogMapper.insertApsWorkOrderJobLog(jobLog);
+ pageIndex++;
+ }else{
+ break;
+ }
+ }else{
+ jobLog.setRequestData(requestBody.toJSONString());
+ jobLog.setResponseData(response.getBody());
+ jobLog.setPageNum(Long.valueOf(pageIndex));
+ jobLog.setPageCount(Long.valueOf(pageSize));
+ jobLog.setCreateTime(DateUtils.getNowDate());
+ jobLog.setBizType("bom");
+ jobLog.setResult("error");
+ jobLogMapper.insertApsWorkOrderJobLog(jobLog);
+ break;
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomLineJobServiceImpl.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomLineJobServiceImpl.java
new file mode 100644
index 0000000..8bc1c11
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomLineJobServiceImpl.java
@@ -0,0 +1,97 @@
+package com.aps.job.service.impl;
+
+import com.aps.common.core.utils.DateUtils;
+import com.aps.job.domain.ApsBomLineJob;
+import com.aps.job.mapper.ApsBomLineJobMapper;
+import com.aps.job.service.IApsBomLineJobService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * BOM鏁版嵁绠$悊Service涓氬姟灞傚鐞�
+ *
+ * @author hjy
+ * @date 2025-05-08
+ */
+@Service
+public class ApsBomLineJobServiceImpl implements IApsBomLineJobService
+{
+ @Autowired
+ private ApsBomLineJobMapper apsBomLineJobMapper;
+
+ /**
+ * 鏌ヨBOM鏁版嵁绠$悊
+ *
+ * @param id BOM鏁版嵁绠$悊涓婚敭
+ * @return BOM鏁版嵁绠$悊
+ */
+ @Override
+ public ApsBomLineJob selectApsBomLineJobById(Long id)
+ {
+ return apsBomLineJobMapper.selectApsBomLineJobById(id);
+ }
+
+ /**
+ * 鏌ヨBOM鏁版嵁绠$悊鍒楄〃
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return BOM鏁版嵁绠$悊
+ */
+ @Override
+ public List<ApsBomLineJob> selectApsBomLineJobList(ApsBomLineJob apsBomLineJob)
+ {
+ return apsBomLineJobMapper.selectApsBomLineJobList(apsBomLineJob);
+ }
+
+ /**
+ * 鏂板BOM鏁版嵁绠$悊
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertApsBomLineJob(ApsBomLineJob apsBomLineJob)
+ {
+ apsBomLineJob.setCreateTime(DateUtils.getNowDate());
+ return apsBomLineJobMapper.insertApsBomLineJob(apsBomLineJob);
+ }
+
+ /**
+ * 淇敼BOM鏁版嵁绠$悊
+ *
+ * @param apsBomLineJob BOM鏁版嵁绠$悊
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateApsBomLineJob(ApsBomLineJob apsBomLineJob)
+ {
+ apsBomLineJob.setUpdateTime(DateUtils.getNowDate());
+ return apsBomLineJobMapper.updateApsBomLineJob(apsBomLineJob);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎BOM鏁版嵁绠$悊
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑BOM鏁版嵁绠$悊涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteApsBomLineJobByIds(Long[] ids)
+ {
+ return apsBomLineJobMapper.deleteApsBomLineJobByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎BOM鏁版嵁绠$悊淇℃伅
+ *
+ * @param id BOM鏁版嵁绠$悊涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteApsBomLineJobById(Long id)
+ {
+ return apsBomLineJobMapper.deleteApsBomLineJobById(id);
+ }
+}
diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml
new file mode 100644
index 0000000..1eec45e
--- /dev/null
+++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.aps.job.mapper.ApsBomHeaderJobMapper">
+
+ <resultMap type="ApsBomHeaderJob" id="ApsBomHeaderJobResult">
+ <result property="id" column="id" />
+ <result property="bomHeaderId" column="bom_header_id" />
+ <result property="itemCode" column="item_code" />
+ <result property="itemName" column="item_name" />
+ <result property="startDate" column="start_date" />
+ <result property="endDate" column="end_date" />
+ <result property="orgCode" column="org_code" />
+ <result property="delFlag" column="del_flag" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectApsBomHeaderJobVo">
+ select id, bom_header_id, item_code, item_name, start_date, end_date, org_code, del_flag, create_by, create_time, update_by, update_time from aps_bom_header_job
+ </sql>
+
+ <select id="selectApsBomHeaderJobList" parameterType="ApsBomHeaderJob" resultMap="ApsBomHeaderJobResult">
+ <include refid="selectApsBomHeaderJobVo"/>
+ <where>
+ <if test="bomHeaderId != null and bomHeaderId != ''"> and bom_header_id = #{bomHeaderId}</if>
+ <if test="itemCode != null and itemCode != ''"> and item_code = #{itemCode}</if>
+ <if test="itemName != null and itemName != ''"> and item_name like concat('%', #{itemName}, '%')</if>
+ <if test="startDate != null "> and start_date = #{startDate}</if>
+ <if test="endDate != null "> and end_date = #{endDate}</if>
+ <if test="orgCode != null and orgCode != ''"> and org_code = #{orgCode}</if>
+ </where>
+ </select>
+
+ <select id="selectApsBomHeaderJobById" parameterType="Long" resultMap="ApsBomHeaderJobResult">
+ <include refid="selectApsBomHeaderJobVo"/>
+ where id = #{id}
+ </select>
+
+ <insert id="insertApsBomHeaderJob" parameterType="ApsBomHeaderJob">
+ insert into aps_bom_header_job
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="bomHeaderId != null">bom_header_id,</if>
+ <if test="itemCode != null">item_code,</if>
+ <if test="itemName != null">item_name,</if>
+ <if test="startDate != null">start_date,</if>
+ <if test="endDate != null">end_date,</if>
+ <if test="orgCode != null">org_code,</if>
+ <if test="delFlag != null">del_flag,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="bomHeaderId != null">#{bomHeaderId},</if>
+ <if test="itemCode != null">#{itemCode},</if>
+ <if test="itemName != null">#{itemName},</if>
+ <if test="startDate != null">#{startDate},</if>
+ <if test="endDate != null">#{endDate},</if>
+ <if test="orgCode != null">#{orgCode},</if>
+ <if test="delFlag != null">#{delFlag},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateApsBomHeaderJob" parameterType="ApsBomHeaderJob">
+ update aps_bom_header_job
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="bomHeaderId != null">bom_header_id = #{bomHeaderId},</if>
+ <if test="itemCode != null">item_code = #{itemCode},</if>
+ <if test="itemName != null">item_name = #{itemName},</if>
+ <if test="startDate != null">start_date = #{startDate},</if>
+ <if test="endDate != null">end_date = #{endDate},</if>
+ <if test="orgCode != null">org_code = #{orgCode},</if>
+ <if test="delFlag != null">del_flag = #{delFlag},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteApsBomHeaderJobById" parameterType="Long">
+ delete from aps_bom_header_job where id = #{id}
+ </delete>
+
+ <delete id="deleteApsBomHeaderJobByIds" parameterType="String">
+ delete from aps_bom_header_job where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+ <insert id="insertApsBomHeaderJobBatch">
+ INSERT INTO aps_bom_header_job (
+ id,
+ bom_header_id,
+ item_code,
+ item_name,
+ start_date,
+ end_date,
+ org_code,
+ create_time
+ ) VALUES
+ <foreach collection="list" item="item" separator=",">
+ (
+ #{item.id},
+ #{item.bomHeaderId},
+ #{item.itemCode},
+ #{item.itemName},
+ #{item.startDate},
+ #{item.endDate},
+ #{item.orgCode},
+ now()
+ )
+ </foreach>
+ </insert>
+
+ <!-- 鎻掑叆鏁版嵁鍒� aps_bom_header -->
+ <insert id="insertIntoApsBomHeader">
+ INSERT INTO aps_bom_header (
+ id,
+ bom_header_id,
+ item_code,
+ item_name,
+ start_date,
+ end_date,
+ org_code,
+ create_time
+ )
+ SELECT
+ id,
+ bom_header_id,
+ item_code,
+ item_name,
+ start_date,
+ end_date,
+ org_code,
+ now()
+ FROM aps_bom_header_job
+ </insert>
+
+ <!-- 鍒犻櫎 aps_process_route 琛ㄤ腑鐨勬暟鎹� -->
+ <delete id="deleteApsBomHeader">
+ DELETE FROM aps_bom_header
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml
new file mode 100644
index 0000000..452300d
--- /dev/null
+++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.aps.job.mapper.ApsBomLineJobMapper">
+
+ <resultMap type="ApsBomLineJob" id="ApsBomLineJobResult">
+ <result property="id" column="id" />
+ <result property="bomLineId" column="bom_line_id" />
+ <result property="bomHeaderId" column="bom_header_id" />
+ <result property="itemCode" column="item_code" />
+ <result property="itemName" column="item_name" />
+ <result property="startDate" column="start_date" />
+ <result property="endDate" column="end_date" />
+ <result property="orgCode" column="org_code" />
+ <result property="delFlag" column="del_flag" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="drawingNo" column="drawing_no" />
+ <result property="processNo" column="process_no" />
+ <result property="unit" column="unit" />
+ <result property="num" column="num" />
+ <result property="totalNum" column="total_num" />
+ <result property="preparationTime" column="preparation_time" />
+ <result property="processingTime" column="processing_time" />
+ </resultMap>
+
+ <sql id="selectApsBomLineJobVo">
+ select id, bom_line_id, bom_header_id, item_code, item_name, start_date, end_date, org_code, del_flag, create_by, create_time, update_by, update_time, drawing_no, process_no, unit, num, total_num, preparation_time, processing_time from aps_bom_line_job
+ </sql>
+
+ <select id="selectApsBomLineJobList" parameterType="ApsBomLineJob" resultMap="ApsBomLineJobResult">
+ <include refid="selectApsBomLineJobVo"/>
+ <where>
+ <if test="bomLineId != null and bomLineId != ''"> and bom_line_id = #{bomLineId}</if>
+ <if test="bomHeaderId != null and bomHeaderId != ''"> and bom_header_id = #{bomHeaderId}</if>
+ <if test="itemCode != null and itemCode != ''"> and item_code = #{itemCode}</if>
+ <if test="itemName != null and itemName != ''"> and item_name like concat('%', #{itemName}, '%')</if>
+ <if test="startDate != null "> and start_date = #{startDate}</if>
+ <if test="endDate != null "> and end_date = #{endDate}</if>
+ <if test="orgCode != null and orgCode != ''"> and org_code = #{orgCode}</if>
+ <if test="drawingNo != null and drawingNo != ''"> and drawing_no = #{drawingNo}</if>
+ <if test="processNo != null and processNo != ''"> and process_no = #{processNo}</if>
+ <if test="unit != null and unit != ''"> and unit = #{unit}</if>
+ <if test="num != null "> and num = #{num}</if>
+ <if test="totalNum != null "> and total_num = #{totalNum}</if>
+ <if test="preparationTime != null "> and preparation_time = #{preparationTime}</if>
+ <if test="processingTime != null "> and processing_time = #{processingTime}</if>
+ </where>
+ </select>
+
+ <select id="selectApsBomLineJobById" parameterType="Long" resultMap="ApsBomLineJobResult">
+ <include refid="selectApsBomLineJobVo"/>
+ where id = #{id}
+ </select>
+
+ <insert id="insertApsBomLineJob" parameterType="ApsBomLineJob">
+ insert into aps_bom_line_job
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="bomLineId != null">bom_line_id,</if>
+ <if test="bomHeaderId != null">bom_header_id,</if>
+ <if test="itemCode != null">item_code,</if>
+ <if test="itemName != null">item_name,</if>
+ <if test="startDate != null">start_date,</if>
+ <if test="endDate != null">end_date,</if>
+ <if test="orgCode != null">org_code,</if>
+ <if test="delFlag != null">del_flag,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ <if test="drawingNo != null">drawing_no,</if>
+ <if test="processNo != null">process_no,</if>
+ <if test="unit != null">unit,</if>
+ <if test="num != null">num,</if>
+ <if test="totalNum != null">total_num,</if>
+ <if test="preparationTime != null">preparation_time,</if>
+ <if test="processingTime != null">processing_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="bomLineId != null">#{bomLineId},</if>
+ <if test="bomHeaderId != null">#{bomHeaderId},</if>
+ <if test="itemCode != null">#{itemCode},</if>
+ <if test="itemName != null">#{itemName},</if>
+ <if test="startDate != null">#{startDate},</if>
+ <if test="endDate != null">#{endDate},</if>
+ <if test="orgCode != null">#{orgCode},</if>
+ <if test="delFlag != null">#{delFlag},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ <if test="drawingNo != null">#{drawingNo},</if>
+ <if test="processNo != null">#{processNo},</if>
+ <if test="unit != null">#{unit},</if>
+ <if test="num != null">#{num},</if>
+ <if test="totalNum != null">#{totalNum},</if>
+ <if test="preparationTime != null">#{preparationTime},</if>
+ <if test="processingTime != null">#{processingTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateApsBomLineJob" parameterType="ApsBomLineJob">
+ update aps_bom_line_job
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="bomLineId != null">bom_line_id = #{bomLineId},</if>
+ <if test="bomHeaderId != null">bom_header_id = #{bomHeaderId},</if>
+ <if test="itemCode != null">item_code = #{itemCode},</if>
+ <if test="itemName != null">item_name = #{itemName},</if>
+ <if test="startDate != null">start_date = #{startDate},</if>
+ <if test="endDate != null">end_date = #{endDate},</if>
+ <if test="orgCode != null">org_code = #{orgCode},</if>
+ <if test="delFlag != null">del_flag = #{delFlag},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ <if test="drawingNo != null">drawing_no = #{drawingNo},</if>
+ <if test="processNo != null">process_no = #{processNo},</if>
+ <if test="unit != null">unit = #{unit},</if>
+ <if test="num != null">num = #{num},</if>
+ <if test="totalNum != null">total_num = #{totalNum},</if>
+ <if test="preparationTime != null">preparation_time = #{preparationTime},</if>
+ <if test="processingTime != null">processing_time = #{processingTime},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteApsBomLineJobById" parameterType="Long">
+ delete from aps_bom_line_job where id = #{id}
+ </delete>
+
+ <delete id="deleteApsBomLineJobByIds" parameterType="String">
+ delete from aps_bom_line_job where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+ <insert id="insertApsBomLineJobBatch">
+ INSERT INTO aps_bom_line_job (
+ id,
+ bom_line_id,
+ bom_header_id,
+ item_code,
+ item_name,
+ start_date,
+ end_date,
+ org_code,
+ num,
+ create_time
+ ) VALUES
+ <foreach collection="list" item="item" separator=",">
+ (
+ #{item.id},
+ #{item.bomLineId},
+ #{item.bomHeaderId},
+ #{item.itemCode},
+ #{item.itemName},
+ #{item.startDate},
+ #{item.endDate},
+ #{item.orgCode},
+ #{item.num},
+ now()
+ )
+ </foreach>
+ </insert>
+
+ <!-- 鎻掑叆鏁版嵁鍒� aps_bom_line -->
+ <insert id="insertIntoApsBomLine">
+ INSERT INTO aps_bom_line (
+ id,
+ bom_line_id,
+ bom_header_id,
+ item_code,
+ item_name,
+ start_date,
+ end_date,
+ org_code,
+ num,
+ create_time
+ )
+ SELECT
+ id,
+ bom_line_id,
+ bom_header_id,
+ item_code,
+ item_name,
+ start_date,
+ end_date,
+ org_code,
+ num,
+ now()
+ FROM aps_bom_line_job
+ </insert>
+
+ <!-- 鍒犻櫎 aps_process_route 琛ㄤ腑鐨勬暟鎹� -->
+ <delete id="deleteApsBomLine">
+ DELETE FROM aps_bom_line
+ </delete>
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3