linwe
2024-08-07 06df33f156924c564c17b11fdb96c5bb298a810d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*
 *      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);
        // 如果是委办局,直接设置成管理角色
        if(AuthUtil.getUserRole().equals("wbj")){
            commonParamSet.setIsAdministrator(1);
        }
        // 返回
        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);
    }
}