Browse Source

no message

FengChaoYu 4 months ago
parent
commit
ef0b363c88

+ 19 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/workorder/PgAppraiseApplyBean.java

@@ -0,0 +1,19 @@
+package com.gree.mall.manager.bean.workorder;
+
+import com.gree.mall.manager.plus.entity.PgAppraiseApply;
+import com.gree.mall.manager.plus.entity.PgAppraiseApplyItem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class PgAppraiseApplyBean extends PgAppraiseApply {
+
+    @ApiModelProperty(value = "明细")
+    List<PgAppraiseApplyItem> items;
+}

+ 129 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/workorder/PgAppraiseApplyVO.java

@@ -0,0 +1,129 @@
+package com.gree.mall.manager.bean.workorder;
+
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.IsEnum;
+import com.gree.mall.manager.enums.workorder.AppraiseOnusEnum;
+import com.gree.mall.manager.enums.workorder.AppraiseSourceEnum;
+import com.gree.mall.manager.enums.workorder.AppraiseStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel
+@ZfireField(tbName = "a")
+public class PgAppraiseApplyVO {
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "工单编号")
+    private String orderBaseId;
+
+    @ApiModelProperty(value = "工单类型")
+    private String orderSmallTypeText;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "商户id")
+    private String companyWechatId;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "商户名称")
+    private String companyWechatName;
+
+    @ApiModelProperty(value = "网点名称")
+    private String websitName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "网点编号")
+    private String websitId;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "主要师傅id")
+    private String workerId;
+
+    @ApiModelProperty(value = "师傅名称")
+    private String workerName;
+
+    @ApiModelProperty(value = "师傅编号")
+    private String workerNumber;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "师傅电话")
+    private String workerMobile;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "师傅身份证")
+    private String workerIdcard;
+
+    @ApiModelProperty(value = "完工时间")
+    private Date overTime;
+
+    @ApiModelProperty(value = "首次评价")
+    private AppraiseStatusEnum appraiseStatus;
+
+    @ApiModelProperty(value = "首次评价内容")
+    private String appraiseContent;
+
+    @ApiModelProperty(value = "评价来源")
+    private AppraiseSourceEnum appraiseSource;
+
+    @ApiModelProperty(value = "二次申诉")
+    private IsEnum isSecond;
+
+    @ApiModelProperty(value = "申诉理由")
+    private String reason;
+
+    @ApiModelProperty(value = "申诉发起人")
+    private String applyBy;
+
+    @ApiModelProperty(value = "申诉时间")
+    private Date applyTime;
+
+    @ApiModelProperty(value = "审核结果 ")
+    private String examineResult;
+
+    @ApiModelProperty(value = "中心判定网点 ALL=全责 NOT=无责 HALF=半责")
+    private AppraiseOnusEnum websitResult;
+
+    @ApiModelProperty(value = "中心判定服务人员 ALL=全责 NOT=无责 HALF=半责")
+    private AppraiseOnusEnum workerResult;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "问题大类id")
+    private String parentCategoryId;
+
+    @ApiModelProperty(value = "问题大类")
+    private String parentCategoryName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "问题小类id")
+    private String categoryId;
+
+    @ApiModelProperty(value = "问题小类")
+    private String categoryName;
+
+    @ApiModelProperty(value = "网点是否引导用户接听400回访电话")
+    private IsEnum isWebsitCall;
+
+    @ApiModelProperty(value = "信息部审核时间")
+    private Date infoConfirmTime;
+
+    @ApiModelProperty(value = "结算组审核时间")
+    private Date settleConfirmTime;
+
+    @ApiModelProperty(value = "驳回不可再申诉操作人")
+    private String closeBy;
+
+    @ApiModelProperty(value = "驳回不可再申诉操作时间")
+    private Date closeTime;
+
+    @ApiModelProperty(value = "驳回可重申诉操作人")
+    private String rejectBy;
+
+    @ApiModelProperty(value = "驳回可重申诉操作时间")
+    private Date rejectTime;
+}

