Explorar o código

移动端旧件返还

FengChaoYu hai 8 meses
pai
achega
3442652e15

+ 104 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/material/parts/OldRefundController.java

@@ -0,0 +1,104 @@
+package com.gree.mall.miniapp.controller.material.parts;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gree.mall.miniapp.bean.material.parts.OldRefundManageBean;
+import com.gree.mall.miniapp.exception.RemoteServiceException;
+import com.gree.mall.miniapp.helper.ResponseHelper;
+import com.gree.mall.miniapp.logic.material.parts.OldRefundManageLogic;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@RestController
+@Api(value = "旧件返还管理", tags = {"旧件返还管理"})
+@RequestMapping(value = "/app/worker/old-refund", produces = "application/json; charset=utf-8")
+public class OldRefundController {
+
+    @Resource
+    OldRefundManageLogic oldRefundManageLogic;
+    @Resource
+    RedisLockRegistry redisLockRegistry;
+
+
+    @ApiOperation(value = "旧件返还管理列表")
+    @PostMapping("/list")
+    public ResponseHelper<IPage<OldRefundManageBean>> appList(
+            @ApiParam(value = "申请单号") @RequestParam(required = false) String applyNo,
+            @ApiParam(value = "维修标识 INNER=保内 OUTSIDE=保外") @RequestParam(required = false) String repairFlag,
+            @ApiParam(value = "单据状态 SAVE=保存 SUBMIT=提交 AGREE=通过 REJECT=驳回 REFUNDED=已返还") @RequestParam(required = false) String flag,
+            @ApiParam(value = "师傅身份证", required = true) @RequestParam String identity,
+            @ApiParam(value = "配件编码") @RequestParam(required = false) String partsNumber,
+            @ApiParam(value = "页号", required = true) @RequestParam Integer pageNo,
+            @ApiParam(value = "页大小", required = true) @RequestParam Integer pageSize
+    ) throws RemoteServiceException {
+        return ResponseHelper.success(oldRefundManageLogic.appList(applyNo, repairFlag, flag, identity, partsNumber, pageNo, pageSize));
+    }
+
+    @ApiOperation(value = "旧件返还管理详情")
+    @PostMapping("/detail")
+    public ResponseHelper detail(
+            @ApiParam(value = "申请单号", required = true) @RequestParam String applyNo
+    ) throws RemoteServiceException {
+        return ResponseHelper.success(oldRefundManageLogic.detail(applyNo));
+    }
+
+
+//    @ApiOperation(value = "PHP旧件返还申请")
+//    @PostMapping("/add")
+//    public ResponseHelper add(
+//            @RequestBody PHPOldRefundManageBean oldRefundManageBean
+//    ) throws Exception {
+//        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.NEW_REFUND + "add");
+//        try {
+//            if (obtain.tryLock(10, TimeUnit.SECONDS)) {
+//                // 校验
+//                ValidateUtil.validate(oldRefundManageBean, ValidGroup.Add.class);
+//                for (PHPOldRefundManageItemBean itemBean : oldRefundManageBean.getOldRefundManageItemBeanList()) {
+//                    try {
+//                        ValidateUtil.validate(itemBean, ValidGroup.Add.class);
+//                    } catch (ValidationException e) {
+//                        throw new RemoteServiceException("明细出错原因:" + e.getMessage());
+//                    }
+//                }
+//
+//                return ResponseHelper.success(oldRefundManageLogic.add(oldRefundManageBean));
+//            }
+//        } catch(Exception e) {
+//            log.error("【旧件返还提交处理】失败",e);
+//            throw e;
+//        } finally {
+//            obtain.unlock();
+//        }
+//        return ResponseHelper.error("");
+//    }
+
+//    @PostMapping("/add")
+//    @ApiOperation(value = "旧件返还申请")
+//    public ResponseHelper add(
+//            @RequestBody OldRefundManageBean oldRefundManageBean
+//    ) throws Exception {
+//        // 校验
+//        ValidateUtil.validate(oldRefundManageBean, ValidGroup.Add.class);
+//        for (OldRefundManageItemBean itemBean : oldRefundManageBean.getOldRefundManageItemBeanList()) {
+//            try {
+//                ValidateUtil.validate(itemBean, ValidGroup.Add.class);
+//            } catch (ValidationException e) {
+//                throw new RemoteServiceException("明细出错原因:" + e.getMessage());
+//            }
+//        }
+//
+//        return ResponseHelper.success(oldRefundManageLogic.add(oldRefundManageBean));
+//    }
+
+
+
+}

