kongdeqiang
2023-03-27 172c5525cbdba1c3b32b47cb60bd35bed707101c
xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/OrderTaskController.java
@@ -13,6 +13,7 @@
import cn.exrick.xboot.your.service.*;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
@@ -22,10 +23,12 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * @author whj
@@ -67,12 +70,47 @@
    @Autowired
    private IEventLogService iEventLogService;
    @Autowired
    private IOrderLogService iOrderLogService;
    @Autowired
    private IOrderTaskOriginalService iOrderTaskOriginalService;
    @Autowired
    private IOrderDetailOriginalService iOrderDetailOriginalService;
    @Autowired
    private ICustomerReceiveService iCustomerReceiveService;
    @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
    @ApiOperation(value = "通过id获取")
    public Result<OrderTask> get(@PathVariable String id) {
        OrderTask orderTask = iOrderTaskService.getById(id);
        return new ResultUtil<OrderTask>().setData(orderTask);
    }
    @RequestMapping(value = "/getByPage2", method = RequestMethod.GET)
    @ApiOperation(value = "分页获取")
    public Result<IPage<OrderTask>> getByPage2(PageVo page,String sendDate,String userName,String customerName,Integer status) {
        QueryWrapper<OrderTask> wrapper = new QueryWrapper<>();
        if(StrUtil.isNotEmpty(sendDate)){
            wrapper.eq("order_date",sendDate);
        }
        IPage<OrderTask> data = iOrderTaskService.page(PageUtil.initMpPage(page),wrapper);
        List<OrderTask> records = data.getRecords();
        for (OrderTask record : records) {
            if(record.getAreaSectionId() != null){
                AreaSection byId = iAreaSectionService.getById(record.getAreaSectionId());
                if(byId != null){
                    record.setAreaSectionName(byId.getName());
                }
            }
        }
        data.setRecords(records);
        return new ResultUtil<IPage<OrderTask>>().setData(data);
    }
