xiaogang
2021-07-17 1024666b99a24bd7d5e4dc442d6b0c0319fa2f29
service-community/src/main/java/com/java110/community/bmo/repair/impl/AppraiseRepairBMOImpl.java
@@ -11,15 +11,18 @@
import com.java110.intf.common.IAppraiseInnerServiceSMO;
import com.java110.intf.user.IUserInnerServiceSMO;
import com.java110.po.appraise.AppraisePo;
import com.java110.po.user.UserPo;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -77,7 +80,52 @@
        appraisePo.setObjType(AppraiseDto.OBJ_TYPE_REPAIR);
        appraisePo.setAppraiseType(AppraiseDto.APPRAISE_TYPE_PUBLIC);
        appraiseInnerServiceSMOImpl.saveAppraise(appraisePo);
        //获取当前结单的用户
        Map mapInfo = new HashMap();
        mapInfo.put("repairId", repairId);
        mapInfo.put("state", RepairUserDto.STATE_CLOSE);
        List<Map> repairUsers = repairUserServiceDaoImpl.getRepairUserInfo(mapInfo);
        Assert.listOnlyOne(repairUsers, "查询结单用户错误!");
        //获取结单员工的id
        Object staffId = repairUsers.get(0).get("staffId");
        //获取结单员工信息
        UserDto user = new UserDto();
        user.setUserId(staffId.toString());
        List<UserDto> userList = userInnerServiceSMO.getUsers(user);
        Assert.listOnlyOne(userList, "查询用户信息错误!");
        //获取综合评价得分
        Double appraiseScore = 0.0;
        if (!StringUtil.isEmpty(appraisePo.getAppraiseScore())) {
            appraiseScore = Double.parseDouble(appraisePo.getAppraiseScore());
        }
        //获取上门速度评分
        Double doorSpeedScore = 0.0;
        if (!StringUtil.isEmpty(appraisePo.getDoorSpeedScore())) {
            doorSpeedScore = Double.parseDouble(appraisePo.getDoorSpeedScore());
        }
        //获取维修员服务评分
        Double repairmanServiceScore = 0.0;
        if (!StringUtil.isEmpty(appraisePo.getRepairmanServiceScore())) {
            repairmanServiceScore = Double.parseDouble(appraisePo.getRepairmanServiceScore());
        }
        //计算平均分
        double average = 0.0;
        double averageNumber = (appraiseScore + doorSpeedScore + repairmanServiceScore) / 3.0;
        if (StringUtil.isEmpty(userList.get(0).getScore())) {
            BigDecimal averageNum = new BigDecimal(averageNumber);
            average = averageNum.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        } else {
            //获取用户原有评分
            Double scoreNumber = Double.parseDouble(userList.get(0).getScore());
            double score = (averageNumber + scoreNumber) / 2.0;
            BigDecimal averageNum = new BigDecimal(score);
            average = averageNum.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        }
        //更新用户评分
        UserPo userPo = new UserPo();
        userPo.setUserId(staffId.toString());
        userPo.setScore(String.valueOf(average));
        userInnerServiceSMO.updateUser(userPo);
        return ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
    }
}