This commit is contained in:
Vinjor 2024-11-18 17:51:23 +08:00
parent 1dd088a320
commit 7dc148e5b2
6 changed files with 118 additions and 17 deletions

View File

@ -35,6 +35,10 @@ public enum RecordTypeEnum {
* 总检
*/
ZJ("zj","总检"),
/**
* 结算
*/
JS("js","结算"),
/**
* 结束工单
*/

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.tickets.controller.admin;
import cn.hutool.core.date.DateUtil;
import cn.iocoder.yudao.common.RepairCons;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.tickets.entity.DlRepairTickets;
@ -16,6 +17,9 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -311,15 +315,45 @@ public class DlRepairTicketsController {
return CommonResult.ok();
}
/**
* 从总检的角度差维修中已完成的工单数量
* 从总检的角度查进场数维修中已完成已交车在厂的工单数量
* @author vinjor-M
* @date 11:29 2024/10/24
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<?>
**/
@GetMapping("/getBossNum")
@Operation(summary = "从总检的角度查维修中、已完成的工单数量")
public CommonResult<?> getBossNum(String selectType) {
return success(dlRepairTicketsService.getBossNum(selectType));
@Operation(summary = "从总检的角度查进场数、维修中、已完成、已交车、在厂的工单数量")
public CommonResult<?> getBossNum(String selectType,String startDate,String endDate) {
return success(dlRepairTicketsService.getBossNum(selectType, startDate, endDate));
}
/**
* 获取日期范围
* @author vinjor-M
* @date 11:29 2024/10/24
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<?>
**/
@GetMapping("/getDateRange")
@Operation(summary = "获取日期范围")
public CommonResult<?> getDateRange(String selectType) {
Map<String,String> rtnMap = new HashMap<>();
// 获取当前日期
Date currentDate = new Date();
String nowDay = DateUtil.formatDate(new Date());
rtnMap.put("endDate",nowDay);
if("threeMonth".equals(selectType)){
//近3个月
// 使用Hutool的DateUtil推移3个月
Date threeMonthsAgo = DateUtil.offsetMonth(currentDate, -3);
String startDay = DateUtil.formatDate(threeMonthsAgo);
rtnMap.put("startDate",startDay);
}else {
//近6个月
// 使用Hutool的DateUtil推移6个月
Date threeMonthsAgo = DateUtil.offsetMonth(currentDate, -6);
String startDay = DateUtil.formatDate(threeMonthsAgo);
rtnMap.put("startDate",startDay);
}
return success(rtnMap);
}
/**

View File

@ -42,6 +42,16 @@ public interface DlRepairTicketsMapper extends BaseMapper<DlRepairTickets> {
* @param repairTicketsReqVO 查询对象
**/
IPage<DlRepairTickets> getPageTypeAll(@Param("map") DlRepairTicketsReqVO repairTicketsReqVO, Page<DlRepairTickets> page);
/**
* 根据条件查询指定工单数量
* @author vinjor-M
* @date 15:46 2024/11/18
* @param dayDate 某一天日期
* @param recordCode 操作记录code
* @return java.lang.Long
**/
Long selectCountByParams(@Param("nowDate")String dayDate, @Param("recordCode")String recordCode, @Param("startTime")String startTime, @Param("endTime")String endTime);
}

View File

@ -172,7 +172,7 @@ public interface DlRepairTicketsService extends IService<DlRepairTickets> {
* @date 11:30 2024/10/24
* @return java.util.Map<java.lang.String,java.lang.Integer>
**/
Map<String,Integer> getBossNum(String selectType);
Map<String,Long> getBossNum(String selectType,String startDate,String endDate);
/**
* 服务顾问通知客户取车

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.tickets.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.common.*;
import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
@ -102,6 +103,8 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
@Resource
private DlRepairTitemService titemService;
@Resource
private DlRepairTicketsMapper repairTicketsMapper;
@Resource
private DeptApi deptApi;
@ -1405,23 +1408,54 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
* @date 11:30 2024/10/24
**/
@Override
public Map<String, Integer> getBossNum(String selectType) {
Map<String, Integer> rtnMap = new HashMap<>();
int workingNum = 0;
int doneNum = 0;
public Map<String, Long> getBossNum(String selectType,String startDate,String endDate) {
Map<String, Long> rtnMap = new HashMap<>();
//维修中---当前这一时刻
long workingNum = 0;
//在厂数--当前这一时刻
long inCompanyNum = 0;
//进场数
long newOrderNum=0;
//已完成
long overNum=0;
//已交车
long giveCusNum=0;
List<DlRepairTickets> repairTickets = this.list();
if (!repairTickets.isEmpty()) {
Map<String, List<DlRepairTickets>> ifFinishMap = repairTickets.stream().collect(Collectors.groupingBy(DlRepairTickets::getIsFinish));
if (ifFinishMap.containsKey("0")) {
workingNum = ifFinishMap.get("0").size();
}
if (ifFinishMap.containsKey("1")) {
doneNum = ifFinishMap.get("1").size();
workingNum = repairTickets.stream().filter(item -> TicketsStatusEnum.WORKING.getCode().equals(item.getTicketsStatus())).count();
inCompanyNum = repairTickets.stream().filter(item -> TicketsStatusEnum.NO_PAY.getCode().equals(item.getTicketsStatus())).count();
LocalDateTime currentTime = LocalDateTime.now();
if("today".equals(selectType)){
String nowDayStr = DateUtil.formatDate(new Date());
//查当日进厂数已完成已交车
newOrderNum = repairTickets.stream().filter(item -> item.getCreateTime().toLocalDate().equals(currentTime.toLocalDate())).count();
//查当日已完成的总检完成的
overNum = repairTicketsMapper.selectCountByParams(nowDayStr,RecordTypeEnum.ZJ.getCode(),null,null);
//查当日已交车的已结算的
giveCusNum = repairTicketsMapper.selectCountByParams(nowDayStr,RecordTypeEnum.JS.getCode(),null,null);
}else if("all".equals(selectType)){
//查累计进厂数已完成已交车
newOrderNum = repairTickets.size();
//查累计已完成的总检完成的
overNum = repairTicketsMapper.selectCountByParams(null,RecordTypeEnum.ZJ.getCode(),null,null);
//查累计已交车的已结算的
giveCusNum = repairTicketsMapper.selectCountByParams(null,RecordTypeEnum.JS.getCode(),null,null);
}else {
//查某个时间范围内进厂数已完成已交车
LocalDateTime startTime = LocalDateTime.parse(startDate+" 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime endTime = LocalDateTime.parse(endDate+" 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
newOrderNum = repairTickets.stream().filter(item -> item.getCreateTime().isAfter(startTime) && item.getCreateTime().isBefore(endTime)).count();
//查某区间范围内已完成的总检完成的
overNum = repairTicketsMapper.selectCountByParams(null,RecordTypeEnum.ZJ.getCode(), startDate+" 00:00:00", endDate+" 23:59:59");
//查某区间范围内已交车的已结算的
giveCusNum = repairTicketsMapper.selectCountByParams(null,RecordTypeEnum.JS.getCode(), startDate+" 00:00:00", endDate+" 23:59:59");
}
}
rtnMap.put("workingNum", workingNum);
rtnMap.put("doneNum", doneNum);
rtnMap.put("inCompanyNum", inCompanyNum);
rtnMap.put("newOrderNum", newOrderNum);
rtnMap.put("overNum", overNum);
rtnMap.put("giveCusNum", giveCusNum);
return rtnMap;
}

View File

@ -349,4 +349,23 @@
GROUP BY drt.id
order by drt.update_time desc
</select>
<select id="selectCountByParams" resultType="java.lang.Long">
SELECT
COUNT(DISTINCT drt.id)
FROM
dl_repair_tickets drt
LEFT JOIN dl_repair_records drr ON drt.id = drr.ticket_id
AND drr.deleted = '0'
WHERE
drt.deleted = '0'
AND drt.tickets_status !='03'
AND drr.type = #{recordCode}
<if test="nowDate!=null and nowDate!=''">
AND drr.create_time LIKE CONCAT(#{nowDate},'%')
</if>
<if test="startTime!=null">
AND drr.create_time &gt;= #{startTime}
AND drr.create_time &lt;= #{endTime}
</if>
</select>
</mapper>