//    public Area getArea(String userId){
@@ -99,23 +137,37 @@
//    }
    private String getFormatDate(String sendTime){
        if(StrUtil.isNotEmpty(sendTime)){
    private String getFormatDate(String sendTime) {
        if (StrUtil.isNotEmpty(sendTime)) {
            return sendTime;
        }else{
        } else {
            return DateUtil.format(new Date(), "yyyy-MM-dd");
        }
    }
    public Area getArea(String userId){
    private Date getDate(String sendTime){
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        if (StrUtil.isNotEmpty(sendTime)) {
            return new Date();
        } else {
            try {
                return format.parse(sendTime);
            } catch (ParseException e) {
                e.printStackTrace();
                return new Date();
            }
        }
    }
    public Area getArea(String userId) {
        QueryWrapper<Car> carQueryWrapper = new QueryWrapper<Car>();
        carQueryWrapper.eq("user_id",userId).or().eq("follow_user_id",userId);
        carQueryWrapper.eq("user_id", userId).or().eq("follow_user_id", userId);
        Car one = iCarService.getOne(carQueryWrapper);
        if(one==null){
        if (one == null) {
            return null;
        }else{
        } else {
            QueryWrapper<Area> wrapper = new QueryWrapper<Area>();
            wrapper.eq("car_id",one.getId());
            wrapper.eq("car_id", one.getId());
            Area area = iAreaService.getOne(wrapper);
            return area;
        }
@@ -125,28 +177,28 @@
    @ApiOperation(value = "获取今日任务统计信息")
    public Result<Object> getAll(String sendTime) {
        Area area = getArea(securityUtil.getCurrUser().getId());
        if(area==null){
        if (area == null) {
            return ResultUtil.error("请联系管理员绑定该车辆");
        }
        QueryWrapper<OrderTask> wrapper2 = new QueryWrapper<OrderTask>();
        String format = getFormatDate(sendTime);
        wrapper2.eq("area_id",area.getId());
        wrapper2.eq("send_date",format);
        wrapper2.eq("area_id", area.getId());
        wrapper2.eq("send_date", format);
        List<OrderTask> list = iOrderTaskService.list(wrapper2);
        int sum = iOrderTaskService.sum(area.getId(),format);
        int sum = iOrderTaskService.sum(area.getId(), format);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("count",list.size());
        map.put("sum",sum);
        map.put("name","");
        if(list.size()>0){
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("count", list.size());
        map.put("sum", sum);
        map.put("name", "");
        if (list.size() > 0) {
            OrderTask orderTask = list.get(0);
            String areaSectionId = orderTask.getAreaSectionId();
            AreaSection a = iAreaSectionService.getById(areaSectionId);
            Area area2 = iAreaService.getById(orderTask.getAreaId());
            map.put("name",area2.getName()+a.getName());
            map.put("name", area2.getName() + a.getName());
            list.clear();
        }
        return new ResultUtil<Object>().setData(map);
@@ -156,51 +208,65 @@
    @ApiOperation(value = "获取今日配送任务详情列表")
    public Result<List<OrderTask>> getTodayOrder(String sendTime) {
        Area area = getArea(securityUtil.getCurrUser().getId());
        if(area==null){
        if (area == null) {
            return ResultUtil.error("请联系管理员绑定该车辆");
        }
        QueryWrapper<OrderTask> wrapper2 = new QueryWrapper<OrderTask>();
        String format = getFormatDate(sendTime);
        wrapper2.eq("a.area_id",area.getId());
        wrapper2.eq("a.send_date",format);
        wrapper2.orderByAsc("a.seq").orderByAsc("a.status");
        List<OrderTask> list = iOrderTaskService.list2(wrapper2);
//        wrapper2.eq("a.area_id",area.getId());
//        wrapper2.eq("a.send_date",format);
//        wrapper2.orderByAsc("a.seq").orderByAsc("a.status");
        //List<OrderTask> list = iOrderTaskService.list2(wrapper2);
        wrapper2.eq("area_id", area.getId());
        wrapper2.eq("send_date", format);
        wrapper2.orderByAsc("seq").orderByAsc("status");
        List<OrderTask> list = iOrderTaskService.list(wrapper2);
        for (OrderTask obj : list) {
            obj.setCode(obj.getLinker());
        }
        return new ResultUtil<List<OrderTask>>().setData(list);
    }
    @RequestMapping(value = "/getTodayOrderDetail", method = RequestMethod.GET)
    @ApiOperation(value = "获取当前配送商户详情")
    public Result<OrderTask> getTodayOrderDetail(String orderId,String sendTime) {
    public Result<OrderTask> getTodayOrderDetail(String orderId, String sendTime) {
        OrderTask orderTask = new OrderTask();
        if(!StrUtil.isEmpty(orderId)){
        if (!StrUtil.isEmpty(orderId)) {
            orderTask = iOrderTaskService.getById(orderId);
            if(orderTask.getStatus()!=0){
            if (orderTask.getStatus() != 0) {
                return ResultUtil.error("此商户已配送");
            }
        }else{
        } else {
            Area area = getArea(securityUtil.getCurrUser().getId());
            if(area==null){
            if (area == null) {
                return ResultUtil.error("请联系管理员绑定该车辆");
            }
            QueryWrapper<OrderTask> wrapper2 = new QueryWrapper<OrderTask>();
            String format = getFormatDate(sendTime);
            wrapper2.eq("area_id",area.getId());
            wrapper2.eq("send_date",format);
            wrapper2.eq("status",0);
            wrapper2.orderByAsc("seq");
            List<OrderTask> list = iOrderTaskService.list(wrapper2);
            if(list.size()>0){
            wrapper2.eq("area_id", area.getId());
            wrapper2.eq("send_date", format);
            wrapper2.eq("status", 0);
            //wrapper2.orderByAsc("seq");
            PageVo page = new PageVo();
            page.setSort("seq");
            page.setOrder("asc");
            page.setPageSize(1);
            page.setPageNumber(0);
            List<OrderTask> list = iOrderTaskService.page(PageUtil.initMpPage(page), wrapper2).getRecords();
            //List<OrderTask> list = iOrderTaskService.list(wrapper2);
            if (list.size() > 0) {
                orderTask = list.get(0);
            }else{
            } else {
                return new ResultUtil<OrderTask>().setData(null);
            }
        }
        orderTask.setCustomer(iCustomerService.getById(orderTask.getCustomerId()));
        QueryWrapper<OrderDetail> wrapper3 = new QueryWrapper<OrderDetail>();
        wrapper3.eq("order_id",orderTask.getId());
        wrapper3.eq("order_id", orderTask.getId());
        orderTask.setOrderDetails(iOrderDetailService.list(wrapper3));
        return new ResultUtil<OrderTask>().setData(orderTask);
@@ -211,31 +277,31 @@
    public Result<Object> getTodayOtherInfo(String sendTime) {
        Area area = getArea(securityUtil.getCurrUser().getId());
        if(area==null){
        if (area == null) {
            return ResultUtil.error("请联系管理员绑定该车辆");
        }
        QueryWrapper<OrderTask> wrapper2 = new QueryWrapper<OrderTask>();
        String format = getFormatDate(sendTime);
        wrapper2.eq("area_id",area.getId());
        wrapper2.eq("send_date",format);
        wrapper2.ne("status",0);
        wrapper2.eq("area_id", area.getId());
        wrapper2.eq("send_date", format);
        wrapper2.ne("status", 0);
        wrapper2.orderByAsc("seq");
        int count = iOrderTaskService.count(wrapper2);
        QueryWrapper<OrderTask> wrapper4 = new QueryWrapper<OrderTask>();
        wrapper4.eq("area_id",area.getId());
        wrapper4.eq("send_date",format);
        wrapper4.eq("area_id", area.getId());
        wrapper4.eq("send_date", format);
        int count2 = iOrderTaskService.count(wrapper4);
        Map<String,Object> map = new HashMap<>();
        map.put("num",count+"/"+count2);
        Map<String, Object> map = new HashMap<>();
        map.put("num", count + "/" + count2);
        QueryWrapper<OrderTask> wrapper5 = new QueryWrapper<OrderTask>();
        wrapper5.ne("status",0);
        wrapper5.eq("send_date",format);
        wrapper5.ne("status", 0);
        wrapper5.eq("send_date", format);
        PageVo page = new PageVo();
        page.setSort("updateTime");
@@ -244,35 +310,35 @@
        page.setPageNumber(0);
        IPage<OrderTask> data = iOrderTaskService.page(PageUtil.initMpPage(page), wrapper5);
        String content = "";
        if(data.getRecords().size()>0){
        if (data.getRecords().size() > 0) {
            String userId = data.getRecords().get(0).getUserId();
            User user = userService.get(userId);
            QueryWrapper<OrderTask> wrapper6 = new QueryWrapper<OrderTask>();
            wrapper6.eq("user_id",userId);
            wrapper6.eq("send_date",format);
            wrapper6.ne("status",0);
            wrapper6.eq("user_id", userId);
            wrapper6.eq("send_date", format);
            wrapper6.ne("status", 0);
            int count6 = iOrderTaskService.count(wrapper6);
            if(count6>0){
                content+=user.getNickname()+"已配送"+count6+"单";
            if (count6 > 0) {
                content += user.getNickname() + "已配送" + count6 + "单";
            }
        }
        map.put("content",content);
        map.put("content", content);
        map.put("lng","");
        map.put("lat","");
        map.put("lng", "");
        map.put("lat", "");
        String deptId = securityUtil.getCurrUser().getDepartmentId();
        if(StrUtil.isNotEmpty(deptId)){
        if (StrUtil.isNotEmpty(deptId)) {
            Department department = departmentService.get(deptId);
            map.put("lng",department.getLng());
            map.put("lat",department.getLat());
            map.put("lng", department.getLng());
            map.put("lat", department.getLat());
        }
        return new ResultUtil<Object>().setData(map);
    }
    @RequestMapping(value = "/addImg", method = RequestMethod.POST)
    @ApiOperation(value = "上传门头照")
    public Object saveOrUpdate(String orderId,String imgUrl) {
    public Object saveOrUpdate(String orderId, String imgUrl) {
        OrderTask orderTask = iOrderTaskService.getById(orderId);
        orderTask.setImg(imgUrl);
        iOrderTaskService.saveOrUpdate(orderTask);
@@ -281,14 +347,14 @@
    @RequestMapping(value = "/signFor", method = RequestMethod.POST)
    @ApiOperation(value = "签收")
    public Object signFor(String orderId,int status,String content,String customerReceiveId,int time,String carId) {
        if(status==1){
            if(StrUtil.isEmpty(customerReceiveId)){
    public Object signFor(String orderId, int status, String content, String customerReceiveId, int time, String carId) {
        if (status == 1) {
            if (StrUtil.isEmpty(customerReceiveId)) {
                return ResultUtil.error("正常签收,接货人id必填");
            }
        }
        if(StrUtil.isEmpty(carId)){
        if (StrUtil.isEmpty(carId)) {
            return ResultUtil.error("车辆id不能为空");
        }
        OrderTask orderTask = iOrderTaskService.getById(orderId);
@@ -296,14 +362,14 @@
        orderTask.setUserId(securityUtil.getCurrUser().getId());
        orderTask.setTime(time);
        orderTask.setCarId(carId);
        if(StrUtil.isNotEmpty(customerReceiveId)){
        if (StrUtil.isNotEmpty(customerReceiveId)) {
            orderTask.setCustomerReceiveId(customerReceiveId);
        }
        if(!StrUtil.isEmpty(content)){
        if (!StrUtil.isEmpty(content)) {
            orderTask.setRemarks(content);
        }else{
            if(status==2){
        } else {
            if (status == 2) {
                return ResultUtil.error("请填写异常签收原因");
            }
        }
@@ -315,20 +381,36 @@
        eventLog.setRefId(orderId);
        eventLog.setType(6);//6:配送完成
        iEventLogService.saveOrUpdate(eventLog);
        saveLog();
        return ResultUtil.success("添加成功");
    }
    private void saveLog() {
        QueryWrapper<OrderLog> wp = new QueryWrapper<>();
        wp.eq("type", 2);
        OrderLog one = iOrderLogService.getOne(wp);
        if (one != null) {
            one.setNum(one.getNum() + 1);
        } else {
            one = new OrderLog();
            one.setNum(1);
            one.setType(2);
        }
        iOrderLogService.saveOrUpdate(one);
    }
    @RequestMapping(value = "/getTaKan", method = RequestMethod.GET)
    @ApiOperation(value = "获取踏勘商户")
    public Result<List<Customer>> getTaKan() {
        Area area = getArea(securityUtil.getCurrUser().getId());
        if(area==null){
        if (area == null) {
            return ResultUtil.error("请联系管理员绑定该车辆");
        }
        QueryWrapper<Customer> wrapper2 = new QueryWrapper<Customer>();
        wrapper2.eq("area_id",area.getId());
        wrapper2.eq("kstatus",0);
        wrapper2.eq("area_id", area.getId());
        wrapper2.eq("kstatus", 0);
        List<Customer> list = iCustomerService.list(wrapper2);
        return new ResultUtil<List<Customer>>().setData(list);
    }
@@ -360,4 +442,181 @@
        }
        return ResultUtil.success("批量通过id删除数据成功");
    }
    @RequestMapping(value = "/insertOrders", method = RequestMethod.GET)
    @ApiOperation(value = "解析订单")
    public Result<Object> insertOrders(String sendTime) {
        String formatDate = getFormatDate(sendTime);
        QueryWrapper<OrderTask> wrapper2 = new QueryWrapper<OrderTask>();
        wrapper2.eq("order_date", formatDate);
        List<OrderTask> list = iOrderTaskService.list(wrapper2);
        if(list.size() > 0){
            return ResultUtil.error("已存在今日数据");
        }else {
            QueryWrapper<OrderTaskOriginal> queryWrapper = new QueryWrapper<>();
            queryWrapper.between("order_date",dateStringFormat(getDate(sendTime)),dateStringFormat2(getDate(sendTime)));
            List<OrderTaskOriginal> originals = iOrderTaskOriginalService.list(queryWrapper);
            int sumNum = 0;
            for(OrderTaskOriginal original:originals){
                try {
                    OrderTask orderTask = new OrderTask();
                    orderTask.setCode(original.getCode());
                    Area area = getArea2(original.getAreaName());
                    orderTask.setAreaId(area.getId());
                    orderTask.setCarId(area.getCarId());
                    orderTask.setAreaSectionId(getAreaSection(orderTask.getAreaId(),original.getAreaSection()));
                    Customer customer = getCustomer(original.getCustomerCode(), original.getCustomerName(), original.getCustomerPhone(), original.getLinker(), orderTask.getAreaId(), orderTask.getAreaSectionId());
                    orderTask.setCustomerId(customer.getId());
                    orderTask.setCustomerName(customer.getName());
                    orderTask.setLinker(customer.getLinker());
                    orderTask.setEndDate(original.getPacketDate());
                    //orderTask.setSendDate(original.getSendDate());
                    orderTask.setSendDate(DateUtil.offsetDay(original.getOrderDate(),1));
                    orderTask.setOrderDate(original.getOrderDate());
                    if(original.getSeq()!=null){
                        orderTask.setSeq(original.getSeq());
                    }else{
                        orderTask.setSeq(999);
                    }
                    orderTask.setNum(original.getNum());
                    sumNum+=original.getNum();
                    iOrderTaskService.saveOrUpdate(orderTask);
                    updateCustomerRecive(orderTask.getCustomerId(),original.getLinker(),original.getCustomerPhone());
                    QueryWrapper<OrderDetailOriginal> wrapper = new QueryWrapper<>();
                    wrapper.eq("order_id",original.getId());
                    List<OrderDetailOriginal> list1 = iOrderDetailOriginalService.list(wrapper);
                    List<OrderDetail> detailList = new ArrayList<>();
                    for(OrderDetailOriginal o:list1){
                        OrderDetail orderDetail = new OrderDetail();
                        orderDetail.setNum(o.getNum());
                        orderDetail.setOrderId(orderTask.getId());
                        orderDetail.setProduct(o.getProductName());
                        detailList.add(orderDetail);
                    }
                    iOrderDetailService.saveBatch(detailList);
                }catch (Exception e){
                    System.out.println("报错了");
                }
            }
            OrderLog orderLog = new OrderLog();
            orderLog.setNum(sumNum);
            orderLog.setType(0);
            iOrderLogService.save(orderLog);
            System.out.println("处理订单结束");
            return ResultUtil.success("导入成功");
        }
    }
    public void updateCustomerRecive(String customerId,String linker,String phone){
        QueryWrapper<CustomerReceive> wrapper = new QueryWrapper<>();
        wrapper.eq("customer_id",customerId);
        wrapper.eq("name",linker);
        List<CustomerReceive> list = iCustomerReceiveService.list(wrapper);
        if(list.size()==0){
            CustomerReceive one = new CustomerReceive();
            one.setCustomerId(customerId);
            one.setFstatus(0);
            one.setStatus(1);
            one.setName(linker);
            one.setPhone(phone);
            iCustomerReceiveService.saveOrUpdate(one);
        }
    }
    public Customer getCustomer(String customerCode,String customerName,String customerPhone,String linker,String areaId,String areaSectionId){
        QueryWrapper<Customer> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("licence",customerCode);
        Customer one = iCustomerService.getOne(queryWrapper);
        if(one==null){
            Customer customer = new Customer();
            customer.setLicence(customerCode);
            customer.setName(customerName);
            customer.setPhone(customerPhone);
            customer.setLinker(linker);
            customer.setAreaId(areaId);
            customer.setAreaSectionId(areaSectionId);
            customer.setKstatus(1);
            iCustomerService.saveOrUpdate(customer);
            return customer;
        }
        one.setAreaId(areaId);
        one.setAreaSectionId(areaSectionId);
        iCustomerService.saveOrUpdate(one);
        return one;
    }
    public Area getArea2(String name){
        QueryWrapper<Area> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name",name);
        Area one = iAreaService.getOne(queryWrapper);
        if(one==null){
            Area area = new Area();
            area.setName(name);
            iAreaService.saveOrUpdate(area);
            return area;
        }
        return one;
    }
    public String getAreaSection(String areaId,String name){
        QueryWrapper<AreaSection> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name",name);
        queryWrapper.eq("area_id",areaId);
        AreaSection one = iAreaSectionService.getOne(queryWrapper);
        if(one==null){
            AreaSection area = new AreaSection();
            area.setName(name);
            area.setAreaId(areaId);
            iAreaSectionService.saveOrUpdate(area);
            return area.getId();
        }
        return one.getId();
    }
    public String dateStringFormat(Date strDate) {
        if (strDate == null)
            return "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(strDate)+" 00:00:00";
    }
    public String dateStringFormat2(Date strDate) {
        if (strDate == null)
            return "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(strDate)+" 23:59:59";
    }
    @GetMapping("/outExcel")//  导出的不是中间表
    @ApiOperation(value = "导出签收统计信息表", notes = "导出签收统计信息表")
    public void export1(OrderStatusCount orderStatusCount, HttpServletResponse response) throws IOException {
        List<OrderStatusCount> orderStatus = this.iOrderTaskService.countStatus(orderStatusCount);
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("签收数量统计报表", "UTF-8");
        String fileName2 = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
//        response.setHeader("Content-dispostion", "attachment;filename="+fileName+".xls");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName2 + ".xlsx");
        EasyExcel.write(response.getOutputStream(), OrderStatusCount.class).
                sheet(0).doWrite(orderStatus);
    }
    @GetMapping(value = "/count")
    public Result<List<OrderStatusCount>> getAll(OrderStatusCount orderStatusCount) {
        List<OrderStatusCount> data = this.iOrderTaskService.countStatus(orderStatusCount);
        ;
        return new ResultUtil<List<OrderStatusCount>>().setData(data);
    }
}