wuxw
2025-03-28 560b781b841c18b8cb179a0603620d85536f2d9a
优化代码
11个文件已修改
400 ■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/po/owner/RepairPoolPo.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/community/RepairPoolNewV1ServiceDaoImplMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-utils/src/main/java/com/java110/utils/util/DateUtil.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-community/src/main/java/com/java110/community/cmd/ownerRepair/ListAdminOwnerRepairsCmd.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-community/src/main/java/com/java110/community/cmd/ownerRepair/ListOwnerRepairsCmd.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-community/src/main/java/com/java110/community/cmd/ownerRepair/RepairFinishCmd.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-community/src/main/java/com/java110/community/cmd/ownerRepair/RepairForceFinishCmd.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-community/src/main/java/com/java110/community/cmd/ownerRepair/SaveOwnerRepairCmd.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-community/src/main/java/com/java110/community/dao/impl/RepairServiceDaoImpl.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java
@@ -104,6 +104,15 @@
    private List<String> repairChannels;
    private String payType;
    private String doTime;
    private String warningTime;
    private String timeout;
    private String timeoutFlag;
    private String finishTime;
    //业主上传维修图片
    private List<PhotoVo> repairPhotos;
    //维修前图片
@@ -132,6 +141,8 @@
    private String endTime;
    private String notifyWay;
    private String submitHours;
    public String getRepairName() {
@@ -598,4 +609,52 @@
    public void setCommunityIds(String[] communityIds) {
        this.communityIds = communityIds;
    }
    public String getDoTime() {
        return doTime;
    }
    public void setDoTime(String doTime) {
        this.doTime = doTime;
    }
    public String getWarningTime() {
        return warningTime;
    }
    public void setWarningTime(String warningTime) {
        this.warningTime = warningTime;
    }
    public String getTimeout() {
        return timeout;
    }
    public void setTimeout(String timeout) {
        this.timeout = timeout;
    }
    public String getFinishTime() {
        return finishTime;
    }
    public void setFinishTime(String finishTime) {
        this.finishTime = finishTime;
    }
    public String getSubmitHours() {
        return submitHours;
    }
    public void setSubmitHours(String submitHours) {
        this.submitHours = submitHours;
    }
    public String getTimeoutFlag() {
        return timeoutFlag;
    }
    public void setTimeoutFlag(String timeoutFlag) {
        this.timeoutFlag = timeoutFlag;
    }
}
java110-bean/src/main/java/com/java110/po/owner/RepairPoolPo.java
@@ -32,6 +32,10 @@
    private String repairFee;
    private String payType;
    private String timeout;
    private String finishTime;
    public String getRepairId() {
        return repairId;
    }
@@ -183,4 +187,20 @@
    public void setPayType(String payType) {
        this.payType = payType;
    }
    public String getTimeout() {
        return timeout;
    }
    public void setTimeout(String timeout) {
        this.timeout = timeout;
    }
    public String getFinishTime() {
        return finishTime;
    }
    public void setFinishTime(String finishTime) {
        this.finishTime = finishTime;
    }
}
java110-db/src/main/resources/mapper/community/RepairPoolNewV1ServiceDaoImplMapper.xml
@@ -8,9 +8,11 @@
    <!-- 保存费用明细信息 add by wuxw 2018-07-03 -->
    <insert id="saveRepairPoolNewInfo" parameterType="Map">
        insert into r_repair_pool(
        repair_type,repair_obj_type,repair_id,pay_type,repair_name,repair_obj_id,appointment_time,repair_fee,context,tel,repair_channel,repair_materials,state,community_id,maintenance_type,repair_obj_name
        repair_type,repair_obj_type,repair_id,pay_type,repair_name,repair_obj_id,appointment_time,repair_fee,context,
        tel,repair_channel,repair_materials,state,community_id,maintenance_type,repair_obj_name,timeout,finish_time
        ) values (
        #{repairType},#{repairObjType},#{repairId},#{payType},#{repairName},#{repairObjId},#{appointmentTime},#{repairFee},#{context},#{tel},#{repairChannel},#{repairMaterials},#{state},#{communityId},#{maintenanceType},#{repairObjName}
        #{repairType},#{repairObjType},#{repairId},#{payType},#{repairName},#{repairObjId},#{appointmentTime},#{repairFee},#{context},
        #{tel},#{repairChannel},#{repairMaterials},#{state},#{communityId},#{maintenanceType},#{repairObjName},#{timeout},#{finishTime}
        )
    </insert>
