Kaynağa Gözat

feat :1、更具电梯所在的区域,拨打119保底电话时,增加对应的区号。2、数据接口更具登录用户进行数据权限隔离

lihao16 3 ay önce
ebeveyn
işleme
ac24fff2e2

+ 1 - 1
inspur-admin/src/main/java/com/inspur/web/controller/work/ElevatorWorkOrderController.java

@@ -49,7 +49,7 @@ public class ElevatorWorkOrderController extends BaseController
      */
     @Anonymous
     // @PreAuthorize("@ss.hasPermi('work:workOrder:export')")
-    @Log(title = "电梯工单信息", businessType = BusinessType.EXPORT)
+    // @Log(title = "电梯工单信息", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, ElevatorWorkOrder elevatorWorkOrder) {
         List<ElevatorWorkOrderExport> list = elevatorWorkOrderService.selectElevatorWorkOrderNoAnswer(elevatorWorkOrder);

+ 4 - 0
inspur-work/src/main/java/com/inspur/domain/ElevatorInfo.java

@@ -30,6 +30,8 @@ public class ElevatorInfo extends BaseEntity
     @Excel(name = "区域编码")
     private String areaCode;
 
+    private List<String> areaCodes;
+
     /** 所在区域 */
     @Excel(name = "所在区域")
     private String inArea;
@@ -78,4 +80,6 @@ public class ElevatorInfo extends BaseEntity
 
     private List<String> elevatorIds;
 
+    private String userRegionCode;
+
 }

+ 4 - 0
inspur-work/src/main/java/com/inspur/domain/ElevatorWorkOrder.java

@@ -41,6 +41,10 @@ public class ElevatorWorkOrder extends BaseEntity {
     @Excel(name = "所属区域编码")
     private String regionCode;
 
+    List<String> regionCodes;
+
+    private String userRegionCode;
+
     /**
      * 详细使用地点
      */

+ 2 - 1
inspur-work/src/main/java/com/inspur/mapper/ElevatorWorkOrderMapper.java

@@ -77,7 +77,8 @@ public interface ElevatorWorkOrderMapper
 
     /**
      * 导出安全码正确 未接单数据
+     * @param elevatorWorkOrder
      * @return
      */
-    List<ElevatorWorkOrderExport> selectElevatorWorkOrderNoAnswer();
+    List<ElevatorWorkOrderExport> selectElevatorWorkOrderNoAnswer(ElevatorWorkOrder elevatorWorkOrder);
 }

+ 7 - 0
inspur-work/src/main/java/com/inspur/service/impl/ElevatorInfoServiceImpl.java

@@ -1,6 +1,7 @@
 package com.inspur.service.impl;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 import java.util.stream.Collectors;
@@ -45,6 +46,8 @@ public class ElevatorInfoServiceImpl implements IElevatorInfoService
     @Value("${pbx.api.appcode}")
     private String regionPhoneAppCode;
 
