ERPServiceImpl.java 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.uas.eis.service.Impl;
  2. import com.uas.eis.dao.*;
  3. import com.uas.eis.sdk.dto.ListResp;
  4. import com.uas.eis.sdk.dto.QueryStockListReq;
  5. import com.uas.eis.sdk.dto.StockListDTO;
  6. import com.uas.eis.beans.result.Result;
  7. import com.uas.eis.service.ERPService;
  8. import com.uas.eis.utils.StringUtil;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  13. import org.springframework.stereotype.Service;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. /**
  17. * @author wuyx
  18. * @email wuyx@usoftchina.com
  19. * @date 2025-04-25
  20. */
  21. @Service
  22. public class ERPServiceImpl implements ERPService {
  23. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  24. @Autowired
  25. private BaseDao baseDao;
  26. @Override
  27. public Result getStockList(QueryStockListReq queryStockListReq) {
  28. ListResp<StockListDTO> listResp = new ListResp<>();
  29. listResp.setPageNum(queryStockListReq.getPageNum());
  30. listResp.setPageSize(queryStockListReq.getPageSize());
  31. int page = queryStockListReq.getPageNum();
  32. int pageSize = queryStockListReq.getPageSize();
  33. int start = ((page - 1) * pageSize + 1);
  34. int end = page * pageSize;
  35. StringBuffer cond_sql = new StringBuffer();
  36. if(StringUtil.hasText(queryStockListReq.getMaterialNo())){
  37. cond_sql.append(" and upper(pw_prodcode) like '%").append(queryStockListReq.getMaterialNo().toUpperCase()).append("%' ");
  38. }
  39. if(StringUtil.hasText(queryStockListReq.getMaterialName())){
  40. cond_sql.append(" and upper(pr_detail) like '%").append(queryStockListReq.getMaterialName().toUpperCase()).append("%' ");
  41. }
  42. if(StringUtil.hasText(queryStockListReq.getSpecs())){
  43. cond_sql.append(" and upper(pr_spec) like '%").append(queryStockListReq.getSpecs().toUpperCase()).append("%' ");
  44. }
  45. if(StringUtil.hasText(queryStockListReq.getSpecsRules())){
  46. cond_sql.append(" and upper(pr_specrule) like '%").append(queryStockListReq.getSpecsRules().toUpperCase()).append("%' ");
  47. }
  48. if(StringUtil.hasText(queryStockListReq.getWarehouse())){
  49. cond_sql.append(" and upper(pw_whcode) like '%").append(queryStockListReq.getWarehouse().toUpperCase()).append("%' ");
  50. }
  51. //获取总数
  52. StringBuffer searchSql = new StringBuffer();
  53. 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")
  54. .append(" ,purc_inprogress, po_qty, ma_qty, pick_qty, made_qty, wip_qty ")
  55. .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" )
  56. .append("WHERE nvl(pw_onhand,0) > 0 ").append(cond_sql);
  57. StringBuffer countSql = new StringBuffer("select count(1) from ( ");
  58. countSql.append(searchSql);
  59. countSql.append(" )");
  60. // logger.info("countSql:{}",countSql.toString());
  61. Integer total = baseDao.getJdbcTemplate().queryForObject(countSql.toString(), Integer.class);
  62. listResp.setTotal(total);
  63. List<StockListDTO> stockListDTOS = new ArrayList<>();
  64. if(total > 0){
  65. StringBuffer querySql = new StringBuffer("select * from (select TT.*, ROWNUM rn from ( ");
  66. querySql.append(searchSql)
  67. .append("order by pw_id desc");
  68. querySql.append(" )TT where ROWNUM <= ");
  69. querySql.append(end);
  70. querySql.append(") where rn >= ");
  71. querySql.append(start);
  72. // logger.info("querySql:{}",querySql.toString());
  73. stockListDTOS = baseDao.getJdbcTemplate().query(querySql.toString(),
  74. new BeanPropertyRowMapper<>(StockListDTO.class));
  75. }
  76. listResp.setList(stockListDTOS);
  77. return Result.success(listResp);
  78. }
  79. }