@@ -23,7 +25,7 @@
        repairObjId,t.appointment_time,t.appointment_time appointmentTime,t.repair_fee,t.repair_fee
        repairFee,t.context,t.tel,t.repair_channel,t.repair_channel repairChannel,t.repair_materials,t.repair_materials
        repairMaterials,t.state,t.community_id,t.community_id communityId,t.maintenance_type,t.maintenance_type
        maintenanceType,t.repair_obj_name,t.repair_obj_name repairObjName
        maintenanceType,t.repair_obj_name,t.repair_obj_name repairObjName,t.timeout,t.finish_time finishTime
        from r_repair_pool t
        where 1 =1
        <if test="repairType !=null and repairType != ''">
@@ -127,19 +129,23 @@
        <if test="state !=null and state != ''">
            , t.state= #{state}
        </if>
        <if test="communityId !=null and communityId != ''">
            , t.community_id= #{communityId}
        </if>
        <if test="maintenanceType !=null and maintenanceType != ''">
            , t.maintenance_type= #{maintenanceType}
        </if>
        <if test="repairObjName !=null and repairObjName != ''">
            , t.repair_obj_name= #{repairObjName}
        </if>
        <if test="finishTime !=null and finishTime != ''">
            , t.finish_time = #{finishTime}
        </if>
        where 1=1
        <if test="repairId !=null and repairId != ''">
            and t.repair_id= #{repairId}
        </if>
        <if test="communityId !=null and communityId != ''">
            and t.community_id= #{communityId}
        </if>
    </update>
java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml
@@ -139,7 +139,9 @@
        t.repair_obj_type,t.repair_obj_id,t.repair_obj_name,t.repair_obj_type repairObjType,t.repair_obj_id repairObjId,
        t.repair_obj_name repairObjName,rrv.visit_type visitType,rrv.context visitContext,a.appraise_score
        appraiseScore, a.door_speed_score doorSpeedScore,a.repairman_service_score repairmanServiceScore,
        t.pay_type,t.pay_type payType,rs.repair_setting_type repairSettingType,rs.notify_way notifyWay,d1.name repairSettingTypeName,t.create_time createTime
        t.pay_type,t.pay_type payType,rs.repair_setting_type repairSettingType,rs.notify_way notifyWay,
        rs.do_time doTime,rs.warning_time warningTime,d1.name repairSettingTypeName,t.create_time createTime,
        t.timeout,t.finish_time finishTime
        <if test="staffId != null and staffId != ''">
            ,rru.state repairDispatchState,rru.context repairDispatchContext,td.name repairDispatchStateName
        </if>
@@ -223,6 +225,9 @@
        </if>
        <if test="endTime !=null and endTime != ''">
            and t.create_time &lt;= #{startTime}
        </if>
        <if test="timeoutFlag !=null and timeoutFlag != ''">
            and t.timeout &lt; now()
        </if>
        <if test="bId !=null and bId != ''">
            and t.b_id= #{bId}
@@ -393,6 +398,9 @@
        <if test="endTime !=null and endTime != ''">
            and t.create_time &lt;= #{endTime}
        </if>
        <if test="timeoutFlag !=null and timeoutFlag != ''">
            and t.timeout &lt; now()
        </if>
        <if test="bId !=null and bId != ''">
            and t.b_id= #{bId}
        </if>
