|
|
@@ -1,25 +1,39 @@
|
|
|
package com.uas.platform.b2b.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.uas.platform.b2b.core.util.ThreadUtils;
|
|
|
import com.uas.platform.b2b.dao.CommonDao;
|
|
|
-import com.uas.platform.b2b.dao.PagingReleaseCountDao;
|
|
|
import com.uas.platform.b2b.dao.PurchaseApBillDao;
|
|
|
import com.uas.platform.b2b.dao.PurchaseApBillItemDao;
|
|
|
+import com.uas.platform.b2b.dao.VendorDao;
|
|
|
import com.uas.platform.b2b.erp.model.ProdInOutRefreshPrice;
|
|
|
import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
|
|
|
+import com.uas.platform.b2b.model.ApcheckKeyWord;
|
|
|
+import com.uas.platform.b2b.model.DateFilter;
|
|
|
+import com.uas.platform.b2b.model.ErpProdIODetail;
|
|
|
+import com.uas.platform.b2b.model.ErpProdIo;
|
|
|
import com.uas.platform.b2b.model.Product;
|
|
|
import com.uas.platform.b2b.model.PurchaseApBill;
|
|
|
import com.uas.platform.b2b.model.PurchaseApBillItem;
|
|
|
import com.uas.platform.b2b.model.SearchFilter;
|
|
|
+import com.uas.platform.b2b.model.Vendor;
|
|
|
import com.uas.platform.b2b.ps.ProductUtils;
|
|
|
+import com.uas.platform.b2b.publicapi.model.TradeCount;
|
|
|
import com.uas.platform.b2b.search.SearchService;
|
|
|
+import com.uas.platform.b2b.service.ErpProdIODetailService;
|
|
|
import com.uas.platform.b2b.service.PurchaseApBillService;
|
|
|
+import com.uas.platform.b2b.service.PurchaseApCheckService;
|
|
|
+import com.uas.platform.b2b.support.CollectionUtil;
|
|
|
+import com.uas.platform.b2b.support.SPageUtils;
|
|
|
import com.uas.platform.b2b.support.SystemSession;
|
|
|
+import com.uas.platform.b2b.task.ApCheckTask;
|
|
|
import com.uas.platform.core.logging.BufferedLoggerManager;
|
|
|
import com.uas.platform.core.model.Constant;
|
|
|
import com.uas.platform.core.model.PageInfo;
|
|
|
import com.uas.platform.core.model.Status;
|
|
|
import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
import com.uas.search.b2b.model.PageParams;
|
|
|
+import com.uas.search.b2b.model.SPage;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
@@ -55,10 +69,16 @@ public class PurchaseApBillServiceImpl implements PurchaseApBillService {
|
|
|
private SearchService searchService;
|
|
|
|
|
|
@Autowired
|
|
|
- private PagingReleaseCountDao pagingReleaseCountDao;
|
|
|
+ private CommonDao commonDao;
|
|
|
|
|
|
@Autowired
|
|
|
- private CommonDao commonDao;
|
|
|
+ private PurchaseApCheckService purchaseApCheckService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private VendorDao vendorDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ErpProdIODetailService erpProdIODetailService;
|
|
|
|
|
|
private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
|
|
|
|
|
|
@@ -166,12 +186,6 @@ public class PurchaseApBillServiceImpl implements PurchaseApBillService {
|
|
|
return purchaseApBillDao.countByVendUU(SystemSession.getUser().getEnterprise().getUu());
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Integer getApBillUnreadCount() {
|
|
|
- return pagingReleaseCountDao.getUnreadCount(SystemSession.getUser().getEnterprise().getUu(),
|
|
|
- SystemSession.getUser().getUserUU(), "sale", "PURC$APBILL");
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public void refreshPrice(List<ProdInOutRefreshPrice> prodInOuts) {
|
|
|
Long enuu = SystemSession.getUser().getEnterprise().getUu();
|
|
|
@@ -199,4 +213,465 @@ public class PurchaseApBillServiceImpl implements PurchaseApBillService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 应付对账单获取所有满足条件的供应商
|
|
|
+ *
|
|
|
+ * @param params 分页参数
|
|
|
+ * @param keyword 关键词
|
|
|
+ * @param checkDate 对账月份
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @return 符合条件的供应商
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public SPage<Vendor> getVendorInfo(com.uas.platform.core.model.PageParams params, String keyword, String checkDate, Long fromDate, Long endDate) {
|
|
|
+ SPage<Vendor> vendorSPage = findVendorByPage(params, keyword);
|
|
|
+ final Long enUU = SystemSession.getUser().getEnterprise().getUu();
|
|
|
+ if (!org.springframework.util.CollectionUtils.isEmpty(vendorSPage.getContent())) {
|
|
|
+ vendorSPage.getContent().stream().filter(customer -> null != customer.getApcheck() && customer.getApcheck() == 1)
|
|
|
+ .forEach(customer -> {
|
|
|
+ Long vendorUU = customer.getVendEnUU();
|
|
|
+ if (!com.uas.ps.core.util.StringUtils.isEmpty(customer.getTotalCountString())) {
|
|
|
+ List<TradeCount> tradeCounts = JSON.parseArray(customer.getTotalCountString(), TradeCount.class);
|
|
|
+ customer.setTotalCount(tradeCounts);
|
|
|
+ }
|
|
|
+ // 本月应收
|
|
|
+ List<TradeCount> thisMonthTrades = purchaseApCheckService.getThisMonthTrade(vendorUU, enUU, checkDate, fromDate, endDate);
|
|
|
+ customer.setThisMonthCount(thisMonthTrades);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return vendorSPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过分页信息查询供应商信息
|
|
|
+ *
|
|
|
+ * @param params 分页参数
|
|
|
+ * @param keyword 搜索关键词
|
|
|
+ * @return 搜索结果
|
|
|
+ */
|
|
|
+ private SPage<Vendor> findVendorByPage(com.uas.platform.core.model.PageParams params, String keyword) {
|
|
|
+ PageInfo pageInfo = new PageInfo(params.getPage(), params.getCount());
|
|
|
+ org.springframework.data.domain.Sort sort = new org.springframework.data.domain.Sort( org.springframework.data.domain.Sort.Direction.DESC, "totalCountString");
|
|
|
+ pageInfo.setSort(sort);
|
|
|
+ /*
|
|
|
+ * 过滤条件
|
|
|
+ * 1、 当前企业为客户
|
|
|
+ * 2、 开启B2B对账
|
|
|
+ * 3、 需要对账价格不为空
|
|
|
+ */
|
|
|
+ pageInfo.filter("myEnUU", SystemSession.getUser().getEnterprise().getUu());
|
|
|
+ pageInfo.filter("apcheck", Constant.YES);
|
|
|
+ pageInfo.expression(PredicateUtils.ne("totalCountString", " ", true));
|
|
|
+ if (!com.uas.ps.core.util.StringUtils.isEmpty(keyword)) {
|
|
|
+ pageInfo.expression(PredicateUtils.like("vendorEnterprise.enName", keyword, true));
|
|
|
+ }
|
|
|
+ Page<Vendor> vendors = vendorDao.findAll((Root<Vendor> root, CriteriaQuery<?> query, CriteriaBuilder builder) ->
|
|
|
+ query.where(pageInfo.getPredicates(root, query, builder)).getRestriction(), pageInfo);
|
|
|
+ return SPageUtils.covertSPage(vendors);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过日期筛选,筛选出超出默认日期的单据
|
|
|
+ *
|
|
|
+ * @param searchKeyWord 搜索词
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @param checkDate 对账月份
|
|
|
+ * @return List<ErpProdIo>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ErpProdIo findXlsApChecks(ApcheckKeyWord searchKeyWord, Long fromDate, Long endDate, String checkDate) {
|
|
|
+ DateFilter dateFilter = erpProdIODetailService.initFilter(fromDate, endDate, checkDate);
|
|
|
+ Long enUU = SystemSession.getUser().getEnterprise().getUu();
|
|
|
+ // 货款调账
|
|
|
+ List<ErpProdIODetail> adjustments = getAdjustments(searchKeyWord, dateFilter.getFromDate(), dateFilter.getEndDate(), enUU);
|
|
|
+ // 采购验收单
|
|
|
+ List<ErpProdIODetail> saleAccepts = getSaleAccepts(searchKeyWord, dateFilter.getFromDate(), dateFilter.getEndDate(), enUU);
|
|
|
+ // 采购验退单
|
|
|
+ List<ErpProdIODetail> saleReturns = getSaleReturns(searchKeyWord, dateFilter.getFromDate(), dateFilter.getEndDate(), enUU);
|
|
|
+ // 客户不良品入库单
|
|
|
+ List<ErpProdIODetail> badIns = getBadIns(searchKeyWord, dateFilter.getFromDate(), dateFilter.getEndDate(), enUU);
|
|
|
+ // 客户不良品出库单
|
|
|
+ List<ErpProdIODetail> badOuts = getBadOuts(searchKeyWord, dateFilter.getFromDate(), dateFilter.getEndDate(), enUU);
|
|
|
+ // 委外验收单
|
|
|
+ List<ErpProdIODetail> makeAccepts = getMakeAccepts(searchKeyWord, dateFilter.getFromDate(), dateFilter.getEndDate(), enUU);
|
|
|
+ // 委外验退单
|
|
|
+ List<ErpProdIODetail> makeReturns = getMakeReturns(searchKeyWord, dateFilter.getFromDate(), dateFilter.getEndDate(), enUU);
|
|
|
+ List<ErpProdIODetail> details = new ArrayList<>();
|
|
|
+ details.addAll(adjustments);
|
|
|
+ details.addAll(saleAccepts);
|
|
|
+ details.addAll(saleReturns);
|
|
|
+ details.addAll(badIns);
|
|
|
+ details.addAll(badOuts);
|
|
|
+ details.addAll(makeAccepts);
|
|
|
+ details.addAll(makeReturns);
|
|
|
+ ErpProdIo erpProdIo = new ErpProdIo();
|
|
|
+ erpProdIo.setDetails(details);
|
|
|
+ // 应收总额
|
|
|
+ if (null != searchKeyWord.getVendorUU()) {
|
|
|
+ List<TradeCount> totalTrades = purchaseApCheckService.getDueTrade(searchKeyWord.getVendorUU(), enUU);
|
|
|
+ List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(enUU, searchKeyWord.getVendorUU());
|
|
|
+ erpProdIo.setVendorName(vendors.get(0).getVendorEnterprise().getEnName());
|
|
|
+ if (!CollectionUtil.isEmpty(totalTrades)) {
|
|
|
+ erpProdIo.setTotalCount(totalTrades);
|
|
|
+ if (!CollectionUtil.isEmpty(vendors)) {
|
|
|
+ String tradeString = JSON.toJSONString(totalTrades);
|
|
|
+ ThreadUtils.task(()
|
|
|
+ -> commonDao.getJdbcTemplate().update(String.format(ApCheckTask.UPDATE_COUNT_SQL, tradeString, vendors.get(0).getId()))
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 本月应收
|
|
|
+ List<TradeCount> thisMonthTrades = purchaseApCheckService.getThisMonthTrade(searchKeyWord.getVendorUU(), enUU, checkDate, fromDate, endDate);
|
|
|
+ erpProdIo.setThisMonthCount(thisMonthTrades);
|
|
|
+ }
|
|
|
+ return erpProdIo;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取待对账的委外验退单
|
|
|
+ *
|
|
|
+ * @param keyword 搜索关键词
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @param enUU 当前企业UU
|
|
|
+ * @return 委外验退单
|
|
|
+ */
|
|
|
+ private List<ErpProdIODetail> getMakeReturns(ApcheckKeyWord keyword, String fromDate, String endDate, Long enUU) {
|
|
|
+ StringBuffer sql = new StringBuffer("select mr_code as inoutno, mr_date as pidate, mr_rate as rate, mr_receivecode as receivecode, " +
|
|
|
+ "mr_receivename as receivename, '客户委外验退单' as piclass, 'make$returnitem' as sourcetable, ma_code as ordercode, 0 as orderdetno, " +
|
|
|
+ "mri_number as detno, (-(1) * mri_qty ) as qty, mri_orderpice as orderprice, mr_currency as currency, mri_taxrate as taxrate, " +
|
|
|
+ "mri_whname as whname, mri_ycheckqty as ycheckqty, make$orders.pr_code as prodcode, make$orders.pr_spec as prodspec, " +
|
|
|
+ "make$orders.pr_title as prodtitle, make$orders.pr_unit as produnit, " +
|
|
|
+ "((-(1) * mri_qty ) - coalesce(mri_ycheckqty, 0)) as thischeckqty, mr_enuu as custuu, ma_useruu custuseruu, mr_venduu as enuu, mri_id as sourceid, " +
|
|
|
+ "mr_sendcode as sendcode, ma_factory as pd_factory, en_name custname from make$return " +
|
|
|
+ "join make$returnitem on mr_id = mri_paid " +
|
|
|
+ "join make$orders on mri_odid = ma_id " +
|
|
|
+ "left join sec$enterprises on mr_enuu = en_uu " +
|
|
|
+ " where mri_qty > abs(coalesce(mri_ycheckqty, 0)) and mr_enuu = ").append(enUU).append(" ");
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getReceiveName())) {
|
|
|
+ sql.append("and mr_receivename = '").append(keyword.getReceiveName()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getFactory())) {
|
|
|
+ sql.append("and ma_factory = '").append(keyword.getFactory()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdSpec())) {
|
|
|
+ sql.append("and make$orders.pr_spec = '").append(keyword.getProdSpec()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdTitle())) {
|
|
|
+ sql.append("and make$orders.pr_title = '").append(keyword.getProdTitle()).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getTaxRate()) {
|
|
|
+ sql.append("and mri_taxrate = '").append(keyword.getTaxRate()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getSuuorname())) {
|
|
|
+ sql.append("and en_name = '").append(keyword.getSuuorname()).append("' ");
|
|
|
+ }
|
|
|
+ if (fromDate != null) {
|
|
|
+ sql.append("and DAYFORMDATE(mr_date) >= '").append(fromDate).append("' ");
|
|
|
+ }
|
|
|
+ if (endDate != null) {
|
|
|
+ sql.append("and DAYFORMDATE(mr_date) < '").append(endDate).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getVendorUU()) {
|
|
|
+ sql.append("and mr_venduu = ").append(keyword.getVendorUU());
|
|
|
+ }
|
|
|
+ return commonDao.query(sql.toString(), ErpProdIODetail.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取待对账的委外验收单
|
|
|
+ *
|
|
|
+ * @param keyword 搜索关键词
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @param enUU 当前企业UU
|
|
|
+ * @return 委外验收单
|
|
|
+ */
|
|
|
+ private List<ErpProdIODetail> getMakeAccepts(ApcheckKeyWord keyword, String fromDate, String endDate, Long enUU) {
|
|
|
+ StringBuffer sql = new StringBuffer("select make$accept.ma_code as inoutno, make$accept.ma_date as pidate, make$accept.ma_rate as rate, " +
|
|
|
+ "ma_receivecode as receivecode, ma_receivename as receivename, '客户委外验收单' as piclass, 'make$acceptitem' as sourcetable, " +
|
|
|
+ "make$orders.ma_code as ordercode, 0 as orderdetno, mai_number as detno, mai_qty as qty, mai_orderpice as orderprice, " +
|
|
|
+ "make$accept.ma_currency as currency, mai_taxrate as taxrate, mai_whname as whname, mai_ycheckqty as ycheckqty, " +
|
|
|
+ "make$orders.pr_code as prodcode, make$orders.pr_spec as prodspec, make$orders.pr_title as prodtitle, make$orders.pr_unit as produnit, " +
|
|
|
+ "(mai_qty - coalesce(mai_ycheckqty, 0)) as thischeckqty, make$accept.ma_enuu as custuu, make$orders.ma_useruu custuseruu, make$accept.ma_venduu as enuu, " +
|
|
|
+ "mai_id as sourceid, ma_sendcode as sendcode, ma_factory as factory, en_name custname from make$accept " +
|
|
|
+ "join make$acceptitem on make$accept.ma_id = mai_paid " +
|
|
|
+ "join make$orders on mai_odid = make$orders.ma_id " +
|
|
|
+ "left join sec$enterprises on make$accept.ma_enuu = en_uu " +
|
|
|
+ "where mai_qty > coalesce(mai_ycheckqty, 0) and make$accept.ma_enuu = ").append(enUU).append(" ");
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getReceiveName())) {
|
|
|
+ sql.append("and ma_receivename = '").append(keyword.getReceiveName()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getFactory())) {
|
|
|
+ sql.append("and ma_factory = '").append(keyword.getFactory()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdSpec())) {
|
|
|
+ sql.append("and make$orders.pr_spec = '").append(keyword.getProdSpec()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdTitle())) {
|
|
|
+ sql.append("and make$orders.pr_title = '").append(keyword.getProdTitle()).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getTaxRate()) {
|
|
|
+ sql.append("and mai_taxrate = '").append(keyword.getTaxRate()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getSuuorname())) {
|
|
|
+ sql.append("and en_name = '").append(keyword.getSuuorname()).append("' ");
|
|
|
+ }
|
|
|
+ if (fromDate != null) {
|
|
|
+ sql.append("and DAYFORMDATE(make$accept.ma_date) >= '").append(fromDate).append("' ");
|
|
|
+ }
|
|
|
+ if (endDate != null) {
|
|
|
+ sql.append("and DAYFORMDATE(make$accept.ma_date) < '").append(endDate).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getVendorUU()) {
|
|
|
+ sql.append("and make$accept.ma_venduu = ").append(keyword.getVendorUU());
|
|
|
+ }
|
|
|
+ return commonDao.query(sql.toString(), ErpProdIODetail.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取待对账的客户不良品出库单
|
|
|
+ *
|
|
|
+ * @param keyword 搜索关键词
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @param enUU 当前企业UU
|
|
|
+ * @return 客户不良品出库单
|
|
|
+ */
|
|
|
+ private List<ErpProdIODetail> getBadOuts(ApcheckKeyWord keyword, String fromDate, String endDate, Long enUU) {
|
|
|
+ StringBuffer sql = new StringBuffer("select po_code as inoutno, po_date as pidate, po_rate as rate, po_receivecode as receivecode, " +
|
|
|
+ "po_receivename as receivename, '客户不良品出库单' as piclass, 'purc$badoutitem' as sourcetable, pu_code as pd_ordercode, " +
|
|
|
+ "purc$orderitems.pd_number as orderdetno, poi_number as detno, (-(1) * poi_qty ) as qty, 0 as pd_orderprice, po_currency as currency, " +
|
|
|
+ "poi_taxrate as taxrate, poi_whname as whname, poi_ycheckqty as ycheckqty, pr_code as prodcode, pr_spec as prodspec, pr_title as prodtitle, pr_unit as produnit, " +
|
|
|
+ "((-(1) * poi_qty ) - coalesce( poi_ycheckqty, 0)) as thischeckqty, po_enuu as custuu, pu_useruu custuseruu, po_venduu as enuu, poi_id as sourceid, " +
|
|
|
+ "po_sendcode as sendcode, purc$orderitems.pd_factory as factory, en_name custname from purc$badout " +
|
|
|
+ "join purc$badoutitem on po_id = poi_poid " +
|
|
|
+ "left join purc$orderitems on poi_pdid = pd_id " +
|
|
|
+ "left join purc$orders on pu_id = pd_puid " +
|
|
|
+ "left join sec$enterprises on po_enuu = en_uu " +
|
|
|
+ "where poi_qty > abs(coalesce( poi_ycheckqty, 0)) and po_enuu = ").append(enUU).append(" ");
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getReceiveName())) {
|
|
|
+ sql.append("and po_receivename = '").append(keyword.getReceiveName()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getFactory())) {
|
|
|
+ sql.append("and pd_factory = '").append(keyword.getFactory()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdSpec())) {
|
|
|
+ sql.append("and pr_spec = '").append(keyword.getProdSpec()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdTitle())) {
|
|
|
+ sql.append("and pr_title = '").append(keyword.getProdTitle()).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getTaxRate()) {
|
|
|
+ sql.append("and poi_taxrate = '").append(keyword.getTaxRate()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getSuuorname())) {
|
|
|
+ sql.append("and en_name = '").append(keyword.getSuuorname()).append("' ");
|
|
|
+ }
|
|
|
+ if (fromDate != null) {
|
|
|
+ sql.append("and DAYFORMDATE(po_date) >= '").append(fromDate).append("' ");
|
|
|
+ }
|
|
|
+ if (endDate != null) {
|
|
|
+ sql.append("and DAYFORMDATE(po_date) < '").append(endDate).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getVendorUU()) {
|
|
|
+ sql.append("and po_venduu = ").append(keyword.getVendorUU());
|
|
|
+ }
|
|
|
+ return commonDao.query(sql.toString(), ErpProdIODetail.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取待对账的客户不良品入库单
|
|
|
+ *
|
|
|
+ * @param keyword 搜索关键词
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @param enUU 当前企业UU
|
|
|
+ * @return 客户不良品入库单
|
|
|
+ */
|
|
|
+ private List<ErpProdIODetail> getBadIns(ApcheckKeyWord keyword, String fromDate, String endDate, Long enUU) {
|
|
|
+ StringBuffer sql = new StringBuffer("select pb_code as inoutno, pb_date as pidate, pb_rate as rate, pb_receivecode as receivecode, " +
|
|
|
+ "pb_receivename as receivename, '客户不良品入库单' as piclass, 'purc$badinitem' as sourcetable, pu_code as ordercode, " +
|
|
|
+ "pd_number as orderdetno, pbi_number as detno, pbi_qty as qty, 0 as pd_orderprice, pb_currency as currency, pbi_taxrate as taxrate, " +
|
|
|
+ "pbi_whname as whname, pbi_ycheckqty as ycheckqty, pr_code as prodcode, pr_spec as prodspec, pr_title as prodtitle, pr_unit as produnit, " +
|
|
|
+ "(pbi_qty - coalesce(pbi_ycheckqty, 0)) as thischeckqty, pb_enuu as custuu, pu_useruu custuseruu, pb_venduu as enuu, pbi_id as sourceid, " +
|
|
|
+ "pb_sendcode as sendcode, pd_factory as factory, en_name custname from purc$badin " +
|
|
|
+ "join purc$badinitem on pb_id = pbi_pbid " +
|
|
|
+ "left join purc$orderitems on pbi_pdid = pd_id " +
|
|
|
+ "left join purc$orders on pu_id = pd_puid " +
|
|
|
+ "left join sec$enterprises on pb_enuu = en_uu " +
|
|
|
+ "where pbi_qty > abs(coalesce(pbi_ycheckqty, 0)) and pb_enuu = ").append(enUU).append(" ");
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getReceiveName())) {
|
|
|
+ sql.append("and pb_receivename = '").append(keyword.getReceiveName()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getFactory())) {
|
|
|
+ sql.append("and pd_factory = '").append(keyword.getFactory()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdSpec())) {
|
|
|
+ sql.append("and pr_spec = '").append(keyword.getProdSpec()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdTitle())) {
|
|
|
+ sql.append("and pr_title = '").append(keyword.getProdTitle()).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getTaxRate()) {
|
|
|
+ sql.append("and pbi_taxrate = '").append(keyword.getTaxRate()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getSuuorname())) {
|
|
|
+ sql.append("and en_name = '").append(keyword.getSuuorname()).append("' ");
|
|
|
+ }
|
|
|
+ if (fromDate != null) {
|
|
|
+ sql.append("and pb_date >= '").append(fromDate).append("' ");
|
|
|
+ }
|
|
|
+ if (endDate != null) {
|
|
|
+ sql.append("and pb_date < '").append(endDate).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getVendorUU()) {
|
|
|
+ sql.append("and pb_venduu = ").append(keyword.getVendorUU());
|
|
|
+ }
|
|
|
+ return commonDao.query(sql.toString(), ErpProdIODetail.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取待对账的客户采购验退单信息
|
|
|
+ *
|
|
|
+ * @param keyword 搜索关键词
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @param enUU 当前企业UU
|
|
|
+ * @return 客户采购验退单信息
|
|
|
+ */
|
|
|
+ private List<ErpProdIODetail> getSaleReturns(ApcheckKeyWord keyword, String fromDate, String endDate, Long enUU) {
|
|
|
+ StringBuffer sql = new StringBuffer("select purc$return.pr_code as inoutno, pr_date as pidate, pr_rate as rate, pr_receivecode as receivecode, " +
|
|
|
+ "pr_receivename as receivename, '客户采购验退单' as piclass, 'purc$returnitem' as sourcetable, pu_code as ordercode, pd_number as orderdetno, " +
|
|
|
+ "pri_number as detno, (-(1) * pri_qty ) as qty, pri_orderprice as orderprice, pr_currency as currency, pri_taxrate as taxrate, " +
|
|
|
+ "pri_whname as whname, purc$returnitem.pr_code as prodcode, purc$returnitem.pr_spec as prodspec, purc$returnitem.pr_title as prodtitle, purc$returnitem.pr_unit as produnit, " +
|
|
|
+ "pri_ycheckqty as ycheckqty, ((-(1) * pri_qty ) - coalesce(pri_ycheckqty, 0)) as thischeckqty, pr_enuu as custuu, pu_useruu custuseruu, pr_venduu as enuu, " +
|
|
|
+ "pri_id as sourceid, pr_sendcode as sendcode, pd_factory as factory, en_name custname from purc$return " +
|
|
|
+ "join purc$returnitem on pr_id = pri_prid " +
|
|
|
+ "left join purc$orderitems on pri_pdid = pd_id " +
|
|
|
+ "left join purc$orders on pu_id = pd_puid " +
|
|
|
+ "left join sec$enterprises on pr_enuu = en_uu " +
|
|
|
+ "where pri_qty > abs(coalesce(pri_ycheckqty, 0)) and pr_enuu = ").append(enUU).append(" ");
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getReceiveName())) {
|
|
|
+ sql.append("and pr_receivename = '").append(keyword.getReceiveName()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getFactory())) {
|
|
|
+ sql.append("and pd_factory = '").append(keyword.getFactory()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdSpec())) {
|
|
|
+ sql.append("and purc$returnitem.pr_spec = '").append(keyword.getProdSpec()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdTitle())) {
|
|
|
+ sql.append("and purc$returnitem.pr_title = '").append(keyword.getProdTitle()).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getTaxRate()) {
|
|
|
+ sql.append("and pri_taxrate = '").append(keyword.getTaxRate()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getSuuorname())) {
|
|
|
+ sql.append("and en_name = '").append(keyword.getSuuorname()).append("' ");
|
|
|
+ }
|
|
|
+ if (fromDate != null) {
|
|
|
+ sql.append("and pr_date >= '").append(fromDate).append("' ");
|
|
|
+ }
|
|
|
+ if (endDate != null) {
|
|
|
+ sql.append("and pr_date < '").append(endDate).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getVendorUU()) {
|
|
|
+ sql.append("and pr_venduu = ").append(keyword.getVendorUU());
|
|
|
+ }
|
|
|
+ return commonDao.query(sql.toString(), ErpProdIODetail.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取待对账的客户采购验收单信息
|
|
|
+ *
|
|
|
+ * @param keyword 搜索关键词
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @param enUU 当前企业UU
|
|
|
+ * @return 客户采购验收单信息
|
|
|
+ */
|
|
|
+ private List<ErpProdIODetail> getSaleAccepts(ApcheckKeyWord keyword, String fromDate, String endDate, Long enUU) {
|
|
|
+ StringBuffer sql = new StringBuffer("select pa_code as inoutno, pa_date as pidate, pa_rate as rate, pa_receivecode as receivcode, " +
|
|
|
+ "pa_receivename as receivename, '客户采购验收单' as piclass, 'purc$acceptitem' as sourcetable, pu_code as ordercode, " +
|
|
|
+ "pd_number as orderdetno, pai_number as detno, pai_qty as qty, pai_orderprice as orderprice, pa_currency as currency, " +
|
|
|
+ "pai_taxrate as taxrate, pai_whname as whname, purc$acceptitem.pr_code as prodcode, purc$acceptitem.pr_spec as prodspec, purc$acceptitem.pr_unit as produnit, " +
|
|
|
+ "purc$acceptitem.pr_title as prodtitle, pai_ycheckqty as ycheckqty, (pai_qty - coalesce(pai_ycheckqty, 0)) as thischeckqty, " +
|
|
|
+ "pa_enuu as custuu, pu_useruu custuseruu, pa_venduu as enuu, pai_id as sourceid, pa_sendcode as sendcode, pd_factory as factory, en_name custname from purc$accept " +
|
|
|
+ "join purc$acceptitem on pai_paid = pa_id " +
|
|
|
+ "left join purc$orderitems on pai_pdid = pd_id " +
|
|
|
+ "left join purc$orders on purc$orders.pu_id = pd_puid " +
|
|
|
+ "left join sec$enterprises on pa_enuu = en_uu " +
|
|
|
+ "where pai_qty > coalesce(pai_ycheckqty, 0) and pa_enuu = ").append(enUU).append(" ");
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getReceiveName())) {
|
|
|
+ sql.append("and pa_receivename = '").append(keyword.getReceiveName()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getFactory())) {
|
|
|
+ sql.append("and pd_factory = '").append(keyword.getFactory()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdSpec())) {
|
|
|
+ sql.append("and purc$acceptitem.pr_spec = '").append(keyword.getProdSpec()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdTitle())) {
|
|
|
+ sql.append("and purc$acceptitem.pr_title = '").append(keyword.getProdTitle()).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getTaxRate()) {
|
|
|
+ sql.append("and pai_taxrate = '").append(keyword.getTaxRate()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getSuuorname())) {
|
|
|
+ sql.append("and en_name = '").append(keyword.getSuuorname()).append("' ");
|
|
|
+ }
|
|
|
+ if (fromDate != null) {
|
|
|
+ sql.append("and pa_date >= '").append(fromDate).append("' ");
|
|
|
+ }
|
|
|
+ if (endDate != null) {
|
|
|
+ sql.append("and pa_date < '").append(endDate).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getVendorUU()) {
|
|
|
+ sql.append("and pa_venduu = ").append(keyword.getVendorUU());
|
|
|
+ }
|
|
|
+ return commonDao.query(sql.toString(), ErpProdIODetail.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取待对账的货款调账信息
|
|
|
+ *
|
|
|
+ * @param keyword 搜索关键词
|
|
|
+ * @param fromDate 开始时间
|
|
|
+ * @param endDate 截止时间
|
|
|
+ * @param enUU 当前企业UU
|
|
|
+ * @return 货款调账信息
|
|
|
+ */
|
|
|
+ private List<ErpProdIODetail> getAdjustments(ApcheckKeyWord keyword, String fromDate, String endDate, Long enUU) {
|
|
|
+ StringBuffer sql = new StringBuffer("select aa_inoutno inoutno, aa_orderdate pidate, aa_rate rate, aa_receivecode receivecode, " +
|
|
|
+ "aa_receivename receivename, '货款调账' as piclass, 'purc$apbilladjustment' as sourcetable, aa_ordercode ordercode, " +
|
|
|
+ "aa_orderdetno orderdetno, aa_detno detno, aa_prid prid, aa_prodcode prodcode, aa_prodspec prodspec, aa_prodtitle prodtitle, aa_produnit as produnit, " +
|
|
|
+ "aa_qty qty, aa_orderprice orderprice, aa_currency currency, aa_taxrate taxrate, aa_whname whname, aa_ycheckqty ycheckqty, " +
|
|
|
+ "(aa_qty - coalesce(aa_ycheckqty, 0)) as thischeckqty, aa_custuu custuu, aa_custuseruu custuseruu, aa_enuu enuu, aa_id sourceid, aa_sendcode sendcode, " +
|
|
|
+ "aa_factory factory, aa_custname custname from purc$apbilladjustment where coalesce(aa_thischeckqty, 0) <> 0 and aa_custuu = ").append(enUU).append(" ");
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getFactory())) {
|
|
|
+ sql.append("and aa_factory = '").append(keyword.getFactory()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdSpec())) {
|
|
|
+ sql.append("and aa_prodspec = '").append(keyword.getProdSpec()).append("' ");
|
|
|
+ }
|
|
|
+ if (!org.apache.axis.utils.StringUtils.isEmpty(keyword.getProdTitle())) {
|
|
|
+ sql.append("and aa_prodtitle = '").append(keyword.getProdTitle()).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getTaxRate()) {
|
|
|
+ sql.append("and aa_taxrate = '").append(keyword.getTaxRate()).append("' ");
|
|
|
+ }
|
|
|
+ if (fromDate != null) {
|
|
|
+ sql.append("and aa_date >= '").append(fromDate).append("' ");
|
|
|
+ }
|
|
|
+ if (endDate != null) {
|
|
|
+ sql.append("and aa_date < '").append(endDate).append("' ");
|
|
|
+ }
|
|
|
+ if (null != keyword.getVendorUU()) {
|
|
|
+ sql.append("and aa_enuu = ").append(keyword.getVendorUU());
|
|
|
+ }
|
|
|
+ return commonDao.query(sql.toString(), ErpProdIODetail.class);
|
|
|
+ }
|
|
|
}
|