package com.uas.eis.service.Impl; import com.uas.eis.dao.*; import com.uas.eis.sdk.dto.ListResp; import com.uas.eis.sdk.dto.QueryStockListReq; import com.uas.eis.sdk.dto.StockListDTO; import com.uas.eis.beans.result.Result; import com.uas.eis.service.ERPService; import com.uas.eis.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * @author wuyx * @email wuyx@usoftchina.com * @date 2025-04-25 */ @Service public class ERPServiceImpl implements ERPService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private BaseDao baseDao; @Override public Result getStockList(QueryStockListReq queryStockListReq) { ListResp listResp = new ListResp<>(); listResp.setPageNum(queryStockListReq.getPageNum()); listResp.setPageSize(queryStockListReq.getPageSize()); int page = queryStockListReq.getPageNum(); int pageSize = queryStockListReq.getPageSize(); int start = ((page - 1) * pageSize + 1); int end = page * pageSize; StringBuffer cond_sql = new StringBuffer(); if(StringUtil.hasText(queryStockListReq.getMaterialNo())){ cond_sql.append(" and upper(pw_prodcode) like '%").append(queryStockListReq.getMaterialNo().toUpperCase()).append("%' "); } if(StringUtil.hasText(queryStockListReq.getMaterialName())){ cond_sql.append(" and upper(pr_detail) like '%").append(queryStockListReq.getMaterialName().toUpperCase()).append("%' "); } if(StringUtil.hasText(queryStockListReq.getSpecs())){ cond_sql.append(" and upper(pr_spec) like '%").append(queryStockListReq.getSpecs().toUpperCase()).append("%' "); } if(StringUtil.hasText(queryStockListReq.getSpecsRules())){ cond_sql.append(" and upper(pr_specrule) like '%").append(queryStockListReq.getSpecsRules().toUpperCase()).append("%' "); } if(StringUtil.hasText(queryStockListReq.getWarehouse())){ cond_sql.append(" and upper(pw_whcode) like '%").append(queryStockListReq.getWarehouse().toUpperCase()).append("%' "); } //获取总数 StringBuffer searchSql = new StringBuffer(); searchSql.append("select pw_avprice,pr_location,pw_prodcode,pr_orispeccode,pr_brand,pr_spec,pr_specrule pr_spec_rule,pw_prodid,pr_unit,pw_id,pw_whcode,pw_onhand,pw_movedate,pr_buyername,pw_amount,pr_serial,wh_description,pw_lastdate,pr_detail,pr_speccs") .append(" ,purc_inprogress, po_qty, ma_qty, pick_qty, made_qty, wip_qty ") .append(" from productWH tab left join warehouse on pw_whcode=wh_code LEFT JOIN USER_PDMAPI_VIEW on pw_prodcode=pr_code left join (select pr_code prcode,pr_speccs from product ) on prcode = pr_code" ) .append("WHERE nvl(pw_onhand,0) > 0 ").append(cond_sql); StringBuffer countSql = new StringBuffer("select count(1) from ( "); countSql.append(searchSql); countSql.append(" )"); // logger.info("countSql:{}",countSql.toString()); Integer total = baseDao.getJdbcTemplate().queryForObject(countSql.toString(), Integer.class); listResp.setTotal(total); List stockListDTOS = new ArrayList<>(); if(total > 0){ StringBuffer querySql = new StringBuffer("select * from (select TT.*, ROWNUM rn from ( "); querySql.append(searchSql) .append("order by pw_id desc"); querySql.append(" )TT where ROWNUM <= "); querySql.append(end); querySql.append(") where rn >= "); querySql.append(start); // logger.info("querySql:{}",querySql.toString()); stockListDTOS = baseDao.getJdbcTemplate().query(querySql.toString(), new BeanPropertyRowMapper<>(StockListDTO.class)); } listResp.setList(stockListDTOS); return Result.success(listResp); } }