|
|
@@ -112,88 +112,75 @@ public class KwOrderService {
|
|
|
*/
|
|
|
private Query getQuery(TradeOrderListStatisticParam params, Boolean isStatistic) {
|
|
|
Long entId = LoginUserHolder.getEntId();
|
|
|
+ Long userId = LoginUserHolder.getUserId();
|
|
|
Query query = new Query();
|
|
|
- Criteria andCriteria = new Criteria();
|
|
|
- andCriteria.and("delFlag").is(0);
|
|
|
- if (Objects.equals(params.getOrderType(), 1)) {
|
|
|
- //采购订单
|
|
|
- andCriteria.and("procureTopEntId").is(entId);
|
|
|
- } else {
|
|
|
- //销售订单
|
|
|
- andCriteria.and("supplyTopEntId").is(entId);
|
|
|
- }
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("delFlag").is(0);
|
|
|
+ String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
|
|
|
+ criteria.and(topEnt).is(entId);
|
|
|
//日期范围
|
|
|
if (Objects.nonNull(params.getStartCreateTime()) && Objects.nonNull(params.getEndCreateTime())) {
|
|
|
- andCriteria.and("createTime").gte(params.getStartCreateTime()).lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
|
|
|
+ criteria.and("createTime").gte(params.getStartCreateTime()).lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
|
|
|
} else if (Objects.nonNull(params.getStartCreateTime())) {
|
|
|
- andCriteria.and("createTime").gte(params.getStartCreateTime());
|
|
|
+ criteria.and("createTime").gte(params.getStartCreateTime());
|
|
|
} else if (Objects.nonNull(params.getEndCreateTime())) {
|
|
|
- andCriteria.and("createTime").lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
|
|
|
+ criteria.and("createTime").lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
|
|
|
}
|
|
|
//装卸货地址
|
|
|
String loadCode = params.getShippingAddressCode();
|
|
|
if (StringUtils.isNotBlank(loadCode)) {
|
|
|
switch (params.getShippingAddressLevel()) {
|
|
|
- case 1 -> andCriteria.and("loadCityCode")
|
|
|
+ case 1 -> criteria.and("loadCityCode")
|
|
|
.regex(Pattern.compile("^" + loadCode.substring(0, 2) + ".*$", Pattern.CASE_INSENSITIVE));
|
|
|
- case 2 -> andCriteria.and("loadCityCode")
|
|
|
+ case 2 -> criteria.and("loadCityCode")
|
|
|
.regex(Pattern.compile("^" + loadCode.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE));
|
|
|
- case 3 -> andCriteria.and("loadCityCode").is(loadCode);
|
|
|
+ case 3 -> criteria.and("loadCityCode").is(loadCode);
|
|
|
}
|
|
|
}
|
|
|
String unloadCode = params.getUnloadingAddressCode();
|
|
|
if (StringUtils.isNotBlank(unloadCode)) {
|
|
|
switch (params.getUnloadingAddressLevel()) {
|
|
|
- case 1 -> andCriteria.and("unloadCityCode")
|
|
|
+ case 1 -> criteria.and("unloadCityCode")
|
|
|
.regex(Pattern.compile("^" + unloadCode.substring(0, 2) + ".*$", Pattern.CASE_INSENSITIVE));
|
|
|
- case 2 -> andCriteria.and("unloadCityCode")
|
|
|
+ case 2 -> criteria.and("unloadCityCode")
|
|
|
.regex(Pattern.compile("^" + unloadCode.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE));
|
|
|
- case 3 -> andCriteria.and("unloadCityCode").is(unloadCode);
|
|
|
+ case 3 -> criteria.and("unloadCityCode").is(unloadCode);
|
|
|
}
|
|
|
}
|
|
|
//提货方式
|
|
|
if (StringUtils.isNotBlank(params.getPickupType())) {
|
|
|
- andCriteria.and("pickupType").is(params.getPickupType());
|
|
|
+ criteria.and("pickupType").is(params.getPickupType());
|
|
|
}
|
|
|
//交易方式
|
|
|
if (StringUtils.isNotBlank(params.getTrading())) {
|
|
|
- andCriteria.and("trading").is(params.getTrading());
|
|
|
+ criteria.and("trading").is(params.getTrading());
|
|
|
}
|
|
|
//交付类型
|
|
|
if (StringUtils.isNotBlank(params.getDeliveryType())) {
|
|
|
- andCriteria.and("deliveryType").is(params.getDeliveryType());
|
|
|
+ criteria.and("deliveryType").is(params.getDeliveryType());
|
|
|
}
|
|
|
//下单方式
|
|
|
if (StringUtils.isNotBlank(params.getSource())) {
|
|
|
- andCriteria.and("source").is(params.getSource());
|
|
|
+ criteria.and("source").is(params.getSource());
|
|
|
}
|
|
|
- List<Criteria> orCriteriaList = new ArrayList<>();
|
|
|
//订单状态
|
|
|
if (Objects.nonNull(params.getStatus()) && !isStatistic) {
|
|
|
- andCriteria.and("status").is(params.getStatus());
|
|
|
- if (Objects.equals(params.getStatus(), Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()))) {
|
|
|
- //草稿状态只能创建订单的企业能看
|
|
|
- andCriteria.and("entId").is(entId);
|
|
|
+ criteria.and("status").is(params.getStatus());
|
|
|
+ if (Objects.equals(params.getStatus(), 0)) {
|
|
|
+ //草稿状态只能创建订单的人能看
|
|
|
+ criteria.and("createBy").is(userId);
|
|
|
}
|
|
|
} else {
|
|
|
- //非草稿状态
|
|
|
- andCriteria.and("status").ne(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
|
|
|
- //or草稿状态且是当前企业
|
|
|
- orCriteriaList.add(Criteria.where("entId").is(entId).and("status")
|
|
|
- .is(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue())).and("delFlag").is(0));
|
|
|
+ //非草稿状态or草稿状态且是当前人且一级企业匹配
|
|
|
+ criteria.orOperator(Criteria.where("status").ne(0),
|
|
|
+ Criteria.where("status").is(0).and("createBy").is(userId));
|
|
|
+
|
|
|
}
|
|
|
- orCriteriaList.add(andCriteria);
|
|
|
//关键字模糊匹配
|
|
|
if (StringUtils.isNotBlank(params.getKeywords())) {
|
|
|
Pattern pattern = Pattern.compile("^.*" + params.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
|
|
|
- orCriteriaList.add(Criteria.where("tOrderNo").regex(pattern).and("delFlag").is(0));
|
|
|
- orCriteriaList.add(Criteria.where("procureFirmName").regex(pattern).and("delFlag").is(0));
|
|
|
- orCriteriaList.add(Criteria.where("supplyFirmName").regex(pattern).and("delFlag").is(0));
|
|
|
- orCriteriaList.add(Criteria.where("goodsName").regex(pattern).and("delFlag").is(0));
|
|
|
- }
|
|
|
- Criteria criteria = new Criteria();
|
|
|
- if (CollectionUtils.isNotEmpty(orCriteriaList)) {
|
|
|
- criteria.orOperator(orCriteriaList);
|
|
|
+ criteria.orOperator(Criteria.where("tOrderNo").regex(pattern), Criteria.where("procureFirmName").regex(pattern),
|
|
|
+ Criteria.where("supplyFirmName").regex(pattern), Criteria.where("goodsName").regex(pattern));
|
|
|
}
|
|
|
return query.addCriteria(criteria);
|
|
|
}
|
|
|
@@ -243,14 +230,8 @@ public class KwOrderService {
|
|
|
List<Long> ids = StringUtils.splitStrToList(params.getIds(), ",", Long.class);
|
|
|
Long entId = LoginUserHolder.getEntId();
|
|
|
Criteria criteria = new Criteria();
|
|
|
- criteria.and("tOrderId").in(ids).and("delFlag").is(0);
|
|
|
- if (Objects.equals(params.getOrderType(), 1)) {
|
|
|
- //采购订单
|
|
|
- criteria.and("procureTopEntId").is(entId);
|
|
|
- } else {
|
|
|
- //销售订单
|
|
|
- criteria.and("supplyTopEntId").is(entId);
|
|
|
- }
|
|
|
+ String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
|
|
|
+ criteria.and("tOrderId").in(ids).and(topEnt).is(entId).and("delFlag").is(0);
|
|
|
query.addCriteria(criteria);
|
|
|
} else {
|
|
|
query = getQuery(params, false);
|
|
|
@@ -294,14 +275,8 @@ public class KwOrderService {
|
|
|
Query query = new Query();
|
|
|
Long entId = LoginUserHolder.getEntId();
|
|
|
Criteria criteria = new Criteria();
|
|
|
- criteria.and("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue())).and("delFlag").is(0);
|
|
|
- if (Objects.equals(params.getOrderType(), 1)) {
|
|
|
- //采购订单
|
|
|
- criteria.and("procureTopEntId").is(entId);
|
|
|
- } else {
|
|
|
- //销售订单
|
|
|
- criteria.and("supplyTopEntId").is(entId);
|
|
|
- }
|
|
|
+ String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
|
|
|
+ criteria.and(topEnt).is(entId).and("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue())).and("delFlag").is(0);
|
|
|
//采购企业
|
|
|
if (Objects.nonNull(params.getProcureEntId())) {
|
|
|
criteria.and("procureEntId").is(params.getProcureEntId());
|
|
|
@@ -338,18 +313,12 @@ public class KwOrderService {
|
|
|
Long entId = LoginUserHolder.getEntId();
|
|
|
Query query = new Query();
|
|
|
Criteria criteria = new Criteria();
|
|
|
- if (Objects.equals(params.getOrderType(), 1)) {
|
|
|
- //采购订单
|
|
|
- criteria.and("procureTopEntId").is(entId);
|
|
|
- } else {
|
|
|
- //销售订单
|
|
|
- criteria.and("supplyTopEntId").is(entId);
|
|
|
- }
|
|
|
+ String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
|
|
|
List<Long> ids = StringUtils.splitStrToList(params.getContractIds(), ",", Long.class);
|
|
|
- criteria.and("contractId").in(ids).and("delFlag").is(0);
|
|
|
+ criteria.and("contractId").in(ids).and(topEnt).is(entId).and("delFlag").is(0);
|
|
|
query.addCriteria(criteria);
|
|
|
long count = mongoTemplate.count(query, SckwTradeOrder.class);
|
|
|
- Sort sort = Sort.by(Sort.Direction.DESC, "contractId","createTime");
|
|
|
+ Sort sort = Sort.by(Sort.Direction.DESC, "contractId", "createTime");
|
|
|
SpringDataPageAble pageAble = new SpringDataPageAble(params.getPage(), params.getPageSize(), sort);
|
|
|
query.with(pageAble);
|
|
|
List<SckwTradeOrder> list = mongoTemplate.find(query, SckwTradeOrder.class);
|