|
@@ -1,11 +1,29 @@
|
|
|
package com.aoyang.tms.service.impl;
|
|
package com.aoyang.tms.service.impl;
|
|
|
|
|
|
|
|
|
|
+import com.aoyang.common.param.PageParam;
|
|
|
|
|
+import com.aoyang.common.result.Result;
|
|
|
|
|
+import com.aoyang.tms.common.ErrCodeEnum;
|
|
|
|
|
+import com.aoyang.tms.common.WorkOrderEnum;
|
|
|
|
|
+import com.aoyang.tms.controller.param.Truck;
|
|
|
|
|
+import com.aoyang.tms.controller.vo.LocationVO;
|
|
|
|
|
+import com.aoyang.tms.controller.vo.TruckOrderManageVO;
|
|
|
|
|
+import com.aoyang.tms.controller.vo.TruckOrderStatisticsVO;
|
|
|
import com.aoyang.tms.entity.WorkOrder;
|
|
import com.aoyang.tms.entity.WorkOrder;
|
|
|
import com.aoyang.tms.mapper.WorkOrderMapper;
|
|
import com.aoyang.tms.mapper.WorkOrderMapper;
|
|
|
|
|
+import com.aoyang.tms.service.CommonService;
|
|
|
import com.aoyang.tms.service.WorkOrderService;
|
|
import com.aoyang.tms.service.WorkOrderService;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* <p>
|
|
* <p>
|
|
|
* 运单运单表 服务实现类
|
|
* 运单运单表 服务实现类
|
|
@@ -17,4 +35,102 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
@Service
|
|
|
public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService {
|
|
public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService {
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private CommonService commonService;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private WorkOrderService workOrderService;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private WorkOrderMapper workOrderMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public TruckOrderStatisticsVO getTruckOrderStatistics(Long orgId) {
|
|
|
|
|
+ TruckOrderStatisticsVO vo = new TruckOrderStatisticsVO();
|
|
|
|
|
+ vo.setTotal(commonService.findOrgTruckNumber(orgId, null));
|
|
|
|
|
+ QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper();
|
|
|
|
|
+ queryWrapper.eq("org_id", orgId);
|
|
|
|
|
+ //装车
|
|
|
|
|
+ vo.setLoadWait(getOrgOrderCount(orgId, 1, WorkOrderEnum.ZHUANGCHE_WAIT.orderStatus()));
|
|
|
|
|
+ vo.setLoadGotoSpot(getOrgOrderCount(orgId, 1, WorkOrderEnum.GOTO_ZHUANGCHE_SPOT.orderStatus()));
|
|
|
|
|
+ vo.setLoadSubmit(getOrgOrderCount(orgId, 1, WorkOrderEnum.ZHUANGCHE_RESULT_SUBMIT.orderStatus()));
|
|
|
|
|
+ vo.setLoadCount(vo.getLoadGotoSpot() + vo.getLoadGotoSpot() + vo.getLoadSubmit());
|
|
|
|
|
+ //卸车
|
|
|
|
|
+ vo.setUnloadWait(getOrgOrderCount(orgId, 2, WorkOrderEnum.XIECHE_WAIT.orderStatus()));
|
|
|
|
|
+ vo.setUnloadGotoSpot(getOrgOrderCount(orgId, 2, WorkOrderEnum.GOTO_XIECHE_SPOT.orderStatus()));
|
|
|
|
|
+ vo.setUnloadSubmit(getOrgOrderCount(orgId, 2, WorkOrderEnum.XIECHE_RESULT_SUBMIT.orderStatus()));
|
|
|
|
|
+ vo.setUnloadCount(vo.getUnloadGotoSpot() + vo.getUnloadGotoSpot() + vo.getUnloadSubmit());
|
|
|
|
|
+ //剩余运力
|
|
|
|
|
+ vo.setSurplusCount(vo.getTotal() - vo.getLoadCount() - vo.getUnloadCount());
|
|
|
|
|
+ //未执行运单
|
|
|
|
|
+ vo.setUnExecuted(getOrgOrderCount(orgId, null, WorkOrderEnum.TODO.orderStatus()));
|
|
|
|
|
+ //未派单
|
|
|
|
|
+ vo.setUnAllocated(0);
|
|
|
|
|
+
|
|
|
|
|
+ return vo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private int getOrgOrderCount(Long orgId, Integer type, Integer status) {
|
|
|
|
|
+ QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<WorkOrder>().eq("org_id", orgId).
|
|
|
|
|
+ eq("order_status", status);
|
|
|
|
|
+ if (type != null) {
|
|
|
|
|
+ queryWrapper.eq("type", type);
|
|
|
|
|
+ }
|
|
|
|
|
+ return workOrderMapper.selectCount(queryWrapper);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Result<IPage<TruckOrderManageVO>> getTruckOrderStatistics(PageParam<Truck> pageParam) {
|
|
|
|
|
+ if (pageParam.getParam() == null) {
|
|
|
|
|
+ return new Result<>(ErrCodeEnum.BAD_PARAM.getCode(), ErrCodeEnum.BAD_PARAM.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ // TODO strategy接口
|
|
|
|
|
+ Result<IPage<Truck>> trucksResult = null;
|
|
|
|
|
+ if (!commonService.verifyResult(trucksResult)) {
|
|
|
|
|
+ return new Result<>(trucksResult.getCode(), trucksResult.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ IPage<Truck> records = trucksResult.getData();
|
|
|
|
|
+ List<Truck> trucks = records.getRecords();
|
|
|
|
|
+ IPage<TruckOrderManageVO> truckOrderRecords = new Page<TruckOrderManageVO>();
|
|
|
|
|
+ if (records == null || trucks.size() == 0) {
|
|
|
|
|
+ return new Result<>(truckOrderRecords);
|
|
|
|
|
+ }
|
|
|
|
|
+ truckOrderRecords.setTotal(records.getTotal());
|
|
|
|
|
+ truckOrderRecords.setCurrent(records.getCurrent());
|
|
|
|
|
+ truckOrderRecords.setSize(records.getSize());
|
|
|
|
|
+ List<TruckOrderManageVO> truckOrderList = new ArrayList<>();
|
|
|
|
|
+ for (Truck truck : trucks) {
|
|
|
|
|
+ TruckOrderManageVO vo = new TruckOrderManageVO();
|
|
|
|
|
+ BeanUtils.copyProperties(truck, vo);
|
|
|
|
|
+ QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper();
|
|
|
|
|
+ queryWrapper.eq("truck_id", truck.getTruckId());
|
|
|
|
|
+ List<Integer> statuses = new ArrayList<>();
|
|
|
|
|
+ statuses.add(10);
|
|
|
|
|
+ statuses.add(20);
|
|
|
|
|
+ statuses.add(30);
|
|
|
|
|
+ queryWrapper.in("order_status", statuses);
|
|
|
|
|
+ WorkOrder order = workOrderService.getOne(queryWrapper);
|
|
|
|
|
+ if (order != null) {
|
|
|
|
|
+ vo.setCycleId(order.getCycleId());
|
|
|
|
|
+ vo.setOrderNo(order.getOrderNo());
|
|
|
|
|
+ vo.setOrderStatus(order.getOrderStatus());
|
|
|
|
|
+ vo.setSpotId(order.getSpotId());
|
|
|
|
|
+ vo.setSpotName(order.getSpotName());
|
|
|
|
|
+ vo.setUpdateDate(order.getUpdateDate());
|
|
|
|
|
+ if (order.getOrderStatus().equals(WorkOrderEnum.ZHUANGCHE_WAIT.orderStatus())) {
|
|
|
|
|
+ // 等待中状态运单排队号
|
|
|
|
|
+ vo.setQueueNo(order.getQueueNo());
|
|
|
|
|
+ }
|
|
|
|
|
+ LocationVO location = commonService.getLocation(truck.getTruckId());
|
|
|
|
|
+ if (location != null) {
|
|
|
|
|
+ vo.setLatitude(location.getLatitude());
|
|
|
|
|
+ vo.setLongitude(location.getLongitude());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ truckOrderList.add(vo);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ truckOrderRecords.setRecords(truckOrderList);
|
|
|
|
|
+ return new Result<>(truckOrderRecords);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|