+ 2 - 0
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/CommonMapper.java

@@ -739,4 +739,6 @@ public interface CommonMapper {
     IPage<WorkerTeamVO> workerTeamPage(Page page, @Param("ex") ZfireParamBean zfireParamBean, @Param("workerId") String workerId);
 
     IPage<PgAppraiseCategoryVO> appraiseCategoryList(Page page, @Param("ex") ZfireParamBean zfireParamBean);
+
+    IPage<PgAppraiseApplyVO> appraiseApplyList(Page page, @Param("ex") ZfireParamBean zfireParamBean);
 }

+ 78 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/workerorder/AppraiseApplyController.java

@@ -4,6 +4,8 @@ import cn.hutool.core.lang.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.annotation.ZfireList;
+import com.gree.mall.manager.bean.workorder.PgAppraiseApplyBean;
+import com.gree.mall.manager.bean.workorder.PgAppraiseApplyVO;
 import com.gree.mall.manager.bean.workorder.PgAppraiseCategoryVO;
 import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.exception.RemoteServiceException;
@@ -12,14 +14,18 @@ import com.gree.mall.manager.logic.workorder.AppraiseRelaLogic;
 import com.gree.mall.manager.plus.entity.PgAppraiseCategory;
 import com.gree.mall.manager.plus.entity.PgAppraiseConfig;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.integration.redis.util.RedisLockRegistry;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
@@ -42,6 +48,13 @@ public class AppraiseApplyController {
         return ResponseHelper.success(config);
     }
 
+    @PostMapping("/config/save")
+    @ApiOperation(value = "评价配置-保存")
+    public ResponseHelper configSave(PgAppraiseConfig config) {
+        appraiseRelaLogic.configSave(config);
+        return ResponseHelper.success();
+    }
+
     @ZfireList
     @PostMapping("/category/list")
     @ApiOperation(value = "评价问题类型-列表")
@@ -52,6 +65,13 @@ public class AppraiseApplyController {
         return ResponseHelper.success(vo, new TypeReference<PgAppraiseCategoryVO>() {});
     }
 
