把字符串參數分割成數組 傳入SQL foreach遍歷查詢


  1   /**
  2      * 采購價盤管理列表查詢
  3      * @param pCusArr 供應商編碼編碼
  4      * @param pPro 物料編碼
  5      * @param pDid 經銷商編號
  6      * @return
  7      */
  8     List<BaseMatnrUnitDto> getBaseMatnrUnitDto(@Param("pCusArr") String[] pCusArr, @Param("pPro") String pPro, @Param("pDid") String pDid);
  9 
 10 
 11 
 12 <select id="getBaseMatnrUnitDto" resultType="com.shinho.dc3.master.dto.BaseMatnrUnitDto" parameterType="map">
 13     SELECT B1.ROW_ID, -- 供應商編碼
 14     B1.supplier_name, -- 供應商名稱
 15     A1.MATNR, -- 商品編碼
 16     A1.MAKTX, -- 商品描述
 17     C1.INSDT, -- 最后交易時間
 18     A1.UNIT_ID, -- 單位編碼
 19     A1.UNIT_NAME, -- 單位名稱
 20     A1.DID, -- 經銷商編碼
 21     CASE
 22     WHEN A1.TYPE = 'B' THEN
 23     A1.Fixed_Price
 24     ELSE
 25     A1.Fixed_Price * A1.Umrez
 26     END RETAIL_PRICE, -- 價盤價格
 27     NVL(C1.Price,0)Price, -- 最新價格
 28     NVL(C1.IS_LOCK, 0) IS_LOCK, -- 是否鎖定
 29     CASE
 30     WHEN C1.IS_LOCK = 1 THEN '是'
 31     ELSE '否' END IS_LOCK_B,
 32     C1.REMARK
 33     FROM (SELECT DISTINCT A.MATNR,
 34     A.MAKTX,
 35     A1.UNIT_ID,
 36     A1.UNIT_NAME,
 37     A.DID,
 38     A.RETAIL_PRICE,
 39     A.SALE_PRICE,
 40     A1.TYPE,
 41     A.Fixed_Price,
 42     A.Umrez
 43     FROM base_matnr  A
 44     JOIN `base_matnr_unit`  A1
 45     ON A.MATNR = A1.MATNR
 46     AND A.DID = A1.DID
 47     JOIN  base_supplier_matnr a2 ON
 48     A.matnr=a2.matnr AND A.did=a2.did  AND a2.supplier_id IN
 49     <foreach collection="pCusArr" item="listItem" index="index" open="(" close=")" separator="," >
 50     #{listItem}
 51     </foreach>
 52     WHERE A.DID = #{pDid}
 53     -- if pPro不為空
 54     <if test="pPro != null" >
 55       AND A1.MATNR = #{pPro}
 56     </if>
 57     ) A1
 58     LEFT JOIN base_supplier B1  on B1.DID = A1.DID
 59     <if test="pCusArr!=null">
 60       and B1.ROW_ID IN
 61       <foreach collection="pCusArr" item="listItem" index="index" open="(" close=")" separator="," >
 62         #{listItem}
 63       </foreach>
 64     </if>
 65     LEFT JOIN po_price_list C1
 66     ON C1.DID = A1.DID
 67     AND C1.UNIT_ID = A1.UNIT_ID
 68     AND C1.MATNR = A1.MATNR
 69     AND C1.supplier_id = B1.ROW_ID
 70     ORDER BY A1.MAKTX, B1.ROW_ID
 71   </select>
 72 
 73 
 74 
 75  /**
 76      *采購價盤管理列表查詢
 77      * @param pCus
 78      * @param pPro
 79      * @param pDid
 80      * @return
 81      */
 82     public List<BaseMatnrUnitDto> getBaseMatnrUnitDto(String pCus,String pPro,String pDid){
 83         String[] pCusArr = null;
 84         if(!StringUtils.isEmpty(pCus)){
 85             pCusArr = pCus.split(",");
 86         }
 87         return baseMatnrUnitMapper.getBaseMatnrUnitDto(pCusArr,pPro,pDid);
 88     }
 89 
 90 
 91 
 92 /**
 93      * 采購價盤管理列表查詢
 94      * @param pCus 供應商編碼編碼
 95      * @param pPro 物料編碼
 96      * @param pDid 經銷商編號
 97      * @param pageSearch 分頁
 98      * @return
 99      */
100     @GetMapping(value = "/getBaseMatnrUnitDto")
101     @ApiOperation(value = "采購價盤管理列表查詢", notes = "采購價盤管理列表查詢")
102     public JsonResult<PageInfo<BaseMatnrUnitDto>> getBaseMatnrUnitDto(@ApiParam(name = "pCus", value = "經銷商編號", required = true) @RequestParam String pCus,
103                                                                       @ApiParam(name = "pPro", value = "物料編號") @RequestParam String pPro,
104                                                                       @ApiParam(name = "pDid", value = "經銷商編號") @RequestParam(required = false) String pDid, PageSearch pageSearch){
105         UserInfo userInfo=this.getUserInfo();
106         if(userInfo!=null && org.springframework.util.StringUtils.isEmpty(userInfo.getDid())){
107             pDid = userInfo.getDid();
108         }
109         logger.info("采購價盤管理列表查詢接口請求參數:pCus:{},pPro:{},pDid:{}", pCus,pPro,pDid);
110         //當前頁,頁面大小
111         if(pageSearch !=null) {
112             PageHelper.startPage(pageSearch.getPageIndex(), pageSearch.getPageSize());
113         }
114         List<BaseMatnrUnitDto> list=baseMatnrUnitService.getBaseMatnrUnitDto(pCus,pPro,pDid);
115         PageInfo<BaseMatnrUnitDto> pageInfo = new PageInfo<>(list);
116         //封裝返回結果
117         JsonResult<PageInfo<BaseMatnrUnitDto>> result = new JsonResult<>();
118         result.setData(pageInfo);
119         return result;
120     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM