whycxzp
2022-09-02 dda441bc8f2141c0020b946bfe1547a4ba7faf8c
更新
4个文件已修改
77 ■■■■ 已修改文件
src/main/java/com/whyc/mapper/ProductBomHistoryMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/MaterialProductHistory.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/ProductBomHistoryService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ProductBomHistoryMapper.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | 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 &lt;= #{subVersion}
        and sub_e_version &gt;= #{subVersion}
        and  h.material_id = m.id
    </select>
</mapper>