/*
|
* 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<EcCallEventTwoMapper, ECallEventTwoEntity> implements IECallEventTwoService {
|
@Autowired
|
private IDeptService deptService;
|
|
@Override
|
public IPage<ECallEventTwoVO> selectECallEventTwoPage(IPage<ECallEventTwoVO> page, ECallEventTwoVO eCallEventTwo) {
|
|
// 公共参数设置
|
CommonParamSet commonParamSet = new CommonParamSet().invoke(ECallEventTwoVO.class, eCallEventTwo);
|
|
|
// 返回
|
List<ECallEventTwoVO> 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<ECallEventTwoDTO> 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.<Dept>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);
|
}
|
}
|