+ 21 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/enums/material/PartsApplyCategoryEnum.java

@@ -0,0 +1,21 @@
+package com.gree.mall.miniapp.enums.material;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.miniapp.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum PartsApplyCategoryEnum implements BaseEnum {
+    HOME("HOME","家用空调"),
+    TRADE("TRADE","商用空调"),
+    ELEC("ELEC","生活电器(小家电)"),;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+}

+ 27 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/enums/material/PartsApplyTypeEnum.java

@@ -0,0 +1,27 @@
+package com.gree.mall.miniapp.enums.material;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.baomidou.mybatisplus.annotation.IEnum;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.miniapp.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum PartsApplyTypeEnum implements BaseEnum, IEnum<Integer> {
+    NORMAL("0","普通申请"),
+    URGENCY("1","急件申请"),
+    BAK("2","备件申请"),;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+
+    @Override
+    public Integer getValue() {
+        return Integer.parseInt(key);
+    }
+}

+ 25 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/enums/material/PartsRefundApplyTypeEnum.java

@@ -0,0 +1,25 @@
+package com.gree.mall.miniapp.enums.material;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.miniapp.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum PartsRefundApplyTypeEnum implements BaseEnum {
+    NEW("NEW","新件返还"),
+    LOST("LOST","破损返还"),
+    BUG("BUG","故障返还"),
+    OLD("OLD","旧件返还"),
+    NOT("NOT","无件返还"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+
+    private final String remark;
+}

+ 21 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/enums/material/PartsRepairFlagEnum.java

@@ -0,0 +1,21 @@
+package com.gree.mall.miniapp.enums.material;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.miniapp.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum PartsRepairFlagEnum implements BaseEnum {
+    INNER("INNER","保内"),
+    OUTSIDE("OUTSIDE","保外"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+}

+ 105 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/material/parts/OldRefundManageLogic.java

@@ -0,0 +1,105 @@
+package com.gree.mall.miniapp.logic.material.parts;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.miniapp.bean.material.parts.OldRefundManageBean;
+import com.gree.mall.miniapp.bean.material.parts.OldRefundManageItemBean;
+import com.gree.mall.miniapp.bean.material.parts.OldRefundManageRecordBean;
+import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
+import com.gree.mall.miniapp.commonmapper.MaterialMapper;
+import com.gree.mall.miniapp.enums.base.BaseEnum;
+import com.gree.mall.miniapp.enums.material.*;
+import com.gree.mall.miniapp.exception.RemoteServiceException;
+import com.gree.mall.miniapp.logic.common.CommonLogic;
+import com.gree.mall.miniapp.plus.entity.WebsitPartsOldRefundManage;
+import com.gree.mall.miniapp.plus.entity.WebsitPartsOldRefundManageItem;
+import com.gree.mall.miniapp.plus.entity.WebsitPartsOldRefundManageRecord;
+import com.gree.mall.miniapp.plus.service.WebsitPartsOldRefundManageItemService;
+import com.gree.mall.miniapp.plus.service.WebsitPartsOldRefundManageRecordService;
+import com.gree.mall.miniapp.plus.service.WebsitPartsOldRefundManageService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+@Slf4j
+public class OldRefundManageLogic {
+
+    @Resource
+    CommonLogic commonLogic;
+    @Resource
+    MaterialMapper materialMapper;
+    @Resource
+    WebsitPartsOldRefundManageService websitPartsOldRefundManageService;
+    @Resource
+    WebsitPartsOldRefundManageItemService websitPartsOldRefundManageItemService;
+    @Resource
+    WebsitPartsOldRefundManageRecordService websitPartsOldRefundManageRecordService;
+
+    public IPage<OldRefundManageBean> appList(String applyNo, String repairFlag, String flag, String identity, String partsNumber, Integer pageNo, Integer pageSize) {
+        CurrentCompanyWechat wechat = commonLogic.getCurrentCompanyWechat();
+        IPage<OldRefundManageBean> page = materialMapper.appOldRefundList(new Page(pageNo, pageSize), wechat.getCompanyWechatId(), applyNo, repairFlag, flag, identity, partsNumber);
+        return page;
+    }
+
+    public Object detail(String applyNo) {
+        WebsitPartsOldRefundManage partsOldRefundManage = websitPartsOldRefundManageService.getById(applyNo);
+        if (Objects.isNull(partsOldRefundManage)) {
+            throw new RemoteServiceException("单据不存在");
+        }
+        List<WebsitPartsOldRefundManageItem> partsOldRefundManageItems = websitPartsOldRefundManageItemService.lambdaQuery()
+                .eq(WebsitPartsOldRefundManageItem::getApplyNo, applyNo)
+                .list();
+
+        OldRefundManageBean oldRefundManageBean = new OldRefundManageBean();
+        BeanUtils.copyProperties(partsOldRefundManage, oldRefundManageBean);
+        if (Objects.nonNull(oldRefundManageBean.getApplyCategory()))
+            oldRefundManageBean.setApplyCategoryName(BaseEnum.keyToEnumNotNull(PartsApplyCategoryEnum.class, oldRefundManageBean.getApplyCategory()).getRemark());
+        if (Objects.nonNull(oldRefundManageBean.getApplyType()))
+            oldRefundManageBean.setApplyType(BaseEnum.keyToEnumNotNull(PartsRefundApplyTypeEnum.class, oldRefundManageBean.getApplyType()).getRemark());
+        if (Objects.nonNull(oldRefundManageBean.getRefundMode()))
+            oldRefundManageBean.setRefundModeName(BaseEnum.keyToEnumNotNull(PartsRefundModeEnum.class, oldRefundManageBean.getRefundMode()).getRemark());
+
+        oldRefundManageBean.setFlagName(BaseEnum.keyToEnumNotNull(PartsOrderFlagEnum.class, oldRefundManageBean.getFlag()).getRemark());
+        // 单据状态是通过并且保内
+        if (oldRefundManageBean.getFlag().equals(PartsOrderFlagEnum.AGREE.getKey()) &&
+                oldRefundManageBean.getRepairFlag().equals(PartsRepairFlagEnum.INNER.getKey())) {
+            oldRefundManageBean.setFlagName("待返还");
+        }
+
+        List<OldRefundManageItemBean> oldRefundManageItemBeanList = new ArrayList<>();
+        for (WebsitPartsOldRefundManageItem partsOldRefundManageItem : partsOldRefundManageItems) {
+            OldRefundManageItemBean oldRefundManageItemBean = new OldRefundManageItemBean();
+            BeanUtils.copyProperties(partsOldRefundManageItem, oldRefundManageItemBean);
+
+            oldRefundManageItemBeanList.add(oldRefundManageItemBean);
+        }
+        // 查询执行记录
+        List<WebsitPartsOldRefundManageRecord> partsOldRefundManageRecords = websitPartsOldRefundManageRecordService.lambdaQuery()
+                .eq(WebsitPartsOldRefundManageRecord::getApplyNo, partsOldRefundManage.getApplyNo())
+                .list();
+
+        List<OldRefundManageRecordBean> oldRefundManageRecordBeans = new ArrayList<>();
+        for (WebsitPartsOldRefundManageRecord partsOldRefundManageRecord : partsOldRefundManageRecords) {
+            OldRefundManageRecordBean oldRefundManageRecordBean = new OldRefundManageRecordBean();
+            BeanUtils.copyProperties(partsOldRefundManageRecord, oldRefundManageRecordBean);
+            if (Objects.nonNull(oldRefundManageRecordBean.getRefundState())) {
+                oldRefundManageRecordBean.setRefundStateName(BaseEnum.keyToEnumNotNull(PartsRefundStateEnum.class, oldRefundManageRecordBean.getRefundState()).getRemark());
+            }
+            if (Objects.nonNull(oldRefundManageRecordBean.getRepairFlag())) {
+                oldRefundManageRecordBean.setRepairFlagName(BaseEnum.keyToEnumNotNull(PartsRepairFlagEnum.class, oldRefundManageRecordBean.getRepairFlag()).getRemark());
+            }
+            oldRefundManageRecordBean.setIsBackupName(oldRefundManageRecordBean.getIsBackup() ? "是" : "否");
+            oldRefundManageRecordBeans.add(oldRefundManageRecordBean);
+        }
+        oldRefundManageBean.setPartsOldRefundManageRecordList(oldRefundManageRecordBeans);
+
+        oldRefundManageBean.setOldRefundManageItemBeanList(oldRefundManageItemBeanList);
+        return oldRefundManageBean;
+    }
+}

+ 82 - 1
mall-miniapp-service/src/main/resources/mapper/MaterialMapper.xml

@@ -593,7 +593,88 @@
     </select>
 
     <select id="appOldRefundList" resultType="com.gree.mall.miniapp.bean.material.parts.OldRefundManageBean">
-
+        SELECT
+            a.apply_no,
+            a.apply_category,
+            CASE a.apply_category WHEN 'HOME' THEN '家用空调'
+            WHEN 'TRADE' THEN '商用空调'
+            WHEN 'ELEC' THEN '生活电器(小家电)'
+            ELSE '' END AS applyCategoryName,
+            a.apply_type,
+            CASE a.apply_type WHEN 'NEW' THEN '新件返还'
+            WHEN 'LOST' THEN '破损返还'
+            WHEN 'BUG' THEN '故障返还'
+            ELSE '' END AS applyTypeName,
+            a.refund_mode,
+            CASE a.refund_mode WHEN 'EXPRESS' THEN '快递'
+            WHEN 'SELF' THEN '网点自还'
+            ELSE '' END AS refundModeName,
+            a.repair_flag,
+            CASE a.repair_flag WHEN 'INNER' THEN '保内'
+            WHEN 'OUTSIDE' THEN '保外'
+            ELSE '' END AS repairFlagName,
+            a.express_no,
+            a.receive_address,
+            a.receive_websit_id,
+            a.receive_websit_name,
+            a.receive_parts_websit_id,
+            a.websit_Address,
+            a.identity,
+            a.worker_id,
+            a.worker_name,
+            a.work_order_no,
+            a.pg_id,
+            a.customer_name,
+            a.customer_tel,
+            a.refund_amount,
+            a.refund_amount_mode,
+            a.settlement_state,
+            CASE a.settlement_state WHEN 0 THEN '未结算'
+            WHEN 1 THEN '已结算'
+            ELSE '' END AS settlementStateName,
+            a.remark,
+            a.examine_remark,
+            a.flag,
+            CASE  WHEN a.flag = 'SAVE' THEN '保存'
+            WHEN a.flag = 'SUBMIT' THEN '待审批'
+            WHEN a.flag = 'AGREE' and a.repair_flag = 'INNER' THEN '待返还'
+            WHEN a.flag = 'AGREE' and a.repair_flag = 'OUTSIDE' THEN '通过'
+            WHEN a.flag = 'REJECT' THEN '驳回'
+            WHEN a.flag = 'REFUNDED' THEN '已返还'
+            ELSE a.flag = '' END AS flagName,
+            a.create_by,
+            a.create_time,
+            a.update_by,
+            a.update_time,
+            a.submit_by,
+            a.submit_time,
+            a.examine_by,
+            a.examine_time,
+            a.refunded_by,
+            a.refunded_time
+        FROM
+            websit_parts_old_refund_manage a
+            LEFT JOIN websit_parts_old_refund_manage_item b ON a.apply_no = b.apply_no
+        <where>
+            a.company_wechat_id = #{companyWechatId}
+            <if test="applyNo != null and applyNo != ''">
+                AND a.applyNo = #{applyNo}
+            </if>
+            <if test="flag != null and flag != ''">
+                AND a.flag = #{flag}
+            </if>
+            <if test="identity != null and identity != ''">
+                AND a.identity = #{identity}
+            </if>
+            <if test="partsNumber != null and partsNumber != ''">
+                AND b.newPartsNumber = #{partsNumber}
+            </if>
+            <if test="repairFlag != null and repairFlag != ''">
+                AND a.repairFlag = #{repairFlag}
+            </if>
+        </where>
+        GROUP BY a.applyNo, a.createTime
+        ORDER BY a.createTime DESC
     </select>