Explorar el Código

物联网手机端充电订单

wuxw hace 1 año
padre
commit
41460de80c

+ 6 - 0
java110-bean/src/main/java/com/java110/dto/repairEvent/RepairEventDto.java

@@ -15,6 +15,12 @@ import java.util.Date;
  **/
 public class RepairEventDto extends PageDto implements Serializable {
 
+    /**
+     * 1001	催单
+     * 2002	消息通知
+     */
+    public static final String EVENT_TYPE_URGE = "1001"; //催单
+    public static final String EVENT_TYPE_MSG = "2002"; //消息通知
     private String eventId;
     private String staffName;
     private String repairId;

+ 1 - 1
service-community/src/main/java/com/java110/community/cmd/ownerRepair/ListAdminOwnerRepairsCmd.java

@@ -34,7 +34,7 @@ import java.util.Date;
 import java.util.List;
 
 @Java110Cmd(serviceCode = "ownerRepair.listAdminOwnerRepairs")
-public class ListAdminOwnerRepairsCmd extends Cmd {
+public class RepairsCmd extends Cmd {
 
     @Autowired
     private IRepairInnerServiceSMO repairInnerServiceSMOImpl;

+ 126 - 0
service-community/src/main/java/com/java110/community/cmd/repair/PhoneUrgeRepairCmd.java

@@ -0,0 +1,126 @@
+package com.java110.community.cmd.repair;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.CmdContextUtils;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.privilege.BasePrivilegeDto;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.repair.RepairUserDto;
+import com.java110.dto.repairEvent.RepairEventDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.community.IRepairEventV1InnerServiceSMO;
+import com.java110.intf.community.IRepairInnerServiceSMO;
+import com.java110.intf.community.IRepairUserInnerServiceSMO;
+import com.java110.intf.order.IPrivilegeInnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
+import com.java110.po.repairEvent.RepairEventPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.ListUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * 用户催单
+ */
+@Java110Cmd(serviceCode = "repair.phoneUrgeRepair")
+public class PhoneUrgeRepairCmd extends Cmd {
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairEventV1InnerServiceSMO repairEventV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPrivilegeInnerServiceSMO privilegeInnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+        Assert.hasKeyAndValue(reqJson, "repairId", "未包含工单ID");
+        Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息");
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+
+        String userId = CmdContextUtils.getUserId(context);
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(userId);
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+
+        Assert.listOnlyOne(userDtos, "用户未登录");
+        RepairDto repairDto = new RepairDto();
+        repairDto.setRepairId(reqJson.getString("repairId"));
+        repairDto.setTel(userDtos.get(0).getTel());
+        List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(repairDto);
+        Assert.listOnlyOne(repairDtos, "报修不存在");
+
+
+        RepairEventPo repairEventPo = new RepairEventPo();
+        repairEventPo.setEventId(GenerateCodeFactory.getGeneratorId("11"));
+
+        repairEventPo.setRepairId(repairDtos.get(0).getRepairId());
+        repairEventPo.setRemark("用户着急催单了,请尽快处理!");
+        repairEventPo.setEventType(RepairEventDto.EVENT_TYPE_URGE);
+        repairEventPo.setCommunityId(repairDtos.get(0).getCommunityId());
+        queryStaff(repairEventPo, repairDtos.get(0));
+
+
+        repairEventV1InnerServiceSMOImpl.saveRepairEvent(repairEventPo);
+    }
+
+    private void queryStaff(RepairEventPo repairEventPo, RepairDto repairDto) {
+
+        if (RepairDto.STATE_WAIT.equals(repairDto.getState())) {
+            BasePrivilegeDto basePrivilegeDto = new BasePrivilegeDto();
+            basePrivilegeDto.setResource("/wechatRepairRegistration");
+            //basePrivilegeDto.setStoreId(communityMemberDtos.get(0).getMemberId());
+            basePrivilegeDto.setCommunityId(repairDto.getCommunityId());
+            List<UserDto> userDtos = privilegeInnerServiceSMOImpl.queryPrivilegeUsers(basePrivilegeDto);
+            if (ListUtil.isNull(userDtos)) {
+                repairEventPo.setStaffId("-1");
+                repairEventPo.setStaffName("未找到派单人员");
+                return;
+            }
+            UserDto userDto = new UserDto();
+            userDto.setUserId(userDtos.get(0).getUserId());
+            List<UserDto> tmpUserDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+            if (ListUtil.isNull(tmpUserDtos)) {
+                repairEventPo.setStaffId("-1");
+                repairEventPo.setStaffName("未找到派单人员");
+                return;
+            }
+            repairEventPo.setStaffId(tmpUserDtos.get(0).getUserId());
+            repairEventPo.setStaffName("派单人员-" + tmpUserDtos.get(0).getName());
+            return;
+        }
+
+        RepairUserDto repairUserDto = new RepairUserDto();
+        repairUserDto.setRepairId(repairDto.getRepairId());
+        repairUserDto.setState(RepairUserDto.STATE_DOING);
+        List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+
+        if(ListUtil.isNull(repairUserDtos)){
+            repairEventPo.setStaffId("-1");
+            repairEventPo.setStaffName("未找到报修师傅");
+            return;
+        }
+
+        repairEventPo.setStaffId(repairUserDtos.get(0).getStaffId());
+        repairEventPo.setStaffName(repairUserDtos.get(0).getStaffName());
+    }
+}

+ 159 - 0
service-community/src/main/java/com/java110/community/cmd/repair/QueryPhoneRepairsCmd.java

@@ -0,0 +1,159 @@
+package com.java110.community.cmd.repair;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.CmdContextUtils;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.CommunitySettingFactory;
+import com.java110.dto.privilege.BasePrivilegeDto;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.community.IMenuInnerServiceSMO;
+import com.java110.intf.community.IRepairInnerServiceSMO;
+import com.java110.intf.community.IRepairUserInnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.MappingConstant;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.*;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.*;
+
+@Java110Cmd(serviceCode = "repair.queryPhoneRepairs")
+public class QueryPhoneRepairsCmd extends Cmd {
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
+
+    @Autowired
+    private IMenuInnerServiceSMO menuInnerServiceSMOImpl;
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+    //域
+    public static final String DOMAIN_COMMON = "DOMAIN.COMMON";
+
+    public static final String VIEW_LIST_STAFF_REPAIRS = "VIEW_LIST_STAFF_REPAIRS";
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        super.validatePageInfo(reqJson);
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求中未包含小区ID");
+    }
+
+    /**
+     * 报修已办
+     *
+     * @param event   事件对象
+     * @param context 数据上文对象
+     * @param reqJson 请求报文
+     * @throws CmdException
+     * @throws ParseException
+     */
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+        String userId = CmdContextUtils.getUserId(context);
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(userId);
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+
+        Assert.listOnlyOne(userDtos, "用户未登录");
+
+        RepairDto ownerRepairDto = BeanConvertUtil.covertBean(reqJson, RepairDto.class);
+
+        ownerRepairDto.setTel(userDtos.get(0).getTel());
+        if (reqJson.containsKey("repairStates")) {
+            String[] states = reqJson.getString("repairStates").split(",");
+            ownerRepairDto.setStatess(states);
+        } else {
+            //Pc WEB维修已办
+            String[] states = {RepairDto.STATE_BACK, RepairDto.STATE_TRANSFER, RepairDto.STATE_PAY, RepairDto.STATE_PAY_ERROR, RepairDto.STATE_APPRAISE, RepairDto.STATE_RETURN_VISIT, RepairDto.STATE_COMPLATE};
+            ownerRepairDto.setStatess(states);
+        }
+
+        int count = repairInnerServiceSMOImpl.queryRepairsCount(ownerRepairDto);
+        List<RepairDto> repairDtos;
+        if (count > 0) {
+            repairDtos = repairInnerServiceSMOImpl.queryRepairs(ownerRepairDto);
+            computeRepairScore(repairDtos);
+        } else {
+            repairDtos = new ArrayList<>();
+        }
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) reqJson.getInteger("row")),
+                count, repairDtos);
+        context.setResponseEntity(responseEntity);
+    }
+
+    /**
+     * 计算评分
+     *
+     * @param repairDtos
+     */
+    private void computeRepairScore(List<RepairDto> repairDtos) {
+        if (ListUtil.isNull(repairDtos)) {
+            return;
+        }
+        Date finishTime = null;
+        String submitHour;
+        Date timeout = null;
+        for (RepairDto repairDto : repairDtos) {
+            //获取综合评价得分
+            String appraiseScoreNumber = repairDto.getAppraiseScore();
+            Double appraiseScoreNum = 0.0;
+            if (!StringUtil.isEmpty(appraiseScoreNumber)) {
+                appraiseScoreNum = Double.parseDouble(appraiseScoreNumber);
+            }
+            int appraiseScore = (int) Math.ceil(appraiseScoreNum);
+            //获取上门速度评分
+            String doorSpeedScoreNumber = repairDto.getDoorSpeedScore();
+            Double doorSpeedScoreNum = 0.0;
+            if (!StringUtil.isEmpty(doorSpeedScoreNumber)) {
+                doorSpeedScoreNum = Double.parseDouble(doorSpeedScoreNumber);
+            }
+            int doorSpeedScore = (int) Math.ceil(doorSpeedScoreNum);
+            //获取维修员服务评分
+            String repairmanServiceScoreNumber = repairDto.getRepairmanServiceScore();
+            Double repairmanServiceScoreNum = 0.0;
+            if (!StringUtil.isEmpty(repairmanServiceScoreNumber)) {
+                repairmanServiceScoreNum = Double.parseDouble(repairmanServiceScoreNumber);
+            }
+            int repairmanServiceScore = (int) Math.ceil(repairmanServiceScoreNum);
+            //取得平均分
+            double averageNumber = (appraiseScoreNum + doorSpeedScoreNum + repairmanServiceScoreNum) / 3.0;
+            BigDecimal averageNum = new BigDecimal(averageNumber);
+            Double average = averageNum.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+            repairDto.setAppraiseScore(String.valueOf(appraiseScore));
+            repairDto.setDoorSpeedScore(String.valueOf(doorSpeedScore));
+            repairDto.setRepairmanServiceScore(String.valueOf(repairmanServiceScore));
+            repairDto.setAverage(String.valueOf(average));
+
+            // 计算提单时长
+            finishTime = DateUtil.getCurrentDate();
+            repairDto.setTimeoutFlag("N");
+            if (!StringUtil.isEmpty(repairDto.getFinishTime())) {
+                finishTime = DateUtil.getDateFromStringA(repairDto.getFinishTime());
+            } else {
+                timeout = DateUtil.getDateFromStringA(repairDto.getTimeout());
+                if (finishTime.getTime() > timeout.getTime()) {
+                    repairDto.setStateName(repairDto.getStateName() + "(超时)");
+                    repairDto.setTimeoutFlag("Y");
+                }
+            }
+            submitHour = DateUtil.calculateTimeDifference(repairDto.getCreateTime(), finishTime);
+            repairDto.setSubmitHours(submitHour);
+
+        }
+    }
+}

