소스 검색

解决成本模型材料费规格型号没找到的情况返回信息

sl 1 년 전
부모
커밋
7204539e34

+ 3 - 0
module_kzks/src/main/java/org/jeecg/modules/costModelClPrice/mapper/CostModelClPriceMapper.java

@@ -20,6 +20,9 @@ public interface CostModelClPriceMapper extends BaseMapper<CostModelClPrice> {
     /**查询*/
     public CostModelXmxqCl selectClPriceValue(CostModelXmxqCl cl);
 
+    /**查询*/
+    public CostModelXmxqCl selectClPriceValue2(CostModelXmxqCl cl);
+
     /**成本模型——材料费详情——根据物料编码、规格型号、质量等级、批次查询*/
 //    @Select("select danjia, HT_DATE from kzks_cost_model_cl_price where wlbm = #{wlbm} and ggxh=#{ggxh} and zl_level=#{zlLevel} and pici=#{pici}")
 //    public List<CostModelClPrice> getCLPDetailList(@Param("wlbm") String wlbm, @Param("ggxh") String ggxh, @Param("zlLevel") String zlLevel, @Param("pici") String pici);

+ 32 - 0
module_kzks/src/main/java/org/jeecg/modules/costModelClPrice/mapper/xml/CostModelClPriceMapper.xml

@@ -42,6 +42,38 @@
         </where>
     </select>
 
+
+    <select id="selectClPriceValue2" parameterType="org.jeecg.modules.costModelXmxqCl.entity.CostModelXmxqCl" resultType="org.jeecg.modules.costModelXmxqCl.entity.CostModelXmxqCl">
+        select ifnull(max(CONVERT(danjia, DECIMAL)),0) as maxDanjia,
+        ifnull(min(CONVERT(danjia, DECIMAL)),0) as minDanjia,
+        round(ifnull(avg(CONVERT(danjia, DECIMAL)),0),2) as aveDanjia,
+        ifnull((select danjia from kzks_cost_model_cl_price
+        <where>
+            <if test="ggxh != null  and ggxh != ''">and ggxh = #{ggxh}</if>
+        </where>
+        ORDER BY HT_DATE DESC limit 1),0) as recentDanjia,
+        ifnull(max(CONVERT(danjia, DECIMAL)),0) * #{number} as maxPrice,
+        ifnull(min(CONVERT(danjia, DECIMAL)),0) * #{number} as minPrice,
+        round(ifnull(avg(CONVERT(danjia, DECIMAL)),0) * #{number},2) as avePrice,
+        ifnull((select danjia from kzks_cost_model_cl_price
+        <where>
+            <if test="ggxh != null  and ggxh != ''">and ggxh = #{ggxh}</if>
+        </where>
+        ORDER BY HT_DATE DESC limit 1),0) * #{number} as recentPrice,
+        HT_DATE as caigouTime,
+        #{xiangmuId} as xiangmuId,
+        #{xiangmuName} as xiangmuName,
+        #{number} as number,
+        #{wlbm} as wlbm,
+        #{ggxh} as ggxh,
+        #{zlLevel} as zlLevel,
+        #{pici} as pici
+        from kzks_cost_model_cl_price
+        <where>
+            <if test="ggxh != null  and ggxh != ''">and ggxh = #{ggxh}</if>
+        </where>
+    </select>
+
     <select id="getCLPDetailList" parameterType="org.jeecg.modules.costModelXmxqCl.entity.CostModelXmxqCl" resultType="org.jeecg.modules.costModelClPrice.entity.CostModelClPrice">
     select wlbm, ggxh, zl_level, pici, danjia, HT_DATE FROM kzks_cost_model_cl_price
         <where>

+ 3 - 0
module_kzks/src/main/java/org/jeecg/modules/costModelClPrice/service/ICostModelClPriceService.java

@@ -19,6 +19,9 @@ public interface ICostModelClPriceService extends IService<CostModelClPrice> {
     /**查询*/
     public CostModelXmxqCl selectClPriceValue(CostModelXmxqCl cl);
 
+    /**查询*/
+    public CostModelXmxqCl selectClPriceValue2(CostModelXmxqCl cl);
+
     /**成本模型——材料费详情——根据物料编码、规格型号、质量等级、批次查询*/
 //   public List<CostModelClPrice> getCLPDetailList(String wlbm, String ggxh, String zlLevel, String pici);
    public List<CostModelClPrice> getCLPDetailList(CostModelXmxqCl cl);

+ 5 - 0
module_kzks/src/main/java/org/jeecg/modules/costModelClPrice/service/impl/CostModelClPriceServiceImpl.java

@@ -31,6 +31,11 @@ public class CostModelClPriceServiceImpl extends ServiceImpl<CostModelClPriceMap
         return clPriceMapper.selectClPriceValue(cl);
     }
 
+    /**查询*/
+    public CostModelXmxqCl selectClPriceValue2(CostModelXmxqCl cl){
+        return clPriceMapper.selectClPriceValue2(cl);
+    }
+
     /**成本模型——材料费详情——根据物料编码、规格型号、质量等级、批次查询*/
 //    public List<CostModelClPrice> getCLPDetailList(String wlbm, String ggxh, String zlLevel, String pici){
 //        return clPriceMapper.getCLPDetailList(wlbm, ggxh, zlLevel, pici);

+ 23 - 6
module_kzks/src/main/java/org/jeecg/modules/costModelXmxqCl/service/impl/CostModelXmxqClServiceImpl.java

@@ -22,6 +22,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -80,18 +81,32 @@ public class CostModelXmxqClServiceImpl extends ServiceImpl<CostModelXmxqClMappe
             int num2 = 0; //导入的材料费缺少必填的条数
             String msg =""; //最终返回的提示信息
             String msg2 ="";
+            BigDecimal initValue = new BigDecimal(0).setScale(2, RoundingMode.HALF_UP);
             for(CostModelXmxqCl cl:list){
                 if(cl.getGgxh()!=null){
                     cl.setXiangmuName(xmName);
                     cl.setXiangmuId(xmId);
                     CostModelXmxqCl clxq = costModelClPriceService.selectClPriceValue(cl);
+                    System.out.println(clxq);
                     if(clxq != null){
-                        list1.add(clxq);
-                        clfMax = clfMax.add(new BigDecimal(clxq.getMaxPrice()));
-                        clfMin = clfMin.add(new BigDecimal(clxq.getMinPrice()));
-                        clfAve = clfAve.add(new BigDecimal(clxq.getAvePrice()));
-                        clfRecent = clfRecent.add(new BigDecimal(clxq.getRecentPrice()));
-                    }else {
+                        if((new BigDecimal(clxq.getMaxPrice())).setScale(2, RoundingMode.HALF_UP).equals(initValue) && (new BigDecimal(clxq.getMinPrice())).setScale(2, RoundingMode.HALF_UP).equals(initValue) && (new BigDecimal(clxq.getAvePrice())).setScale(2, RoundingMode.HALF_UP).equals(initValue) && (new BigDecimal(clxq.getRecentPrice())).setScale(2, RoundingMode.HALF_UP).equals(initValue)){
+                            num1++;
+                            String msg1 = "材料价格库内——规格型号:"+cl.getGgxh() + " 未找到!";
+                            CostModelMsg costModelMsg = new CostModelMsg();
+                            costModelMsg.setXiangmuId(xmId);
+                            costModelMsg.setXiangmuName(xmName);
+                            costModelMsg.setXiangmuMsg(msg1);
+                            modelMsgList.add(costModelMsg);
+                        }
+                        else {
+                            list1.add(clxq);
+                            clfMax = clfMax.add(new BigDecimal(clxq.getMaxPrice()));
+                            clfMin = clfMin.add(new BigDecimal(clxq.getMinPrice()));
+                            clfAve = clfAve.add(new BigDecimal(clxq.getAvePrice()));
+                            clfRecent = clfRecent.add(new BigDecimal(clxq.getRecentPrice()));
+                        }
+                    }
+                    else {
                         num1++;
                         String msg1 = "材料价格库内——规格型号:"+cl.getGgxh() + " 未找到!";
                         CostModelMsg costModelMsg = new CostModelMsg();
@@ -105,6 +120,7 @@ public class CostModelXmxqClServiceImpl extends ServiceImpl<CostModelXmxqClMappe
                     num2++;
                 }
             }
+            System.out.println(num2);
             if(num2>0){
                 msg2 = "导入的材料Excel表中有"+num2+"条规格型号未填写!";
                 CostModelMsg costModelMsg = new CostModelMsg();
@@ -113,6 +129,7 @@ public class CostModelXmxqClServiceImpl extends ServiceImpl<CostModelXmxqClMappe
                 costModelMsg.setXiangmuMsg(msg2);
                 modelMsgList.add(costModelMsg);
             }
+            System.out.println(num1);
             if(num1>0) msg = "材料价格库中有"+num1+"条数据未找到!"+msg2;
             else msg = msg2;