@@ -432,7 +440,8 @@
        repairObjId,t.repair_obj_name repairObjName,t.repair_channel repairChannel,
        sru.ru_id startRuId,ru.ru_id ruId,ru.pre_ru_id preRuId,t.maintenance_type,t.maintenance_type maintenanceType,
        t.repair_channel,t.repair_channel repairChannel,t.repair_materials,t.repair_materials repairMaterials,
        t.repair_fee,t.repair_fee repairFee,t.pay_type,t.pay_type payType,t.create_time
        t.repair_fee,t.repair_fee repairFee,t.pay_type,t.pay_type payType,t.create_time,
        rs.do_time doTime,rs.warning_time warningTime,t.timeout,t.finish_time finishTime
        from r_repair_pool t
        left join t_dict d on t.state = d.status_cd and d.table_name = 'r_repair_pool' and d.table_columns = 'state'
        left join r_repair_setting rs on rs.repair_type = t.repair_type and rs.status_cd = '0'
@@ -564,7 +573,8 @@
        t.repair_obj_type,t.repair_obj_id,t.repair_obj_name,t.repair_obj_type repairObjType,t.repair_obj_id
        repairObjId,t.repair_obj_name repairObjName,t.maintenance_type,t.maintenance_type maintenanceType,
        t.repair_channel,t.repair_channel repairChannel,t.repair_materials,t.repair_materials repairMaterials,
        t.repair_fee,t.repair_fee repairFee,t.pay_type,t.pay_type payType,t.create_time
        t.repair_fee,t.repair_fee repairFee,t.pay_type,t.pay_type payType,t.create_time,
        rs.do_time doTime,rs.warning_time warningTime,t.timeout,t.finish_time finishTime
        from r_repair_pool t
        left join t_dict d on t.state = d.status_cd and d.table_name = 'r_repair_pool' and d.table_columns = 'state'
        left join r_repair_setting rs on rs.repair_type = t.repair_type and rs.status_cd = '0'