+ 36 - 10
service-user/src/main/java/com/java110/user/smo/impl/OwnerAppUserInnerServiceSMOImpl.java

@@ -5,17 +5,21 @@ import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.dto.PageDto;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.owner.OwnerAppUserDto;
+import com.java110.dto.owner.OwnerDto;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.ICommunityV1InnerServiceSMO;
 import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
 import com.java110.intf.user.IUserInnerServiceSMO;
 import com.java110.po.owner.OwnerAppUserPo;
 import com.java110.user.dao.IOwnerAppUserServiceDao;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.ListUtil;
 import com.java110.utils.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -37,7 +41,7 @@ public class OwnerAppUserInnerServiceSMOImpl extends BaseServiceSMO implements I
     private IUserInnerServiceSMO userInnerServiceSMOImpl;
 
     @Autowired
-    private ICommunityInnerServiceSMO iCommunityInnerServiceSMO;
+    private ICommunityV1InnerServiceSMO communityV1InnerServiceSMOImpl;
 
     @Override
     public List<OwnerAppUserDto> queryOwnerAppUsers(@RequestBody OwnerAppUserDto ownerAppUserDto) {
@@ -51,19 +55,41 @@ public class OwnerAppUserInnerServiceSMOImpl extends BaseServiceSMO implements I
         }
 
         List<OwnerAppUserDto> ownerAppUsers = BeanConvertUtil.covertBeanList(ownerAppUserServiceDaoImpl.getOwnerAppUserInfo(BeanConvertUtil.beanCovertMap(ownerAppUserDto)), OwnerAppUserDto.class);
