/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.eCallEventTwo.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.common.param.CommonParamSet; import org.springblade.common.param.GridSet; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.modules.eCallEventTwo.dto.ECallEventTwoDTO; import org.springblade.modules.eCallEventTwo.entity.ECallEventTwoEntity; import org.springblade.modules.eCallEventTwo.mapper.EcCallEventTwoMapper; import org.springblade.modules.eCallEventTwo.service.IECallEventTwoService; import org.springblade.modules.eCallEventTwo.vo.ECallEventTwoVO; import org.springblade.modules.system.entity.Dept; import org.springblade.modules.system.service.IDeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Random; /** * 工单 服务实现类 * * @author BladeX * @since 2024-05-15 */ @Service public class EcCallEventTwoServiceImpl extends ServiceImpl implements IECallEventTwoService { @Autowired private IDeptService deptService; @Override public IPage selectECallEventTwoPage(IPage page, ECallEventTwoVO eCallEventTwo) { // 公共参数设置 CommonParamSet commonParamSet = new CommonParamSet().invoke(ECallEventTwoVO.class, eCallEventTwo); // 返回 List eCallEventTwoVOS = baseMapper.selectECallEventTwoPage(page, eCallEventTwo, commonParamSet.getGridCodeList(), commonParamSet.getRegionChildCodesList(), commonParamSet.getIsAdministrator()); return page.setRecords(eCallEventTwoVOS); } /** * 查询工单 * * @param orderId 工单ID * @return 工单 */ @Override public ECallEventTwoDTO selectECallEventTwoById(Long orderId) { return this.baseMapper.selectECallEventTwoById(orderId); } /** * 查询工单列表 * * @param eCallEventTwoDTO 工单 * @return 工单集合 */ @Override public List selectECallEventTwoList(ECallEventTwoDTO eCallEventTwoDTO) { return this.baseMapper.selectECallEventTwoList(eCallEventTwoDTO); } @Override public boolean saveTwo(ECallEventTwoVO eCallEventTwo) { eCallEventTwo.setLat(eCallEventTwo.getSceneGeoLat().toString()); eCallEventTwo.setLng(eCallEventTwo.getSceneGeoLng().toString()); // 设置工单号 eCallEventTwo.setOrderCode(getOrderCode()); // 计算网格 if (eCallEventTwo.getLng() != null && eCallEventTwo.getLat() != null) { // 点落面计算警格,网格,警格 GridSet invoke = new GridSet().invoke(ECallEventTwoVO.class, eCallEventTwo, "lng", "lat", "applicantGrid", "jwGridCode"); } return save(eCallEventTwo); } /** * 获取工单号 * @return */ private String getOrderCode() { String deptId1 = AuthUtil.getDeptId(); Dept dept = deptService.getOne(Wrappers.lambdaQuery().eq(Dept::getId, deptId1)); // 生成工单号: // 话务行政区划、编号类型、来电时间、来源渠道、流水号6 361100-00-202402131524-01-123456 // 行政区划 String deptId = dept.getSort().toString(); // 编号类型 String no = "00"; // 时间 String dateStr = getDateStr(); // 来源渠道 int sort = dept.getSort(); String source = String.format("%02d", sort); // 流水号6位 String serial = getSerialStr(); String orderCode = "361100" + "-" + no + "-" + dateStr + "-" + source + "-" + serial; return orderCode; } private String getSerialStr() { Random random = new Random(); int sixDigitNumber = random.nextInt(900000) + 100000; // 生成100000到999999之间的随机数 return String.valueOf(sixDigitNumber); } private String getDateStr() { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmm"); return now.format(formatter); } }