Files
scrq-hd/.svn/pristine/9c/9c31d3cd738e2918db2fd58601cf4addc2c5f983.svn-base
2025-07-03 10:34:04 +08:00

92 lines
4.1 KiB
Plaintext

package com.cmeim.biz.service;
import com.cmeim.common.core.exception.ServiceException;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@Transactional(rollbackFor = {ServiceException.class, RuntimeException.class, Exception.class})
public class OutBillService {
@Autowired
private EntityManager em;
public Map<String, Object> selectOutBillList(int pageNo, int pageSize, String outBillNumber,
String orderWorkNumber) {
StringBuffer sql = new StringBuffer();
StringBuffer total = new StringBuffer("select sum(total) as total from (");
//生产领料单
sql.append("select pick_bill_number as outBillNumber, order_work_numbers as orderWorkNumber, " +
"dict_type as type, dict_status as dictStatus, 1 as outBillType from mm_pick_bill a where 1=1");
total.append("select count(1) as total from mm_pick_bill a where 1=1");
if (StringUtils.isNotBlank(outBillNumber)) {
sql.append(" and a.pick_bill_number like :outBillNumber");
total.append(" and a.pick_bill_number like :outBillNumber");
}
if (StringUtils.isNotBlank(orderWorkNumber)) {
sql.append(" and a.order_work_numbers like :orderWorkNumber");
total.append(" and a.order_work_numbers like :orderWorkNumber");
}
//零星领料单
sql.append(" union all ");
total.append(" union all ");
sql.append("select sporadic_pick_bill_number as outBillNumber, order_work_number as orderWorkNumber, " +
"null as type, dict_status as dictStatus, 2 as outBillType from mm_sporadic_pick_bill a where 1=1");
total.append("select count(1) as total from mm_sporadic_pick_bill a where 1=1");
if (StringUtils.isNotBlank(outBillNumber)) {
sql.append(" and a.sporadic_pick_bill_number like :outBillNumber");
total.append(" and a.sporadic_pick_bill_number like :outBillNumber");
}
if (StringUtils.isNotBlank(orderWorkNumber)) {
sql.append(" and a.order_work_number like :orderWorkNumber");
total.append(" and a.order_work_number like :orderWorkNumber");
}
total.append(") b");
Query sqlQuery = em.createNativeQuery(sql.toString());
Query totalQuery = em.createNativeQuery(total.toString());
if (StringUtils.isNotBlank(outBillNumber)) {
sqlQuery.setParameter("outBillNumber", "%" + outBillNumber + "%");
totalQuery.setParameter("outBillNumber", "%" + outBillNumber + "%");
}
if (StringUtils.isNotBlank(orderWorkNumber)) {
sqlQuery.setParameter("orderWorkNumber", "%" + orderWorkNumber + "%");
totalQuery.setParameter("orderWorkNumber", "%" + orderWorkNumber + "%");
}
BigDecimal maxResults = (BigDecimal) totalQuery.getSingleResult();
sqlQuery.setFirstResult((pageNo - 1) * pageSize);
sqlQuery.setMaxResults(pageSize);
List resultList = sqlQuery.getResultList();
List<Map<String, Object>> data = Lists.newArrayList();
for (int i = 0; i < resultList.size(); i++) {
Object[] arr = (Object[]) resultList.get(i);
Map<String, Object> map = Maps.newHashMap();
map.put("outBillNumber", arr[0]);
map.put("orderWorkNumber", arr[1]);
map.put("type", arr[2]);
map.put("dictStatus", arr[3]);
map.put("outBillType", arr[4]);
data.add(map);
}
Map<String, Object> resultMap = Maps.newHashMap();
resultMap.put("maxResults", maxResults.longValue());
resultMap.put("data", data);
return resultMap;
}
}