+    @PostMapping("/category/detail")
+    @ApiOperation(value = "评价问题类型-详情")
+    public ResponseHelper<PgAppraiseCategory> categoryDetail(String id) {
+        PgAppraiseCategory detail = appraiseRelaLogic.categoryDetail(id);
+        return ResponseHelper.success(detail);
+    }
+
     @PostMapping("/category/save")
     @ApiOperation(value = "评价问题类型-保存")
     public ResponseHelper categorySave(PgAppraiseCategory category) {
@@ -76,4 +96,62 @@ public class AppraiseApplyController {
 
         return ResponseHelper.success();
     }
+
+    @ZfireList
+    @PostMapping("/apply/list")
+    @ApiOperation(value = "评价申诉-列表")
+    public ResponseHelper<Page<PgAppraiseApplyVO>> applyList(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<PgAppraiseApplyVO> vo = appraiseRelaLogic.applyList(zfireParamBean);
+        return ResponseHelper.success(vo, new TypeReference<PgAppraiseApplyVO>() {});
+    }
+
+    @PostMapping("/apply/list/export")
+    @ApiOperation(value = "评价申诉-导出")
+    public void listExport(@RequestBody ZfireParamBean zfireParamBean, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        //2.查询要导出的内容
+        IPage<PgAppraiseApplyVO> page = appraiseRelaLogic.applyList(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(page.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+    @PostMapping("/apply/detail")
+    @ApiOperation(value = "评价申诉-详情")
+    public ResponseHelper<PgAppraiseApplyBean> applyDetail(String id) {
+        PgAppraiseApplyBean detail = appraiseRelaLogic.applyDetail(id);
+        return ResponseHelper.success(detail);
+    }
+
+    @PostMapping("/apply/submit")
+    @ApiOperation(value = "评价申诉-提交")
+    public ResponseHelper applySubmit(@RequestBody PgAppraiseApplyBean bean) {
+        appraiseRelaLogic.applySubmit(bean);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/apply/confirm")
+    @ApiOperation(value = "评价申诉-审核")
+    public ResponseHelper applyConfirm(@RequestBody PgAppraiseApplyBean bean) {
+        appraiseRelaLogic.applyConfirm(bean);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/batch/update/reset")
+    @ApiOperation(value = "评价申诉-驳回可重申诉")
+    public ResponseHelper batchUpdateReset(
+            @ApiParam(value = "id", required = true) @RequestParam List<String> ids
+    ) throws Exception {
+        appraiseRelaLogic.batchUpdateReset(ids);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/batch/update/end")
+    @ApiOperation(value = "评价申诉-驳回不可再申诉")
+    public ResponseHelper batchUpdateEnd(
+            @ApiParam(value = "id", required = true) @RequestParam List<String> ids
+    ) throws Exception {
+        appraiseRelaLogic.batchUpdateEnd(ids);
+        return ResponseHelper.success();
+    }
 }

+ 23 - 0
mall-server-api/src/main/java/com/gree/mall/manager/enums/workorder/AppraiseOnusEnum.java

@@ -0,0 +1,23 @@
+package com.gree.mall.manager.enums.workorder;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.manager.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum AppraiseOnusEnum implements BaseEnum {
+
+    NOT("NOT","无责"),
+    ALL("ALL","全责"),
+    HALF("HALF","半责"),;
+
+    @JsonValue
+    @EnumValue
+    private final String key;
+    private final String remark;
+
+}

+ 102 - 5
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/AppraiseRelaLogic.java

@@ -4,15 +4,15 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.bean.workorder.PgAppraiseApplyBean;
+import com.gree.mall.manager.bean.workorder.PgAppraiseApplyVO;
 import com.gree.mall.manager.bean.workorder.PgAppraiseCategoryVO;
 import com.gree.mall.manager.commonmapper.CommonMapper;
+import com.gree.mall.manager.enums.workorder.AppraiseConfigTypeEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
-import com.gree.mall.manager.plus.entity.PgAppraiseCategory;
-import com.gree.mall.manager.plus.entity.PgAppraiseConfig;
-import com.gree.mall.manager.plus.service.PgAppraiseApplyService;
-import com.gree.mall.manager.plus.service.PgAppraiseCategoryService;
-import com.gree.mall.manager.plus.service.PgAppraiseConfigService;
+import com.gree.mall.manager.plus.entity.*;
+import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.utils.CommonUtils;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
@@ -20,6 +20,7 @@ import com.gree.mall.manager.zfire.util.FieldUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -36,6 +37,8 @@ public class AppraiseRelaLogic {
     private final PgAppraiseConfigService pgAppraiseConfigService;
     private final PgAppraiseCategoryService pgAppraiseCategoryService;
     private final PgAppraiseApplyService pgAppraiseApplyService;
+    private final PgAppraiseApplyItemService pgAppraiseApplyItemService;
+    private final PgOrderBaseService pgOrderBaseService;
 
     public List<PgAppraiseConfig> configList() {
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -44,12 +47,20 @@ public class AppraiseRelaLogic {
                 .list();
     }
 
+    public void configSave(PgAppraiseConfig config) {
+        config.updateById();
+    }
+
     public IPage<PgAppraiseCategoryVO> categoryList(ZfireParamBean zfireParamBean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
         FieldUtils.supplyParam(zfireParamBean, PgAppraiseCategoryVO.class, adminUser);
         return commonMapper.appraiseCategoryList(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
     }
 
+    public PgAppraiseCategory categoryDetail(String id) {
+        return pgAppraiseCategoryService.getById(id);
+    }
+
     @Transactional
     public void categorySave(PgAppraiseCategory category) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -146,4 +157,90 @@ public class AppraiseRelaLogic {
             }
         }
     }
+
+    public IPage<PgAppraiseApplyVO> applyList(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.supplyParam(zfireParamBean, PgAppraiseCategoryVO.class, adminUser);
+        return commonMapper.appraiseApplyList(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+    }
+
+
+    public PgAppraiseApplyBean applyDetail(String id) {
+        final PgAppraiseApply apply = pgAppraiseApplyService.getById(id);
+        PgAppraiseApplyBean bean = new PgAppraiseApplyBean();
+        BeanUtils.copyProperties(apply, bean);
+        final List<PgAppraiseApplyItem> items = pgAppraiseApplyItemService.lambdaQuery()
+                .eq(PgAppraiseApplyItem::getPgAppraiseApplyId, id)
+                .list();
+        bean.setItems(items);
+        return bean;
+    }
+
+    @Transactional
+    public void applySubmit(PgAppraiseApplyBean bean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        if (StringUtils.isBlank(bean.getOrderBaseId())) {
+            throw new RemoteServiceException("工单编号不能为空");
+        }
+        if (StringUtils.isBlank(bean.getReason())) {
+            throw new RemoteServiceException("申诉理由不能为空");
+        }
+        final PgOrderBase orderBase = pgOrderBaseService.getById(bean.getOrderBaseId());
+
+        final Integer applyCount = pgAppraiseApplyService.lambdaQuery()
+                .eq(PgAppraiseApply::getIsSecond, true)
+                .eq(PgAppraiseApply::getOrderBaseId, bean.getOrderBaseId())
+                .count();
+
+        // 查询有没有驳回不可申诉人
+        final Integer superEndCount = pgAppraiseApplyService.lambdaQuery()
+                .eq(PgAppraiseApply::getOrderBaseId, bean.getOrderBaseId())
+                .isNotNull(PgAppraiseApply::getRejectTime)
+                .count();
+
+        if (superEndCount > 0) {
+            throw new RemoteServiceException("不可再申诉");
+        }
+
+        // 查询有没有驳回可重诉人
+        final Integer superCount = pgAppraiseApplyService.lambdaQuery()
+                .eq(PgAppraiseApply::getOrderBaseId, bean.getOrderBaseId())
+                .isNotNull(PgAppraiseApply::getRejectTime)
+                .count();
+
+        // 有驳回可重诉人忽略申诉配置
+        if (superCount == 0) {
+            // 1、完工时间超过配置时间的,不可再提交;
+            if (applyCount == 0) {
+                // 首次申诉
+                final PgAppraiseConfig config = pgAppraiseConfigService.lambdaQuery()
+                        .eq(PgAppraiseConfig::getCompanyWechatId, orderBase.getCompanyWechatId())
+                        .eq(PgAppraiseConfig::getType, AppraiseConfigTypeEnum.FIRST_A.getKey())
+                        .one();
+
+
+            }
+        }
+//        pgOrderBaseService.lambdaQuery()
+//                .eq()
+
+        //2、该工单已有中差评申诉数据的,不可再提交;(含待申诉、已申诉、待审核状态的,均不可再创建申诉)
+        //
+        //
+//        pgAppraiseApplyService.lambdaQuery()
+//                .eq(Pg)
+//                .eq()
+//                .count()
+    }
+
+    public void applyConfirm(PgAppraiseApplyBean bean) {
+    }
+
+    public void batchUpdateReset(List<String> ids) {
+    }
+
+    public void batchUpdateEnd(List<String> ids) {
+    }
+
+
 }

+ 18 - 0
mall-server-api/src/main/resources/mapper/CommonMapper.xml

@@ -1579,5 +1579,23 @@
         ${ex.orderBy}
     </select>
 
+    <select id="appraiseApplyList" resultType="com.gree.mall.manager.bean.workorder.PgAppraiseApplyVO">
+        SELECT
+            ${ex.selected}
+        FROM
+            pg_appraise_apply a
+        ${ex.query}
+        <if test="ex.adminWebsitIds != null and ex.adminWebsitIds.size > 0">
+            AND a.websit_id IN
+            <foreach item="item" index="index" collection="ex.adminWebsitIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.create_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+
 
 </mapper>