linwe
2024-09-03 764d883b5ea3bdc06abbec548b6df0511e567978
src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcCallEventTwoServiceImpl.java
New file
@@ -0,0 +1,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);
   }
}