src/main/java/com/whyc/mapper/ProductBomHistoryMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/MaterialProductHistory.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/ProductBomHistoryService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/ProductBomHistoryMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/mapper/ProductBomHistoryMapper.java
@@ -12,4 +12,7 @@ List<ProductBomHistory> getBomHistoryAndMaterial(int productId, int version); //查询产品的软件 List<ProductSoftware> selectSoftware(int productId); List<ProductBomHistory> getBomListByProductIdAndSubVersion(int productId, Integer subVersion); } src/main/java/com/whyc/pojo/MaterialProductHistory.java
@@ -11,6 +11,8 @@ public class MaterialProductHistory { private Integer id; @ApiModelProperty("子件物料id") private Integer subMaterialId; @ApiModelProperty("临时替代物料id") private Integer materialId; //@ApiModelProperty("产品id") @@ -100,4 +102,12 @@ public void setQuantity(Integer quantity) { this.quantity = quantity; } public Integer getSubMaterialId() { return subMaterialId; } public void setSubMaterialId(Integer subMaterialId) { this.subMaterialId = subMaterialId; } } src/main/java/com/whyc/service/ProductBomHistoryService.java
@@ -331,20 +331,20 @@ } /** * 对比: * 现有数据库结构下,无法对比相同物料号的差异 TODO 数据库结构更新,待代码修改 * 对比 * @param preProductId 旧的版本,作为基准 * @param productId 新的产品版本 * @return */ public Response compare(int preProductId, int productId) { List<ProductBomHistory> baseBomHistoryList = getListByProductId(preProductId); List<ProductBomHistory> bomHistoryList = getListByProductId(productId); //现有数据库结构,无法对比相同物料号的差异 //List<ProductBomHistory> diffList = getListByProductId(productId); //查询两个版本对应的bom最新小版本 List<ProductBomHistory> baseBomHistoryList = getLatestBomListByProductId(preProductId); List<ProductBomHistory> bomHistoryList = getLatestBomListByProductId(productId); //List<ProductBomHistory> diffList = new LinkedList<>(); List<ProductBomHistory> addList = new LinkedList<>(); List<ProductBomHistory> deleteList = new LinkedList<>(); //通过物料编码定位,对比字段:物料型号/数量/材质/料厚/表面处理/生产商/备注 //通过物料编码定位,对比字段:物料型号/数量/材质/料厚/表面处理/生产商/备注,无法实现,物料没有历史记录 /*baseBomHistoryList.forEach(baseBom->{ bomHistoryList.forEach(bom->{ if(bom.getSubCode().equals(baseBom.getSubCode())){ @@ -356,25 +356,30 @@ } }); });*/ List<String> baseCodeList = baseBomHistoryList.stream().map(ProductBomHistory::getSubCode).collect(Collectors.toList()); List<String> codeList = bomHistoryList.stream().map(ProductBomHistory::getSubCode).collect(Collectors.toList()); List<Integer> baseCodeList = baseBomHistoryList.stream().map(ProductBomHistory::getMaterialId).collect(Collectors.toList()); List<Integer> codeList = bomHistoryList.stream().map(ProductBomHistory::getMaterialId).collect(Collectors.toList()); bomHistoryList.forEach(bom->{ if(!baseCodeList.contains(bom.getSubCode())){ if(!baseCodeList.contains(bom.getMaterialId())){ addList.add(bom); } }); baseBomHistoryList.forEach(baseBom->{ if(!codeList.contains(baseBom.getSubCode())){ if(!codeList.contains(baseBom.getMaterialId())){ deleteList.add(baseBom); } }); return new Response().setII(1,addList,deleteList,"对比完成"); } private List<ProductBomHistory> getListByProductId(int productId) { /**关联查询到具体的bom内物料信息*/ private List<ProductBomHistory> getLatestBomListByProductId(int productId) { QueryWrapper<ProductBomHistory> query = Wrappers.query(); query.eq("product_id",productId); return mapper.selectList(query); query.select("max(sub_e_version) as sub_e_version").eq("product_id",productId); Integer latestSubVersion = mapper.selectOne(query).getSubEVersion(); //QueryWrapper<ProductBomHistory> query2 = Wrappers.query(); //query2.eq("product_id",productId).le("sub_s_version",latestSubVersion).ge("sub_e_version",latestSubVersion); return mapper.getBomListByProductIdAndSubVersion(productId,latestSubVersion); } } src/main/resources/mapper/ProductBomHistoryMapper.xml
@@ -2,6 +2,29 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.whyc.mapper.ProductBomHistoryMapper" > <resultMap id="Map_ProductBomHistory" type="productBomHistory"> <id property="id" column="id"></id> <result property="type" column="type"></result> <result property="category" column="category"></result> <result property="subCode" column="sub_code"></result> <result property="subName" column="sub_name"></result> <result property="subModel" column="sub_model"></result> <result property="unit" column="unit"></result> <result property="quantity" column="quantity"></result> <result property="producer" column="producer"></result> <result property="material" column="material"></result> <result property="thickness" column="thickness"></result> <result property="surfaceDetail" column="surface_detail"></result> <result property="notes" column="notes"></result> <result property="pictureUrl" column="picture_url"></result> <result property="fileUrl" column="file_url"></result> <result property="upUserId" column="up_user_id"></result> <result property="createDate" column="create_date"></result> <result property="version" column="version"></result> <result property="dwgUrl" column="dwg_url"></result> <collection property="materials" javaType="java.util.ArrayList" ofType="com.whyc.pojo.Material" column="{parentCode=parent_code,customCode=custom_code,subCode=sub_code,version=version}" select="selectMaterial"> </collection> </resultMap> <update id="updateVersionBatch"> <foreach collection="list" item="his" separator=";"> @@ -64,6 +87,12 @@ where tb_product_software.parent_model=tb_product_history.parent_model and tb_product_history.id=#{productId} </select> <select id="getBomListByProductIdAndSubVersion" resultMap="Map_ProductBomHistory"> SELECT * FROM db_doc.tb_product_bom_history h,db_doc.tb_material m where product_id = #{productId} and sub_s_version <= #{subVersion} and sub_e_version >= #{subVersion} and h.material_id = m.id </select> </mapper>