From 7dc148e5b2de27a5cf28d121daa643ff4247b610 Mon Sep 17 00:00:00 2001 From: Vinjor Date: Mon, 18 Nov 2024 17:51:23 +0800 Subject: [PATCH 1/2] 1 --- .../iocoder/yudao/common/RecordTypeEnum.java | 4 ++ .../admin/DlRepairTicketsController.java | 42 ++++++++++++-- .../tickets/mapper/DlRepairTicketsMapper.java | 10 ++++ .../service/DlRepairTicketsService.java | 2 +- .../impl/DlRepairTicketsServiceImpl.java | 58 +++++++++++++++---- .../mapper/tickets/DlRepairTicketsMapper.xml | 19 ++++++ 6 files changed, 118 insertions(+), 17 deletions(-) diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RecordTypeEnum.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RecordTypeEnum.java index e232af30..9a5c946c 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RecordTypeEnum.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RecordTypeEnum.java @@ -35,6 +35,10 @@ public enum RecordTypeEnum { * 总检 */ ZJ("zj","总检"), + /** + * 结算 + */ + JS("js","结算"), /** * 结束工单 */ diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/controller/admin/DlRepairTicketsController.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/controller/admin/DlRepairTicketsController.java index 34781e67..6150b425 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/controller/admin/DlRepairTicketsController.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/controller/admin/DlRepairTicketsController.java @@ -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 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); } /** diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/mapper/DlRepairTicketsMapper.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/mapper/DlRepairTicketsMapper.java index 4a53a9f2..0ca90e77 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/mapper/DlRepairTicketsMapper.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/mapper/DlRepairTicketsMapper.java @@ -42,6 +42,16 @@ public interface DlRepairTicketsMapper extends BaseMapper { * @param repairTicketsReqVO 查询对象 **/ IPage getPageTypeAll(@Param("map") DlRepairTicketsReqVO repairTicketsReqVO, Page 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); } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java index cfe2fc56..9f922bbe 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java @@ -172,7 +172,7 @@ public interface DlRepairTicketsService extends IService { * @date 11:30 2024/10/24 * @return java.util.Map **/ - Map getBossNum(String selectType); + Map getBossNum(String selectType,String startDate,String endDate); /** * 服务顾问通知客户取车 diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java index d36d62e7..58d68c60 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java @@ -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 getBossNum(String selectType) { - Map rtnMap = new HashMap<>(); - int workingNum = 0; - int doneNum = 0; - + public Map getBossNum(String selectType,String startDate,String endDate) { + Map rtnMap = new HashMap<>(); + //维修中---当前这一时刻 + long workingNum = 0; + //在厂数--当前这一时刻 + long inCompanyNum = 0; + //进场数 + long newOrderNum=0; + //已完成 + long overNum=0; + //已交车 + long giveCusNum=0; List repairTickets = this.list(); if (!repairTickets.isEmpty()) { - Map> 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; } diff --git a/dl-module-repair/src/main/resources/mapper/tickets/DlRepairTicketsMapper.xml b/dl-module-repair/src/main/resources/mapper/tickets/DlRepairTicketsMapper.xml index 742779d9..db8e23ab 100644 --- a/dl-module-repair/src/main/resources/mapper/tickets/DlRepairTicketsMapper.xml +++ b/dl-module-repair/src/main/resources/mapper/tickets/DlRepairTicketsMapper.xml @@ -349,4 +349,23 @@ GROUP BY drt.id order by drt.update_time desc + From 17cd3db1ea3b778876c3ee1873534b5877507ad1 Mon Sep 17 00:00:00 2001 From: Vinjor Date: Mon, 18 Nov 2024 18:04:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tickets/entity/BaseRepairRecords.java | 53 ++++++++++++++++++ .../mapper/BaseRepairRecordsMapper.java | 14 +++++ .../service/BaseRepairRecordsService.java | 26 +++++++++ .../impl/BaseRepairRecordsServiceImpl.java | 55 +++++++++++++++++++ .../service/impl/TicketsServiceImpl.java | 8 +++ .../impl/DlRepairTicketsServiceImpl.java | 2 + 6 files changed, 158 insertions(+) create mode 100644 dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/entity/BaseRepairRecords.java create mode 100644 dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/mapper/BaseRepairRecordsMapper.java create mode 100644 dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/BaseRepairRecordsService.java create mode 100644 dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/BaseRepairRecordsServiceImpl.java diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/entity/BaseRepairRecords.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/entity/BaseRepairRecords.java new file mode 100644 index 00000000..01118bdc --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/entity/BaseRepairRecords.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.tickets.entity; + +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * 维修记录 DO + * + * @author lzt + */ +@TableName("dl_repair_records") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BaseRepairRecords extends TenantBaseDO { + + /** + * 主键标识 + */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + /** + * 工单id + */ + private String ticketId; + /** + * 工单子表id + */ + private String repairItemId; + /** + * 记录类型(repair_records_type) + */ + private String type; + /** + * 记录描述 + */ + private String remark; + /** + * 处理人 + */ + private String dealUserName; + /** + * 处理人员工表id + */ + private Long dealUserId; + +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/mapper/BaseRepairRecordsMapper.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/mapper/BaseRepairRecordsMapper.java new file mode 100644 index 00000000..90da3a52 --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/mapper/BaseRepairRecordsMapper.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.tickets.mapper; + +import cn.iocoder.yudao.module.tickets.entity.BaseRepairRecords; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 维修记录 Mapper + * + * @author lzt + */ +@Mapper +public interface BaseRepairRecordsMapper extends BaseMapper { +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/BaseRepairRecordsService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/BaseRepairRecordsService.java new file mode 100644 index 00000000..1cc3a465 --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/BaseRepairRecordsService.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.tickets.service; + +import cn.iocoder.yudao.module.tickets.entity.BaseRepairRecords; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 维修记录 Service 接口 + * + * @author lzt + */ +public interface BaseRepairRecordsService extends IService { + + /** + * 保存维修记录 + * + * @param ticketId 工单id +// * @param repairItemId 工单子表id + * @param type 工作类型(数据字典:repair_records_type;后端对应 RecordTypeEnum 枚举) + * @param remark 备注 + * @param images 图片(相对路径按照“,”分隔) + * @author PQZ + * @date 14:51 2024/10/11 + **/ + void saveRepairRecord(String ticketId, String repairItemId, String type, String remark, String images); + +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/BaseRepairRecordsServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/BaseRepairRecordsServiceImpl.java new file mode 100644 index 00000000..dc793841 --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/BaseRepairRecordsServiceImpl.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.tickets.service.impl; + +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import cn.iocoder.yudao.module.tickets.entity.BaseRepairRecords; +import cn.iocoder.yudao.module.tickets.mapper.BaseRepairRecordsMapper; +import cn.iocoder.yudao.module.tickets.service.BaseRepairRecordsService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +/** + * 维修记录 Service 实现类 + * + * @author lzt + */ +@Service +@Validated +public class BaseRepairRecordsServiceImpl extends ServiceImpl implements BaseRepairRecordsService { + + @Resource + private AdminUserApi userApi; + + /** + * 保存维修记录 + * + * @param ticketId 工单id + * @param repairItemId 工单子表id + * @param type 工作类型(数据字典:repair_records_type;后端对应 RecordTypeEnum 枚举) + * @param remark 备注 + * @param images 图片(相对路径按照“,”分隔) + * @author PQZ + * @date 14:51 2024/10/11 + **/ + @Override + public void saveRepairRecord(String ticketId, String repairItemId, String type, String remark, String images) { + //获取当前登录用户 + Long userId = SecurityFrameworkUtils.getLoginUserId(); + AdminUserRespDTO loginUser = userApi.getUser(userId); + //初始化维修记录 + BaseRepairRecords repairRecords = new BaseRepairRecords(); + repairRecords.setTicketId(ticketId); + repairRecords.setRepairItemId(repairItemId); + repairRecords.setType(type); + repairRecords.setRemark(remark); + repairRecords.setDealUserId(loginUser.getId()); + repairRecords.setDealUserName(loginUser.getNickname()); + //保存维修记录 + save(repairRecords); + } + +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/TicketsServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/TicketsServiceImpl.java index 59e73fd7..b6db061e 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/TicketsServiceImpl.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/TicketsServiceImpl.java @@ -2,9 +2,11 @@ package cn.iocoder.yudao.module.tickets.service.impl; import cn.iocoder.yudao.module.tickets.entity.Tickets; import cn.iocoder.yudao.module.tickets.mapper.TicketsMapper; +import cn.iocoder.yudao.module.tickets.service.BaseRepairRecordsService; import cn.iocoder.yudao.module.tickets.service.TicketsService; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -15,6 +17,8 @@ import java.util.List; **/ @Service public class TicketsServiceImpl extends ServiceImpl implements TicketsService { + @Autowired + private BaseRepairRecordsService baseRepairRecordsService; /** * 更新工单状态为已结账 @@ -32,5 +36,9 @@ public class TicketsServiceImpl extends ServiceImpl impl // 不在这儿结束 // .set(Tickets::getIsFinish, "1") ); + // 记录日志 + if(!ticketIds.isEmpty()){ + baseRepairRecordsService.saveRepairRecord(ticketIds.get(0), null, "js", "线上支付结算", null); + } } } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java index 58d68c60..9e7dfd25 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java @@ -459,6 +459,8 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl