From fed6f56842fea1a7e17dbfec12a30cb332c566b0 Mon Sep 17 00:00:00 2001 From: huangjiayang <5265313@qq.com> Date: 星期四, 08 五月 2025 16:16:11 +0800 Subject: [PATCH] 【UPDATE】1.增加同步BOM数据定时任务功能 2.将BOM数据存储到Redis中 --- 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-job/src/main/java/com/aps/job/domain/ApsBomLineJob.java | 280 ++++++++++ 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-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/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/controller/mainPlan/ApsBomHeaderController.java | 6 15 files changed, 1,512 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/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/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/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/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-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