xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/OrderTask2Controller.java
@@ -4,19 +4,27 @@ import cn.exrick.xboot.core.common.utils.ResultUtil; import cn.exrick.xboot.core.common.vo.PageVo; import cn.exrick.xboot.core.common.vo.Result; import cn.exrick.xboot.your.entity.OrderStatusCount; import cn.exrick.xboot.your.entity.OrderTask2; import cn.exrick.xboot.your.entity.OrderTask2Imgs; import cn.exrick.xboot.your.entity.QueryRequest; import cn.exrick.xboot.your.service.IOrderTask2Service; import cn.exrick.xboot.your.vo.ImgSearchVo; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.transaction.annotation.Transactional; import javax.annotation.security.PermitAll; import java.util.List; import static cn.hutool.poi.excel.sax.ElementName.v; /** * @author whj @@ -26,6 +34,7 @@ @Api(tags = "订单任务历史表管理接口") @RequestMapping("/xboot/orderTask2") @Transactional @PermitAll public class OrderTask2Controller { @Autowired @@ -67,6 +76,14 @@ return new ResultUtil<IPage<OrderTask2>>().setData(data); } @RequestMapping(value = "/getByPageImgs", method = RequestMethod.GET) @ApiOperation(value = "分页获取") @PermitAll public Result<IPage<OrderTask2Imgs>> getByPageImgs(QueryRequest queryRequest, ImgSearchVo imgSearchVo) { IPage<OrderTask2Imgs> data = iOrderTask2Service.getTask2Imgs(imgSearchVo,queryRequest); return new ResultUtil<IPage<OrderTask2Imgs>>().setData(data); } @RequestMapping(value = "/insertOrUpdate", method = RequestMethod.POST) @ApiOperation(value = "编辑或更新数据") public Result<OrderTask2> saveOrUpdate(OrderTask2 orderTask2) { xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/OrderTaskController.java
@@ -31,6 +31,7 @@ import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; /** @@ -178,6 +179,7 @@ } } @RequestMapping(value = "/getByUserId", method = RequestMethod.GET) @ApiOperation(value = "获取今日任务统计信息") public Result<Object> getAll(String sendTime) { @@ -252,7 +254,7 @@ return new ResultUtil<Object>().setData(map); } @RequestMapping(value = "/getTodayOrder", method = RequestMethod.GET) /* @RequestMapping(value = "/getTodayOrder", method = RequestMethod.GET) @ApiOperation(value = "获取今日配送任务详情列表") public Result<List<OrderTask>> getTodayOrder(String sendTime) { Area area = getArea(securityUtil.getCurrUser().getId()); @@ -273,6 +275,31 @@ for (OrderTask obj : list) { obj.setCode(obj.getLinker()); } return new ResultUtil<List<OrderTask>>().setData(list); }*/ @RequestMapping(value = "/getTodayOrder", method = RequestMethod.GET) @ApiOperation(value = "获取今日配送任务详情列表") public Result<List<OrderTask>> getTodayOrder(String sendTime) { //获取订单列表 Area area = getArea(securityUtil.getCurrUser().getId()); 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("area_id", area.getId()); wrapper2.eq("send_date", format); wrapper2.orderByAsc("area_section_id").orderByAsc("seq").orderByAsc("status"); List<OrderTask> list = iOrderTaskService.list(wrapper2); return new ResultUtil<List<OrderTask>>().setData(list); } @@ -856,4 +883,87 @@ ; return new ResultUtil<List<OrderStatusCount>>().setData(data); } @Autowired private ISignCountService iSignCountService; @RequestMapping(value = "/getStatusCounts", method = RequestMethod.GET) @ApiOperation(value = "获取今日任务统计信息") public Result<Object> getStatusCounts() { System.err.println("执行存储数据定时任务时间: " + LocalDateTime.now()); OrderStatusCount orderStatusCount = new OrderStatusCount(); List<OrderStatusCount> StatusCounts = new ArrayList<>(); List<OrderStatusCount> temps = iOrderTaskService.countStatus(orderStatusCount); for (OrderStatusCount statusCount : temps) { if("丰南02车".equals(statusCount.getLine())){ StatusCounts.add(statusCount); } } if (StatusCounts != null && StatusCounts.size() != 0) { List<SignCount> list = iSignCountService.list(); for (OrderStatusCount statusCount : StatusCounts) { SignCount signCount = new SignCount(); boolean flag = false; for (SignCount signCountS : list) { if (signCountS.getTaskId().equals(statusCount.getId())) { signCount.setId(signCountS.getId()); signCount.setCarName(statusCount.getCarName()); signCount.setAmount(statusCount.getAmount()); signCount.setSignCount(statusCount.getSignCount()); signCount.setAbnormalSign(statusCount.getAbnormalSign()); signCount.setBatch(statusCount.getBatch()); signCount.setLine(statusCount.getLine()); signCount.setNotSignCount(statusCount.getNotSignCount()); String SendDate=getBeforeOneDayByStringDate(statusCount.getSendDate()); signCount.setSendDate(SendDate); signCount.setProportion(statusCount.getProportion()); signCount.setUserName(statusCount.getUserName()); signCount.setTaskId(statusCount.getId()); iSignCountService.saveOrUpdate(signCount); System.out.println("更新成功"); flag = true; break; } } if (flag) { continue; } signCount.setCarName(statusCount.getCarName()); signCount.setAmount(statusCount.getAmount()); signCount.setSignCount(statusCount.getSignCount()); signCount.setAbnormalSign(statusCount.getAbnormalSign()); signCount.setBatch(statusCount.getBatch()); signCount.setLine(statusCount.getLine()); signCount.setNotSignCount(statusCount.getNotSignCount()); String SendDate=getBeforeOneDayByStringDate(statusCount.getSendDate()); signCount.setSendDate(SendDate); signCount.setProportion(statusCount.getProportion()); signCount.setUserName(statusCount.getUserName()); signCount.setTaskId(statusCount.getId()); if (iSignCountService.saveOrUpdate(signCount)) { System.out.println("定时存储成功"); } } } return null; } private String getBeforeOneDayByStringDate(String dateString) { String times = ""; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date d; try { d = format.parse(dateString); Calendar calendar = Calendar.getInstance(); calendar.setTime(d); calendar.add(Calendar.DAY_OF_MONTH, -1); // 在当前日基础上-1 String format1 = format.format(calendar.getTime()); times = format1; //获取String类型的时间 } catch (ParseException e) { e.printStackTrace(); } return times; } } xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/SignCountController.java
@@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.transaction.annotation.Transactional; import javax.annotation.security.PermitAll; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; @@ -33,6 +34,7 @@ @Api(tags = "状态统计报表接口") @RequestMapping("/xboot/signCount") @Transactional @PermitAll public class SignCountController { @Autowired @@ -84,9 +86,15 @@ @GetMapping("/outExcels") @ApiOperation(value = "导出签收统计信息表", notes = "导出签收统计信息表") @PermitAll public void export1(OrderStatusCount orderStatusCount, HttpServletResponse response) throws IOException { if(orderStatusCount.getSendDateStart()!=null){ orderStatusCount.setSendDateStart(orderStatusCount.getSendDateStart() + " 00:00:00"); } if(orderStatusCount.getSendDateEnd()!=null){ orderStatusCount.setSendDateEnd(orderStatusCount.getSendDateEnd() + " 23:59:59"); } List<OrderStatusCount> orderStatus = this.iSignCountService.signCounts2New(orderStatusCount); System.out.println(orderStatus); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("签收数量统计报表", "UTF-8"); @@ -100,12 +108,25 @@ @GetMapping(value = "/selectBySign") public Result<IPage<OrderStatusCount>> signCounts(OrderStatusCount orderStatusCount,QueryRequest queryRequest) { if(orderStatusCount.getSendDateStart()!=null){ orderStatusCount.setSendDateStart(orderStatusCount.getSendDateStart() + " 00:00:00"); } if(orderStatusCount.getSendDateEnd()!=null){ orderStatusCount.setSendDateEnd(orderStatusCount.getSendDateEnd() + " 23:59:59"); } IPage<OrderStatusCount> data = this.iSignCountService.signCounts(orderStatusCount,queryRequest); return new ResultUtil<IPage<OrderStatusCount>>().setData(data); } @GetMapping(value = "/selectBySignNew") @PermitAll public Result<IPage<OrderStatusCount>> signCountsNew(OrderStatusCount orderStatusCount,QueryRequest queryRequest) { if(orderStatusCount.getSendDateStart()!=null){ orderStatusCount.setSendDateStart(orderStatusCount.getSendDateStart() + " 00:00:00"); } if(orderStatusCount.getSendDateEnd()!=null){ orderStatusCount.setSendDateEnd(orderStatusCount.getSendDateEnd() + " 23:59:59"); } IPage<OrderStatusCount> data = this.iSignCountService.signCountsNew(orderStatusCount,queryRequest); return new ResultUtil<IPage<OrderStatusCount>>().setData(data); } xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/entity/OrderTask2Imgs.java
New file @@ -0,0 +1,70 @@ package cn.exrick.xboot.your.entity; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @Data @ApiModel(value = "订单任务历史表") public class OrderTask2Imgs { @ApiModelProperty(value = "订单Code") private String code; @ApiModelProperty(value = "区域id") private Long areaId; @ApiModelProperty(value = "区域名称") private String areaName; @ApiModelProperty(value = "分段ID") private Long areaSectionId; @ApiModelProperty(value = "分段名称") private String areaSectionName; @ApiModelProperty(value = "车牌号ID") private Long carId; @ApiModelProperty(value = "车牌号") private String carNo; @ApiModelProperty(value = "客户名称ID") private Long customerId; @ApiModelProperty(value = "客户名称") private String customerName; @ApiModelProperty(value = "收货人ID") private Long customerReceiveId; @ApiModelProperty(value = "收货人姓名") private String customerReceiveName; @ApiModelProperty(value = "收货时间") private String receiveTime; @ApiModelProperty(value = "送货人id") private Long userId; @ApiModelProperty(value = "送货人") private String userName; @ApiModelProperty(value = "接收人原图") private String receiveImg; @ApiModelProperty(value = "货物图,接收人图") private String imgs; @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "发货日期") private String sendDate; @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "订单日期") private String orderDate; } xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/mapper/OrderTask2Mapper.java
@@ -1,7 +1,13 @@ package cn.exrick.xboot.your.mapper; import cn.exrick.xboot.your.entity.OrderStatusCount; import cn.exrick.xboot.your.entity.OrderTask2Imgs; import cn.exrick.xboot.your.vo.ImgSearchVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import cn.exrick.xboot.your.entity.OrderTask2; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -11,4 +17,5 @@ */ public interface OrderTask2Mapper extends BaseMapper<OrderTask2> { IPage<OrderTask2Imgs> getTask2Images(@Param("bo")ImgSearchVo imgSearchVo, Page<OrderTask2Imgs> page); } xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/schedulings/HistoryOrder.java
@@ -32,6 +32,11 @@ @Autowired private ICustomerService iCustomerService; /** * 每天21点31分执行 * 将配送日期为今天的订单数据(t_order_task)存入历史订单数据表(t_order_task2) */ @Scheduled(cron="0 31 21 * * ?")//每晚下午9点半点执行 public void execute(){ String day = getDay(0); xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/schedulings/OrderDealScheduleImpl.java
@@ -1,4 +1,5 @@ package cn.exrick.xboot.your.schedulings; import cn.exrick.xboot.your.entity.*; import cn.exrick.xboot.your.service.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -30,6 +31,12 @@ @Autowired private IDuoZhengService iDuoZhengService; /** * 每天21点执行 * 1.将配送日期小于10天前的订单删除(t_order_task),同时删除相应订单详情数据(t_order_detail) * 2.将配送日期小于20天前的订单从原始订单数据表删除(t_order_original),同时删除相应原始订单详情数据(t_order_original_detail) */ @Scheduled(cron="0 0 21 * * ?")//每晚下午9点执行 //@Scheduled(cron="0 33 17 * * ?")//测试 public void execute(){ xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/schedulings/OrderSynScheduleImpl.java
@@ -44,6 +44,11 @@ @Autowired private IOrderLogService iOrderLogService; /** * 每天15:59分处理 * 在原始订单数据(t_order_task_original)获取订单日期为今天的原始订单,转换成订单数据存入订单任务数据表(t_order_task) */ @Scheduled(cron="0 59 15 * * ?")//每晚凌晨1点执行 //@Scheduled(cron="0 11 15 * * ?")//每晚凌晨1点执行 public void execute(){ xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/service/IOrderTask2Service.java
@@ -1,5 +1,9 @@ package cn.exrick.xboot.your.service; import cn.exrick.xboot.your.entity.OrderTask2Imgs; import cn.exrick.xboot.your.entity.QueryRequest; import cn.exrick.xboot.your.vo.ImgSearchVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import cn.exrick.xboot.your.entity.OrderTask2; @@ -10,5 +14,8 @@ * @author whj */ public interface IOrderTask2Service extends IService<OrderTask2> { /** * 获取图片结构 */ IPage<OrderTask2Imgs> getTask2Imgs(ImgSearchVo imgSearchVo, QueryRequest queryRequest); } xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/IOrderTask2ServiceImpl.java
@@ -1,16 +1,27 @@ package cn.exrick.xboot.your.serviceimpl; import cn.exrick.xboot.your.entity.OrderStatusCount; import cn.exrick.xboot.your.entity.OrderTask2Imgs; import cn.exrick.xboot.your.entity.QueryRequest; import cn.exrick.xboot.your.mapper.OrderTask2Mapper; import cn.exrick.xboot.your.entity.OrderTask2; import cn.exrick.xboot.your.service.IOrderTask2Service; import cn.exrick.xboot.your.vo.ImgSearchVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 订单任务历史表接口实现 @@ -23,4 +34,21 @@ @Autowired private OrderTask2Mapper orderTask2Mapper; @Override public IPage<OrderTask2Imgs> getTask2Imgs(ImgSearchVo imgSearchVo, QueryRequest queryRequest) { Page<OrderTask2Imgs> page = new Page<>(); if (org.apache.commons.lang3.StringUtils.isNotBlank(queryRequest.getPageSize() + "") && (queryRequest.getPageSize() != 0)) { page.setCurrent(queryRequest.getPageNum()); page.setSize(queryRequest.getPageSize()); } else { page.setCurrent(0); page.setSize(-1); } imgSearchVo.setSendDateStart(imgSearchVo.getSendDateStart()+ " 00:00:00"); imgSearchVo.setSendDateEnd(imgSearchVo.getSendDateEnd()+ " 23:59:59"); IPage<OrderTask2Imgs> orderTask2ImgsIPage = this.orderTask2Mapper.getTask2Images(imgSearchVo, page); return orderTask2ImgsIPage; } } xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java
@@ -105,7 +105,9 @@ List<OrderStatusCount> records = this.signCountMapper.signCount2New(orderStatusCount); List<OrderStatusCount> recordsAll = this.signCountMapper.signCountNewTotal(orderStatusCount); for (int i=0;i<records.size();i++) { //if(records.get(i).getCarName()==null) continue; for (OrderStatusCount statusCountx: recordsAll) { //if(statusCountx.getCarName()==null) continue; if(records.get(i).getCarName().equals(statusCountx.getCarName())){ if(statusCountx.getProportion().length()>6){ String ss = statusCountx.getProportion().replace("%",""); xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/vo/ImgSearchVo.java
New file @@ -0,0 +1,17 @@ package cn.exrick.xboot.your.vo; import lombok.Data; @Data public class ImgSearchVo { String sendDateStart; String sendDateEnd; String userName; String carNo; String customerName; } xboot-modules/xboot-your/src/main/resources/mapper/OrderTask2Mapper.xml
@@ -2,4 +2,50 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.exrick.xboot.your.mapper.OrderTask2Mapper"> <select id="getTask2Images" resultType="cn.exrick.xboot.your.entity.OrderTask2Imgs"> SELECT a.code as code, a.area_id as areaId, b.name as areaName, a.area_section_id as areaSectionId, c.name as areaSectionName, a.car_id as carId, d.car_no as carNo, a.customer_id as customerId, a.customer_name as customerName, a.customer_receive_id as customerReceiveId, a.update_time as receiveTime, e.name as customerReceiveName, a.user_id as userId, a.user_name as userName, e.img as receiveImg, a.img as imgs, a.send_date as sendDate, a.order_date as orderDate FROM t_order_task2 a,t_area b,t_area_ection c,t_car d,t_customer_receive e WHERE a.status = 1 <if test="bo.sendDateStart != null and bo.sendDateStart != ''"> AND send_date >= #{bo.sendDateStart} </if> <if test="bo.sendDateEnd != null and bo.sendDateEnd != ''"> AND send_date <= #{bo.sendDateEnd} </if> <if test="bo.userName != null and bo.userName != ''" > AND a.user_name = #{bo.userName} </if> <if test="bo.carNo != null and bo.carNo != ''" > AND d.car_no = #{bo.carNo} </if> <if test="bo.customerName != null and bo.customerName != ''" > AND a.customer_name like CONCAT ('%',#{bo.customerName},'%') </if> and a.img is not null and a.area_id = b.id and a.area_section_id = c.id and a.car_id = d.id and a.customer_receive_id = e.id order by a.order_date desc </select> </mapper> xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml
@@ -119,7 +119,7 @@ AND send_date >= #{bo.sendDateStart} </if> <if test="bo.sendDateEnd != null and bo.sendDateEnd != ''"> AND send_date <= #{bo.sendDateEnd} AND send_date <= #{bo.sendDateEnd} + ' 23:59:59' </if> </where> GROUP BY @@ -204,7 +204,8 @@ FROM t_sign <where> 1=1 1=1 AND car_name is not NULL <if test="bo.line != null and bo.line != ''" > AND line like CONCAT ('%', #{bo.line},'%') </if> @@ -248,7 +249,8 @@ FROM t_sign <where> 1=1 1=1 AND car_name is not NULL <if test="bo.line != null and bo.line != ''" > AND line like CONCAT ('%', #{bo.line},'%') </if> @@ -283,7 +285,8 @@ FROM t_sign <where> 1=1 1=1 AND car_name is not NULL <if test="bo.line != null and bo.line != ''" > AND line like CONCAT ('%', #{bo.line},'%') </if>