-        for (OwnerAppUserDto ownerAppUserDto1 : ownerAppUsers) {
-            if (StringUtil.isEmpty(ownerAppUserDto1.getCommunityId()) || "-1".equals(ownerAppUserDto1.getCommunityId())) {
+        queryCommunityTel(ownerAppUsers);
+
+        return ownerAppUsers;
+    }
+
+    private void queryCommunityTel(List<OwnerAppUserDto> ownerAppUsers) {
+
+        if(ListUtil.isNull(ownerAppUsers)){
+            return ;
+        }
+        List<String> communityIds = new ArrayList<>();
+        for (OwnerAppUserDto ownerAppUserDto : ownerAppUsers) {
+            if (StringUtil.isEmpty(ownerAppUserDto.getCommunityId()) || "-1".equals(ownerAppUserDto.getCommunityId())) {
                 continue;
             }
-            CommunityDto communityDto = new CommunityDto();
-            communityDto.setCommunityId(ownerAppUserDto1.getCommunityId());
-            List<CommunityDto> communityDtoList = iCommunityInnerServiceSMO.queryCommunitys(communityDto);
-            if (communityDtoList != null && communityDtoList.size() > 0) {
-                ownerAppUserDto1.setsCommunityTel(communityDtoList.get(0).getTel());
+            communityIds.add(ownerAppUserDto.getCommunityId());
+        }
+        if(ListUtil.isNull(communityIds)){
+            return ;
+        }
+        CommunityDto communityDto = new CommunityDto();
+        communityDto.setCommunityIds(communityIds.toArray(new String[communityIds.size()]));
+        List<CommunityDto> communityDtos = communityV1InnerServiceSMOImpl.queryCommunitys(communityDto);
+        if(ListUtil.isNull(communityDtos)){
+            return;
+        }
+        for (OwnerAppUserDto tmpOwnerAppUserDto : ownerAppUsers) {
+            for (CommunityDto tCommunityDto : communityDtos) {
+                if (!tmpOwnerAppUserDto.getCommunityId().equals(tCommunityDto.getCommunityId())) {
+                    continue;
+                }
+                tmpOwnerAppUserDto.setCommunityName(tCommunityDto.getName());
+                tmpOwnerAppUserDto.setsCommunityTel(tCommunityDto.getTel());
             }
         }
-
-        return ownerAppUsers;
     }