|
|
@@ -17,6 +17,7 @@ import com.sckw.report.service.param.ConsignOrderQuery;
|
|
|
import com.sckw.report.service.param.WaybillOrderQuery;
|
|
|
import com.sckw.report.service.vo.CarWaybillVo;
|
|
|
import com.sckw.report.service.vo.ConsignOrderVo;
|
|
|
+import com.sckw.report.service.vo.WaybillsCountVo;
|
|
|
import com.sckw.transport.api.dubbo.TransportDubboService;
|
|
|
import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -328,17 +329,50 @@ public class KwTransportService {
|
|
|
|
|
|
/**
|
|
|
* 获取运单列表
|
|
|
+ *
|
|
|
* @param query
|
|
|
- * @return
|
|
|
- * @throws ParseException
|
|
|
+ * @return {@link HttpResult }
|
|
|
+ * @author jc
|
|
|
+ * @date 2023/07/21
|
|
|
*/
|
|
|
public HttpResult getWaybillOrders(WaybillOrderQuery query) throws ParseException {
|
|
|
+ Criteria criteria = buildWaybillOrdersQuery(query);
|
|
|
+ Query queryFormat = new Query(criteria);
|
|
|
+ // in查询
|
|
|
+ if (CollectionUtils.isNotEmpty(query.getIds())) {
|
|
|
+ queryFormat.addCriteria(Criteria.where("wOrderId").in(query.getIds()));
|
|
|
+ }
|
|
|
+ // 总记录数
|
|
|
+ long total = mongoTemplate.count(queryFormat, SckwWaybillOrder.class);
|
|
|
+ queryFormat.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
|
|
|
+ Sort.by(Sort.Order.desc("createTime"))));
|
|
|
+ // 执行查询
|
|
|
+ List<SckwWaybillOrder> list = mongoTemplate.find(queryFormat, SckwWaybillOrder.class);
|
|
|
+ List<CarWaybillVo> returnList = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ packageWayBillReturnList(list, returnList);
|
|
|
+ }
|
|
|
+ PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, returnList);
|
|
|
+ return HttpResult.ok(build);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构造运单关联查询条件
|
|
|
+ * @param query
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Criteria buildWaybillOrdersQuery(WaybillOrderQuery query) {
|
|
|
// 模糊匹配
|
|
|
// 根据条件查询所有并排序,且分页
|
|
|
// 设置模糊查询匹配规则 忽略大小写
|
|
|
// 创建条件对象
|
|
|
Criteria criteria = new Criteria();
|
|
|
criteria.and("entId").is(LoginUserHolder.getEntId());
|
|
|
+ criteria.and("delFlag").is(NumberConstant.ZERO);
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(query.getStatus())) {
|
|
|
+ criteria.and("status").is(query.getStatus());
|
|
|
+ }
|
|
|
// 装载时间
|
|
|
if (StringUtils.isNotBlank(query.getStartLoadTime()) && StringUtils.isNotEmpty(query.getEndLoadTime())) {
|
|
|
criteria.andOperator(Criteria.where("loadTime").gte(query.getStartLoadTime()), Criteria.where("loadTime")
|
|
|
@@ -354,7 +388,6 @@ public class KwTransportService {
|
|
|
criteria.andOperator(Criteria.where("unloadTime").gte(query.getStartUnloadTime()), Criteria.where("unloadTime")
|
|
|
.lte(query.getEndUnloadTime()));
|
|
|
}
|
|
|
- criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
|
|
|
// 多条件模糊查询
|
|
|
Criteria c1 = new Criteria();
|
|
|
Criteria c2 = new Criteria();
|
|
|
@@ -372,27 +405,73 @@ public class KwTransportService {
|
|
|
c6 = Criteria.where("unloadAddress").regex(pattern);
|
|
|
criteria.orOperator(c1, c2, c3, c4, c5, c6);
|
|
|
}
|
|
|
- Query queryFormat = new Query(criteria);
|
|
|
- // in查询
|
|
|
- if (CollectionUtils.isNotEmpty(query.getIds())) {
|
|
|
- queryFormat.addCriteria(Criteria.where("wOrderId").in(query.getIds()));
|
|
|
- }
|
|
|
- // 总记录数
|
|
|
- long total = mongoTemplate.count(queryFormat, SckwWaybillOrder.class);
|
|
|
- queryFormat.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
|
|
|
- Sort.by(Sort.Order.desc("createTime"))));
|
|
|
- // 执行查询
|
|
|
- List<SckwWaybillOrder> list = mongoTemplate.find(queryFormat, SckwWaybillOrder.class);
|
|
|
- List<CarWaybillVo> returnList = new ArrayList<>();
|
|
|
- if (CollectionUtils.isNotEmpty(list)) {
|
|
|
- packageWayBillReturnList(list, returnList);
|
|
|
+ return criteria;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 运单管理-运单列表 top 统计
|
|
|
+ *
|
|
|
+ * @param query 查询
|
|
|
+ * @return {@link HttpResult }
|
|
|
+ * @author jc
|
|
|
+ * @date 2023/07/21
|
|
|
+ */
|
|
|
+ public HttpResult getWayBillStatistics(WaybillOrderQuery query){
|
|
|
+ Criteria criteria = buildWaybillOrdersQuery(query);
|
|
|
+ Aggregation aggregation = Aggregation.newAggregation(
|
|
|
+ Aggregation.match(criteria),
|
|
|
+ Aggregation.group("status").count().as("total"),
|
|
|
+ Aggregation.project("total").and("value").previousOperation()
|
|
|
+ );
|
|
|
+ AggregationResults<TobleTop> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwWaybillOrder.class, TobleTop.class);
|
|
|
+ List<TobleTop> results = outputTypeCount.getMappedResults();
|
|
|
+ // 填充默认值
|
|
|
+ List<TobleTop> list = new ArrayList<>();
|
|
|
+ for (CarWaybillEnum status:CarWaybillEnum.values()) {
|
|
|
+ TobleTop top = new TobleTop();
|
|
|
+ top.setName(status.getDestination());
|
|
|
+ top.setValue(String.valueOf(status.getCode()));
|
|
|
+ top.setTotal(0);
|
|
|
+ if(CollectionUtils.isNotEmpty(results)) {
|
|
|
+ for (TobleTop result:results) {
|
|
|
+ if(StringUtils.isNotEmpty(result.getValue()) && String.valueOf(result.getValue()).equals(String.valueOf(status.getCode()))) {
|
|
|
+ top.setTotal(result.getTotal());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ list.add(top);
|
|
|
}
|
|
|
- PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, returnList);
|
|
|
- return HttpResult.ok(build);
|
|
|
+ // 查询结果
|
|
|
+ return HttpResult.ok(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 运单管理-运单列表 列表统计数据项
|
|
|
+ *
|
|
|
+ * @param query 查询
|
|
|
+ * @return {@link HttpResult }
|
|
|
+ * @author jc
|
|
|
+ * @date 2023/07/21
|
|
|
+ */
|
|
|
+ public HttpResult wayBillTotalCount(WaybillOrderQuery query){
|
|
|
+ // 统计项字段
|
|
|
+ Criteria criteria = buildWaybillOrdersQuery(query);
|
|
|
+ Aggregation aggregation = Aggregation.newAggregation(
|
|
|
+ Aggregation.match(criteria),
|
|
|
+ Aggregation.group("id").count().as("countTotal")
|
|
|
+ .sum("entrustAmount").as("entrustTotal")
|
|
|
+ .sum("loadAmount").as("loadTotal")
|
|
|
+ .sum("unloadAmount").as("unloadTotal"),
|
|
|
+ Aggregation.project("countTotal", "entrustTotal", "loadTotal", "unloadTotal")
|
|
|
+ );
|
|
|
+ AggregationResults<WaybillsCountVo> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwWaybillOrder.class, WaybillsCountVo.class);
|
|
|
+ List<WaybillsCountVo> results = outputTypeCount.getMappedResults();
|
|
|
+ return HttpResult.ok(results);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 处理运单查询结果
|
|
|
+ * 运单处理运单查询结果
|
|
|
* @param list
|
|
|
* @param returnList
|
|
|
*/
|
|
|
@@ -407,9 +486,12 @@ public class KwTransportService {
|
|
|
vo.setDriverName(waybillOrder.getDriverName() == null ?
|
|
|
null : String.valueOf(waybillOrder.getDriverName()));
|
|
|
vo.setType(String.valueOf(waybillOrder.getType()));
|
|
|
- vo.setSendCarTime(String.valueOf(waybillOrder.getCreateTime()));
|
|
|
- vo.setStartTime(String.valueOf(waybillOrder.getStartTime()));
|
|
|
- vo.setEndTime(String.valueOf(waybillOrder.getEndTime()));
|
|
|
+ vo.setSendCarTime(waybillOrder.getCreateTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getCreateTime()));
|
|
|
+ vo.setStartTime(waybillOrder.getStartTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getStartTime()));
|
|
|
+ vo.setEndTime(waybillOrder.getEndTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getEndTime()));
|
|
|
vo.setEntrustAmount(String.valueOf(waybillOrder.getEntrustAmount()));
|
|
|
vo.setLoadingAddress(waybillOrder.getLoadDetailAddress());
|
|
|
vo.setUnloadingAddress(waybillOrder.getUnloadDetailAddress());
|
|
|
@@ -418,9 +500,17 @@ public class KwTransportService {
|
|
|
vo.setUnloadAmount(waybillOrder.getUnloadAmount() == null ?
|
|
|
null : String.valueOf(waybillOrder.getUnloadAmount()));
|
|
|
vo.setLoadTime(waybillOrder.getLoadTime() == null ?
|
|
|
- null : String.valueOf(waybillOrder.getLoadTime()));
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getLoadTime()));
|
|
|
vo.setUnloadTime(waybillOrder.getUnloadTime() == null ?
|
|
|
- null :String.valueOf(waybillOrder.getUnloadTime()));
|
|
|
+ null :DateUtil.getDateTime(waybillOrder.getUnloadTime()));
|
|
|
+ vo.setCreateTime(waybillOrder.getCreateTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getCreateTime()));
|
|
|
+ vo.setUpdateTime(waybillOrder.getUpdateTime() == null ?
|
|
|
+ null :DateUtil.getDateTime(waybillOrder.getUpdateTime()));
|
|
|
+ vo.setDeficitAmount(waybillOrder.getDeficitAmount() == null ?
|
|
|
+ null :String.valueOf(waybillOrder.getDeficitAmount()));
|
|
|
+ vo.setGoodsPriceUnit(waybillOrder.getGoodsPriceUnit() == null ?
|
|
|
+ null :String.valueOf(waybillOrder.getGoodsPriceUnit()));
|
|
|
returnList.add(vo);
|
|
|
}
|
|
|
}
|