java110-utils/src/main/java/com/java110/utils/util/DateUtil.java
@@ -5,6 +5,7 @@
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.*;
/**
@@ -990,4 +991,27 @@
    public static String getPreSecTimeStr(Date time,int month) {
        return getFormatTimeStringB(getPreSecTime(time,month));
    }
    public static String calculateTimeDifference(Date start, Date end) {
        Duration duration = Duration.between(start.toInstant(), end.toInstant());
        long days = duration.toDays();
        long hours = duration.toHours() % 24;
        long minutes = duration.toMinutes() % 60;
        StringBuilder result = new StringBuilder();
        if (days > 0) {
            result.append(days).append("天");
        }
        if (hours > 0) {
            result.append(hours).append("时");
        }
        if (minutes > 0 || (days == 0 && hours == 0 && minutes == 0)) {
            result.append(minutes).append("分");
        }
        return result.toString();
    }
}
service-community/src/main/java/com/java110/community/cmd/ownerRepair/ListAdminOwnerRepairsCmd.java
@@ -20,10 +20,7 @@
import com.java110.utils.cache.MappingCache;
import com.java110.utils.constant.MappingConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.ListUtil;
import com.java110.utils.util.StringUtil;
import com.java110.utils.util.*;
import com.java110.vo.ResultVo;
import com.java110.vo.api.junkRequirement.PhotoVo;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +30,7 @@
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Java110Cmd(serviceCode = "ownerRepair.listAdminOwnerRepairs")
@@ -83,9 +81,32 @@
        }
        int count = repairInnerServiceSMOImpl.queryRepairsCount(ownerRepairDto);
        List<RepairDto> ownerRepairs = new ArrayList<>();
        List<RepairDto> repairDtos;
        if (count > 0) {
            List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(ownerRepairDto);
            repairDtos = repairInnerServiceSMOImpl.queryRepairs(ownerRepairDto);
            computeRepairScore(repairDtos);
            refreshRepair(repairDtos);
            refreshCommunityName(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();
@@ -116,16 +137,21 @@
                repairDto.setDoorSpeedScore(String.valueOf(doorSpeedScore));
                repairDto.setRepairmanServiceScore(String.valueOf(repairmanServiceScore));
                repairDto.setAverage(String.valueOf(average));
                ownerRepairs.add(repairDto);
            }
            refreshRepair(ownerRepairs);
            refreshCommunityName(ownerRepairs);
            // 计算提单时长
            finishTime = DateUtil.getCurrentDate();
            if (!StringUtil.isEmpty(repairDto.getFinishTime())) {
                finishTime = DateUtil.getDateFromStringA(repairDto.getFinishTime());
        } else {
            ownerRepairs = new ArrayList<>();
                timeout = DateUtil.getDateFromStringA(repairDto.getTimeout());
                if (finishTime.getTime() > timeout.getTime()) {
                    repairDto.setStateName(repairDto.getStateName() + "(超时)");
        }
        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, ownerRepairs);
        context.setResponseEntity(responseEntity);
            }
            submitHour = DateUtil.calculateTimeDifference(repairDto.getCreateTime(), finishTime);
            repairDto.setSubmitHours(submitHour);
        }
    }
    private void refreshCommunityName(List<RepairDto> ownerRepairs) {
service-community/src/main/java/com/java110/community/cmd/ownerRepair/ListOwnerRepairsCmd.java
@@ -16,9 +16,7 @@
import com.java110.utils.cache.MappingCache;
import com.java110.utils.constant.MappingConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.StringUtil;
import com.java110.utils.util.*;
import com.java110.vo.ResultVo;
import com.java110.vo.api.junkRequirement.PhotoVo;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +26,7 @@
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Java110Cmd(serviceCode = "ownerRepair.listOwnerRepairs")
@@ -63,21 +62,39 @@
            ownerRepairDto.setRoomIds(roomIds);
            ownerRepairDto.setRoomId("");
        }
        //todo PC电话报修、PC工单池、H5工单池
        //todo 手机端员工单工单池 只返回未处理状态的数据
        //todo 这个应该显示全部才对,之前的兄弟写的不合适 add by wuxw
//        if (!StringUtil.isEmpty(ownerRepairDto.getReqSource()) && ownerRepairDto.getReqSource().equals("mobile")) {
//            ownerRepairDto.setState(RepairDto.STATE_WAIT);
//        }
        //todo pc电话报修模块 只返回PC员工登记和手机端员工登记的数据
        if (!StringUtil.isEmpty(ownerRepairDto.getReqSource()) && ownerRepairDto.getReqSource().equals("pc_mobile")) {
        if ("pc_mobile".equals(ownerRepairDto.getReqSource())) {
            String[] repair_channel = {RepairDto.REPAIR_CHANNEL_STAFF, RepairDto.REPAIR_CHANNEL_TEL};
            ownerRepairDto.setRepairChannels(Arrays.asList(repair_channel));
        }
        int count = repairInnerServiceSMOImpl.queryRepairsCount(ownerRepairDto);
        List<RepairDto> ownerRepairs = new ArrayList<>();
        List<RepairDto> repairDtos;
        if (count > 0) {
            List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(ownerRepairDto);
            repairDtos = repairInnerServiceSMOImpl.queryRepairs(ownerRepairDto);
            computeRepairScore(repairDtos);
            refreshRepair(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();
@@ -108,14 +125,21 @@
                repairDto.setDoorSpeedScore(String.valueOf(doorSpeedScore));
                repairDto.setRepairmanServiceScore(String.valueOf(repairmanServiceScore));
                repairDto.setAverage(String.valueOf(average));
                ownerRepairs.add(repairDto);
            }
            refreshRepair(ownerRepairs);
            // 计算提单时长
            finishTime = DateUtil.getCurrentDate();
            if (!StringUtil.isEmpty(repairDto.getFinishTime())) {
                finishTime = DateUtil.getDateFromStringA(repairDto.getFinishTime());
        } else {
            ownerRepairs = new ArrayList<>();
                timeout = DateUtil.getDateFromStringA(repairDto.getTimeout());
                if (finishTime.getTime() > timeout.getTime()) {
                    repairDto.setStateName(repairDto.getStateName() + "(超时)");
        }
        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, ownerRepairs);
        context.setResponseEntity(responseEntity);
            }
            submitHour = DateUtil.calculateTimeDifference(repairDto.getCreateTime(), finishTime);
            repairDto.setSubmitHours(submitHour);
        }
    }
    private void ifHasTime(RepairDto ownerRepairDto) {
@@ -134,23 +158,29 @@
    }
    private void hasOwnerId(JSONObject reqJson) {
        if (reqJson.containsKey("ownerId") && !StringUtil.isEmpty(reqJson.getString("ownerId"))) {
        String ownerId = reqJson.getString("ownerId");
        if (StringUtil.isEmpty(ownerId)) {
            return;
        }
            OwnerDto ownerDto = new OwnerDto();
            ownerDto.setMemberId(reqJson.getString("ownerId"));
            ownerDto.setCommunityId(reqJson.getString("communityId"));
            List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto);
            if (ownerDtos != null && ownerDtos.size() > 0) {
        if (!ListUtil.isNull(ownerDtos)) {
                reqJson.put("tel", ownerDtos.get(0).getLink());
            }
        }
    }
    private void refreshRepair(List<RepairDto> ownerRepairs) {
        if (ListUtil.isNull(ownerRepairs)) {
            return;
        }
        List<String> repairIds = new ArrayList<>();
        for (RepairDto apiOwnerRepairDataVo : ownerRepairs) {
            repairIds.add(apiOwnerRepairDataVo.getRepairId());
        }
        if (repairIds.size() < 1) {
        if (ListUtil.isNull(repairIds)) {
            return;
        }
        RepairUserDto repairUserDto = new RepairUserDto();
service-community/src/main/java/com/java110/community/cmd/ownerRepair/RepairFinishCmd.java
@@ -627,8 +627,10 @@
        JSONObject businessOwnerRepair = new JSONObject();
        businessOwnerRepair.putAll(BeanConvertUtil.beanCovertMap(repairDtos.get(0)));
        businessOwnerRepair.put("state", state);
        //计算 应收金额
        RepairPoolPo repairPoolPo = BeanConvertUtil.covertBean(businessOwnerRepair, RepairPoolPo.class);
        repairPoolPo.setFinishTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        int flag = repairPoolV1InnerServiceSMOImpl.updateRepairPoolNew(repairPoolPo);
        if (flag < 1) {
            throw new CmdException("修改工单失败");
service-community/src/main/java/com/java110/community/cmd/ownerRepair/RepairForceFinishCmd.java
@@ -441,6 +441,7 @@
        businessOwnerRepair.put("maintenanceType", paramInJson.getString("maintenanceType"));
        //计算 应收金额
        RepairPoolPo repairPoolPo = BeanConvertUtil.covertBean(businessOwnerRepair, RepairPoolPo.class);
        repairPoolPo.setFinishTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        int flag = repairPoolV1InnerServiceSMOImpl.updateRepairPoolNew(repairPoolPo);
        if (flag < 1) {
            throw new CmdException("修改工单失败");
service-community/src/main/java/com/java110/community/cmd/ownerRepair/SaveOwnerRepairCmd.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.annotation.Java110Transactional;
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;
@@ -14,11 +15,13 @@
import com.java110.dto.file.FileDto;
import com.java110.dto.file.FileRelDto;
import com.java110.dto.repair.RepairDto;
import com.java110.dto.repair.RepairSettingDto;
import com.java110.dto.repair.RepairUserDto;
import com.java110.dto.user.UserDto;
import com.java110.intf.common.IFileInnerServiceSMO;
import com.java110.intf.common.IFileRelInnerServiceSMO;
import com.java110.intf.community.IRepairPoolV1InnerServiceSMO;
import com.java110.intf.community.IRepairSettingV1InnerServiceSMO;
import com.java110.intf.community.IRepairUserV1InnerServiceSMO;
import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
import com.java110.intf.fee.IFeeInnerServiceSMO;
@@ -32,17 +35,16 @@
import com.java110.utils.constant.FeeTypeConstant;
import com.java110.utils.constant.MappingConstant;
import com.java110.utils.exception.CmdException;
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.utils.util.*;
import com.java110.vo.ResultVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
/**
 * 业主提交报修 功能
 * 请求地址为/app/ownerRepair.saveOwnerRepair
@@ -113,6 +115,9 @@
    @Autowired
    private INotepadV1InnerServiceSMO notepadV1InnerServiceSMOImpl;
    @Autowired
    private IRepairSettingV1InnerServiceSMO repairSettingV1InnerServiceSMOImpl;
    //域
    public static final String DOMAIN_COMMON = "DOMAIN.COMMON";
@@ -132,8 +137,7 @@
        Assert.hasKeyAndValue(reqJson, "context", "必填,请填写报修内容");
        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区ID");
        String userId = context.getReqHeaders().get("user-id");
        Assert.hasLength(userId, "请填写提交用户ID");
        String userId = CmdContextUtils.getUserId(context);
        UserDto userDto = new UserDto();
        userDto.setUserId(userId);
        userDto.setPage(1);
@@ -143,22 +147,13 @@
        reqJson.put("userId", userDtos.get(0).getUserId());
        reqJson.put("userName", userDtos.get(0).getName());
    }
    @Override
    @Java110Transactional
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
        //获取当前小区id
        String communityId = reqJson.getString("communityId");
        //查询默认费用项
        FeeConfigDto feeConfigDto = new FeeConfigDto();
        feeConfigDto.setCommunityId(communityId);
        feeConfigDto.setCommunityId(reqJson.getString("communityId"));
        feeConfigDto.setFeeTypeCd(FeeTypeConstant.FEE_TYPE_REPAIR);
        feeConfigDto.setIsDefault(FeeConfigDto.DEFAULT_FEE_CONFIG);
        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
        if (feeConfigDtos.size() != 1) {
            ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_BUSINESS_VERIFICATION, "默认维修费用有多条或不存在!");
            context.setResponseEntity(responseEntity);
        if (ListUtil.isNull(feeConfigDtos)) {
            return;
        }
        FeeDto feeDto = new FeeDto();
@@ -167,18 +162,39 @@
        feeDto.setState(FeeDto.STATE_DOING);
        //查询报修业主处理中的报修费
        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
        //取出开关映射的值(报修业主未处理费用条数)
        String repairFeeNumber = MappingCache.getValue(MappingConstant.REPAIR_DOMAIN, REPAIR_FEE_NUMBER);
        if (feeDtos != null && StringUtil.isInteger(repairFeeNumber) && feeDtos.size() >= Integer.parseInt(repairFeeNumber)) {
            ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_BUSINESS_VERIFICATION, "该房屋存在" + Integer.parseInt(repairFeeNumber) + "条未处理的费用,请缴费后再进行报修!");
            context.setResponseEntity(responseEntity);
        if (ListUtil.isNull(feeDtos)) {
            return;
        }
        JSONObject businessOwnerRepair = new JSONObject();
        businessOwnerRepair.putAll(reqJson);
        businessOwnerRepair.put("repairId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_repairId));
        businessOwnerRepair.put("state", RepairDto.STATE_WAIT);
        RepairPoolPo repairPoolPo = BeanConvertUtil.covertBean(businessOwnerRepair, RepairPoolPo.class);
        //取出开关映射的值(报修业主未处理费用条数)
        String repairFeeNumber = MappingCache.getValue(MappingConstant.REPAIR_DOMAIN, REPAIR_FEE_NUMBER);
        if (!StringUtil.isInteger(repairFeeNumber)) {
            return;
        }
        if (feeDtos.size() >= Integer.parseInt(repairFeeNumber)) {
            throw new CmdException("该房屋存在" + Integer.parseInt(repairFeeNumber) + "条未处理的费用,请缴费后再进行报修!");
        }
    }
    @Override
    @Java110Transactional
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
        RepairSettingDto repairSettingDto = new RepairSettingDto();
        repairSettingDto.setCommunityId(reqJson.getString("communityId"));
        repairSettingDto.setRepairType(reqJson.getString("repairType"));
        List<RepairSettingDto> repairSettingDtos = repairSettingV1InnerServiceSMOImpl.queryRepairSettings(repairSettingDto);
        if (ListUtil.isNull(repairSettingDtos)) {
            throw new CmdException("报销刘类型不存在");
        }
        RepairPoolPo repairPoolPo = BeanConvertUtil.covertBean(reqJson, RepairPoolPo.class);
        repairPoolPo.setRepairId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_repairId));
        repairPoolPo.setState(RepairDto.STATE_WAIT);
        String appointmentTime = repairPoolPo.getAppointmentTime();
        Date sAppTime = DateUtil.getDateFromStringA(appointmentTime);
        String timeout = DateUtil.getAddHoursStringA(sAppTime, repairSettingDtos.get(0).getDoTime());
        repairPoolPo.setTimeout(timeout);
        int flag = repairPoolV1InnerServiceSMOImpl.saveRepairPoolNew(repairPoolPo);
        if (flag < 1) {
            throw new CmdException("修改失败");
@@ -192,7 +208,7 @@
        repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_START_USER);
        repairUserPo.setStaffId(reqJson.getString("userId"));
        repairUserPo.setStaffName(reqJson.getString("userName"));
        repairUserPo.setRepairId(businessOwnerRepair.getString("repairId"));
        repairUserPo.setRepairId(repairPoolPo.getRepairId());
        repairUserPo.setState(RepairUserDto.STATE_SUBMIT);
        repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        repairUserPo.setRuId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ruId));
@@ -200,8 +216,25 @@
        if (flag < 1) {
            throw new CmdException("修改用户失败");
        }
        if (reqJson.containsKey("photos") && !StringUtils.isEmpty(reqJson.getString("photos"))) {
        saveRepairPhoto(reqJson, repairPoolPo.getRepairId());
        if (StringUtil.jsonHasKayAndValue(reqJson, "noteId")) {
            NotepadPo notepadPo = new NotepadPo();
            notepadPo.setNoteId(reqJson.getString("noteId"));
            notepadPo.setThridId(repairPoolPo.getRepairId());
            flag = notepadV1InnerServiceSMOImpl.updateNotepad(notepadPo);
            if (flag < 1) {
                throw new CmdException("修改业主反馈失败");
            }
        }
    }
    private void saveRepairPhoto(JSONObject reqJson, String repairId) {
        int flag;
            JSONArray photos = reqJson.getJSONArray("photos");
        if (ListUtil.isNull(photos)) {
            return;
        }
            for (int _photoIndex = 0; _photoIndex < photos.size(); _photoIndex++) {
                String _photo = photos.getString(_photoIndex);
                if(_photo.length()> 512){
@@ -217,7 +250,7 @@
                businessUnit.put("fileRelId", GenerateCodeFactory.getGeneratorId("12"));
                businessUnit.put("relTypeCd", FileRelDto.REL_TYPE_CD_REPAIR);
                businessUnit.put("saveWay", "ftp");
                businessUnit.put("objId", businessOwnerRepair.getString("repairId"));
            businessUnit.put("objId", repairId);
                businessUnit.put("fileRealName", _photo.toString());
                businessUnit.put("fileSaveName", _photo.toString());
                FileRelPo fileRelPo = BeanConvertUtil.covertBean(businessUnit, FileRelPo.class);
@@ -226,16 +259,6 @@
                    throw new CmdException("保存图片失败");
                }
            }
        }
        if (StringUtil.jsonHasKayAndValue(reqJson, "noteId")) {
            NotepadPo notepadPo = new NotepadPo();
            notepadPo.setNoteId(reqJson.getString("noteId"));
            notepadPo.setThridId(repairPoolPo.getRepairId());
            flag = notepadV1InnerServiceSMOImpl.updateNotepad(notepadPo);
            if (flag < 1) {
                throw new CmdException("修改业主反馈失败");
            }
        }
    }
}
service-community/src/main/java/com/java110/community/dao/impl/RepairServiceDaoImpl.java
@@ -6,6 +6,7 @@
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.DAOException;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.ListUtil;
import org.slf4j.Logger;
import com.java110.core.log.LoggerFactory;
import org.springframework.stereotype.Service;
@@ -50,8 +51,8 @@
    @Override
    public List<Map> getBusinessRepairInfo(Map info) throws DAOException {
        logger.debug("查询报修信息信息 入参 info : {}", info);
        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.getBusinessRepairInfo", info);
        return businessRepairInfos;
        List<Map> infos = sqlSessionTemplate.selectList("repairServiceDaoImpl.getBusinessRepairInfo", info);
        return infos;
    }
    /**
@@ -107,45 +108,45 @@
    @Override
    public int queryRepairsCount(Map info) {
        logger.debug("查询报修信息数据 入参 info : {}", info);
        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.queryRepairsCount", info);
        if (businessRepairInfos.size() < 1) {
        List<Map> infos = sqlSessionTemplate.selectList("repairServiceDaoImpl.queryRepairsCount", info);
        if (ListUtil.isNull(infos)) {
            return 0;
        }
        return Integer.parseInt(businessRepairInfos.get(0).get("count").toString());
        return Integer.parseInt(infos.get(0).get("count").toString());
    }
    @Override
    public List<Map> getStaffRepairInfo(Map info) throws DAOException {
        logger.debug("查询报修信息信息 入参 info : {}", info);
        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.getStaffRepairInfo", info);
        return businessRepairInfos;
        List<Map> infos = sqlSessionTemplate.selectList("repairServiceDaoImpl.getStaffRepairInfo", info);
        return infos;
    }
    @Override
    public int queryStaffRepairsCount(Map info) {
        logger.debug("查询报修信息数据 入参 info : {}", info);
        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.queryStaffRepairsCount", info);
        if (businessRepairInfos.size() < 1) {
        List<Map> infos = sqlSessionTemplate.selectList("repairServiceDaoImpl.queryStaffRepairsCount", info);
        if (ListUtil.isNull(infos)) {
            return 0;
        }
        return Integer.parseInt(businessRepairInfos.get(0).get("count").toString());
        return Integer.parseInt(infos.get(0).get("count").toString());
    }
    @Override
    public List<Map> getStaffFinishRepairInfo(Map info) throws DAOException {
        logger.debug("查询报修信息信息 入参 info : {}", info);
        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.getStaffFinishRepairInfo", info);
        return businessRepairInfos;
        List<Map> infos = sqlSessionTemplate.selectList("repairServiceDaoImpl.getStaffFinishRepairInfo", info);
        return infos;
    }
    @Override
    public int queryStaffFinishRepairsCount(Map info) {
        logger.debug("查询报修信息数据 入参 info : {}", info);
        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.queryStaffFinishRepairsCount", info);
        if (businessRepairInfos.size() < 1) {
        List<Map> infos = sqlSessionTemplate.selectList("repairServiceDaoImpl.queryStaffFinishRepairsCount", info);
        if (ListUtil.isNull(infos)) {
            return 0;
        }
        return Integer.parseInt(businessRepairInfos.get(0).get("count").toString());
        return Integer.parseInt(infos.get(0).get("count").toString());
    }
}