+    private static final String BT_USER_REGION_CODE = "659000";
+
     /**
      * 查询电梯信息
      *
@@ -84,6 +87,10 @@ public class ElevatorInfoServiceImpl implements IElevatorInfoService
             elevatorInfo.setElevatorIds(elevatorIds);
         }
         startPage();
+        List<String> areaCodes = Arrays.asList(elevatorInfo.getUserRegionCode().split(","));
+        if (!areaCodes.contains(BT_USER_REGION_CODE)) {
+            elevatorInfo.setAreaCodes(areaCodes);
+        }
         elevatorInfos = elevatorInfoMapper.selectElevatorInfoList(elevatorInfo);
         return elevatorInfos;
     }

+ 12 - 1
inspur-work/src/main/java/com/inspur/service/impl/ElevatorWorkOrderServiceImpl.java

@@ -13,6 +13,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import static com.inspur.common.utils.PageUtils.startPage;
@@ -32,6 +33,8 @@ public class ElevatorWorkOrderServiceImpl implements IElevatorWorkOrderService
     @Autowired
     private ElevatorWorkNodeMapper elevatorWorkNodeMapper;
 
+    private static final String BT_USER_REGION_CODE = "659000";
+
     /**
      * 查询工单系统
      *
@@ -52,6 +55,10 @@ public class ElevatorWorkOrderServiceImpl implements IElevatorWorkOrderService
      */
     @Override
     public List<ElevatorWorkOrder> selectElevatorWorkOrderList(ElevatorWorkOrder elevatorWorkOrder) {
+        List<String> areaCodes = Arrays.asList(elevatorWorkOrder.getUserRegionCode().split(","));
+        if (!areaCodes.contains(BT_USER_REGION_CODE)) {
+            elevatorWorkOrder.setRegionCodes(areaCodes);
+        }
         startPage();
         List<ElevatorWorkOrder> list = elevatorWorkOrderMapper.selectElevatorWorkOrderList(elevatorWorkOrder);
         if (!CollectionUtils.isEmpty(list)) {
@@ -80,7 +87,11 @@ public class ElevatorWorkOrderServiceImpl implements IElevatorWorkOrderService
 
     @Override
     public List<ElevatorWorkOrderExport> selectElevatorWorkOrderNoAnswer(ElevatorWorkOrder elevatorWorkOrder) {
-        List<ElevatorWorkOrderExport> result = elevatorWorkOrderMapper.selectElevatorWorkOrderNoAnswer();
+        List<String> areaCodes = Arrays.asList(elevatorWorkOrder.getUserRegionCode().split(","));
+        if (!areaCodes.contains(BT_USER_REGION_CODE)) {
+            elevatorWorkOrder.setRegionCodes(areaCodes);
+        }
+        List<ElevatorWorkOrderExport> result = elevatorWorkOrderMapper.selectElevatorWorkOrderNoAnswer(elevatorWorkOrder);
         if (!CollectionUtils.isEmpty(result)) {
             result.forEach(item -> {
                 ElevatorWorkNode queryParam = new ElevatorWorkNode();

+ 46 - 0
inspur-work/src/main/java/com/inspur/thrid/AreaCodeEnum.java

@@ -0,0 +1,46 @@
+package com.inspur.thrid;
+
+/**
+ * 电梯所在区域对应的区好
+ *
+ * @author lihao16
+ */
+public enum AreaCodeEnum {
+
+    SHI_12("659011", "0991"),
+    SHI_1("659200", "0997"),
+    SHI_6("659400", "0994"),
+    SHI_4("659800", "0999"),
+    SHI_8("659100", "0993"),
+    SHI_3("659300", "0998"),
+    SHI_5("659700", "0909"),
+    SHI_2("659600", "0996"),
+    SHI_7("659010", "0992"),
+    SHI_13("659040", "0902"),
+    SHI_10("659500", "0906"),
+    SHI_9("659030", "0901"),
+    SHI_14("659900", "0903"),
+    CAO_HU("660000", "0998"),
+    BING_TUAN("659090", "0991"),
+    SHI_11("659050", "0991");
+
+    private final String code;
+    private final String info;
+
+    AreaCodeEnum(String code, String info)
+    {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getInfo()
+    {
+        return info;
+    }
+
+}

+ 29 - 4
inspur-work/src/main/java/com/inspur/thrid/impl/PBXServiceImpl.java

@@ -21,6 +21,7 @@ import com.inspur.mapper.ElevatorPersonInfoMapper;
 import com.inspur.mapper.ElevatorWorkNodeMapper;
 import com.inspur.mapper.ElevatorWorkOrderMapper;
 import com.inspur.system.service.ISysConfigService;
+import com.inspur.thrid.AreaCodeEnum;
 import com.inspur.thrid.IPBXService;
 import com.inspur.thrid.PBXConstant;
 import com.inspur.websoket.client.bean.ws.*;
@@ -279,6 +280,12 @@ public class PBXServiceImpl implements IPBXService {
                 || PBXConstant.IVR_CODE_BUSY_CODE.equals(dtmf)) {
             return;
         }
+        String configLastCallCode = configService.selectConfigByKey("sys.pbx.lastCallCode");
+        // 排除dtmf出现保底电话 119的情况
+        if (dtmf.startsWith("09") && dtmf.endsWith(configLastCallCode)) {
+            log.info("dtmf ends with configLastCallCode, return!");
+            return;
+        }
         if (dtmf.length() > 6) {
             log.info("dtmf length > 6, dtmf : {}",dtmf);
             // bugfix dtmf出现转接的电话号码
@@ -345,7 +352,9 @@ public class PBXServiceImpl implements IPBXService {
         }else {
             createOrderNode_2(workOrder,wsDtmfMessage,1,dtmf);
         }
-        String lastCallCode = configService.selectConfigByKey("sys.pbx.lastCallCode");
+        // 根据电梯所在区域,获取电话区号,并赋值给保底电话
+        String phoneAreaCode = getAreaCodeInfoByAreaCode(elevatorInfo.getAreaCode());
+        String lastCallCode = phoneAreaCode + configLastCallCode;
         // 根据电梯信息 查询所有的维保人员
         List<ElevatorPersonInfo> personInfoList = elevatorPersonInfoMapper.selectElevatorPersonInfoByElevatorId(elevatorInfo.getDeviceId());
         if (CollectionUtils.isEmpty(personInfoList)) {
@@ -368,6 +377,15 @@ public class PBXServiceImpl implements IPBXService {
         trasnferCallThread.start();
     }
 
+    private String getAreaCodeInfoByAreaCode(String areaCode) {
+        for (AreaCodeEnum areaCodeEnum : AreaCodeEnum.values()) {
+            if (areaCodeEnum.getCode().equals(areaCode)) {
+                return areaCodeEnum.getInfo();
+            }
+        }
+        return AreaCodeEnum.BING_TUAN.getInfo();
+    }
+
     private void hangupCall(WsDtmfMessage wsDtmfMessage) {
         String pbxToken = redisCache.getCacheObject(PBXConstant.PBX_TOKEN_KEY);
         Map<String, String> params = new HashMap<String, String>(6);
@@ -622,10 +640,16 @@ public class PBXServiceImpl implements IPBXService {
         params.put("channel_id", channelId);
         // params.put("number", callNumber);
         // params.put("number", "0" + callNumber);
-        if (isLocalCall(callNumber)) {
+        // 如果是呼叫119 直接根据完整号码呼叫
+        String configLastCallCode = configService.selectConfigByKey("sys.pbx.lastCallCode");
+        if (callNumber.startsWith("09") && callNumber.endsWith(configLastCallCode)) {
             params.put("number", callNumber);
         }else {
-            params.put("number", "0" + callNumber);
+            if (isLocalCall(callNumber)) {
+                params.put("number", callNumber);
+            }else {
+                params.put("number", "0" + callNumber);
+            }
         }
         params.put("dial_permission","1000");
 
@@ -885,8 +909,9 @@ public class PBXServiceImpl implements IPBXService {
                 continue;
             }
             // 如果手机号开头是0 去除掉0
-            if (toPhone.startsWith("0")) {
+            if (toPhone.startsWith("0") && toPhone.length() > 11) {
                 toPhone = toPhone.substring(1,12);
+                log.info("toPhone start with 0,get sub toPhone : " + toPhone);
             }
             String callId = redisCache.getCacheObject(PBXConstant.PBX_TRANSFER_CODE_KEY + toPhone);
             if (StringUtils.isEmpty(callId)) {

+ 5 - 0
inspur-work/src/main/resources/mapper/work/ElevatorInfoMapper.xml

@@ -45,6 +45,11 @@
                     #{elevatorId}
                 </foreach>
             </if>
+            <if test="areaCodes != null"> and area_code in
+                <foreach item="areaCode" collection="areaCodes" open="(" separator="," close=")">
+                    #{areaCode}
+                </foreach>
+            </if>
         </where>
     </select>
 

+ 11 - 2
inspur-work/src/main/resources/mapper/work/ElevatorWorkOrderMapper.xml

@@ -52,7 +52,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="securityCode != null  and securityCode != ''"> and security_code like concat('%', #{securityCode}, '%')</if>
             <if test="region != null  and region != ''"> and region like concat('%', #{region}, '%')</if>
             <if test="status != null "> and status = #{status}</if>
-            <!--<if test="createDate != null "> and create_date = #{createDate}</if>-->
+            <if test="regionCodes != null"> and region_code in
+                <foreach item="regionCode" collection="regionCodes" open="(" separator="," close=")">
+                    #{regionCode}
+                </foreach>
+            </if>
             <if test="createDateStart != null"><!-- 开始时间检索 -->
                 AND date_format(create_time,'%Y%m%d') &gt;= date_format(#{createDateStart},'%Y%m%d')
             </if>
@@ -214,7 +218,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
 
-    <select id="selectElevatorWorkOrderNoAnswer" resultType="com.inspur.domain.ElevatorWorkOrderExport">
+    <select id="selectElevatorWorkOrderNoAnswer" resultType="com.inspur.domain.ElevatorWorkOrderExport" parameterType="com.inspur.domain.ElevatorWorkOrder">
         select
             id as id,
             trapped_person_tel  as trappedPersonTel,
@@ -232,6 +236,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             device_no           as deviceNo
         from ELEVATOR_EMERGENCY.elevator_work_order
         where status = 0 and elevator_name is not null
+        <if test="regionCodes != null"> and region_code in
+            <foreach item="regionCode" collection="regionCodes" open="(" separator="," close=")">
+                #{regionCode}
+            </foreach>
+        </if>
         order by id desc
     </select>
 </mapper>