Jelajahi Sumber

旧件返还管理

FengChaoYu 8 bulan lalu
induk
melakukan
4d3ca93892
16 mengubah file dengan 889 tambahan dan 18 penghapusan
  1. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitPartsSalesVO.java
  2. 1 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/worker/NewRefundManageVO.java
  3. 21 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/worker/OldRefundManageBean.java
  4. 12 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/worker/OldRefundManageItemBean.java
  5. 145 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/worker/OldRefundManageVO.java
  6. 9 0
      mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/MaterialMapper.java
  7. 140 1
      mall-server-api/src/main/java/com/gree/mall/manager/controller/material/worker/OldRefundController.java
  8. 2 0
      mall-server-api/src/main/java/com/gree/mall/manager/enums/material/PartsOrderFlagEnum.java
  9. 2 0
      mall-server-api/src/main/java/com/gree/mall/manager/enums/material/PartsRefundApplyTypeEnum.java
  10. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitPartsSalesOrderLogic.java
  11. 363 13
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WorkerOldRefundManageLogic.java
  12. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/worker/NewRefundManageLogic.java
  13. 124 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/worker/PartsRefundRecordDTO.java
  14. 48 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/worker/SalesItemRecordDTO.java
  15. 19 1
      mall-server-api/src/main/resources/mapper/MaterialMapper.xml
  16. TEMPAT SAMPAH
      mall-server-api/src/main/resources/template/更新配件结算状态模板.xlsx

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitPartsSalesVO.java

@@ -24,7 +24,7 @@ public class WebsitPartsSalesVO {
     private BuyPeopleEnum buyPeople;
 
     @ApiModelProperty("申请类别")
-    private String applyCategory;
+    private PartsApplyCategoryEnum applyCategory;
 
     @ZfireField(hide = true)
     @ApiModelProperty(value = "网点编号")

+ 1 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/worker/NewRefundManageVO.java

@@ -11,6 +11,7 @@ import java.util.Date;
 
 @Data
 @ApiModel
+@ZfireField(tbName = "a")
 public class NewRefundManageVO {
 
     @ApiModelProperty(value = "申请单号")

+ 21 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/worker/OldRefundManageBean.java

@@ -0,0 +1,21 @@
+package com.gree.mall.manager.bean.material.worker;
+
+import com.gree.mall.manager.plus.entity.WebsitPartsOldRefundManage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@ApiModel
+@Data
+public class OldRefundManageBean extends WebsitPartsOldRefundManage {
+
+    @ApiModelProperty("申请明细")
+    private List<OldRefundManageItemBean> oldRefundManageItemBeanList;
+
+    @ApiModelProperty("记录")
+    private List<OldRefundManageRecordBean> partsOldRefundManageRecordList;
+}

+ 12 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/worker/OldRefundManageItemBean.java

@@ -0,0 +1,12 @@
+package com.gree.mall.manager.bean.material.worker;
+
+import com.gree.mall.manager.plus.entity.WebsitPartsOldRefundManageItem;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@ApiModel
+@Data
+public class OldRefundManageItemBean extends WebsitPartsOldRefundManageItem {
+}

+ 145 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/worker/OldRefundManageVO.java

@@ -0,0 +1,145 @@
+package com.gree.mall.manager.bean.material.worker;
+
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.IsEnum;
+import com.gree.mall.manager.enums.material.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel
+@ZfireField(tbName = "a")
+public class OldRefundManageVO {
+    @ApiModelProperty(value = "申请单号")
+    private String applyNo;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "商户编号")
+    private String companyWechatId;
+
+    @ApiModelProperty(value = "商户名称")
+    private String companyWechatName;
+
+    @ApiModelProperty(value = "申请类别")
+    private PartsApplyCategoryEnum applyCategory;
+
+    @ApiModelProperty(value = "申请类型 NEW=新件返还 LOST=破损返还 BUG=故障返还 OLD=旧件返还 NOT=无件返还")
+    private PartsRefundApplyTypeEnum applyType;
+
+    @ApiModelProperty(value = "返还方式")
+    private PartsRefundModeEnum refundMode;
+
+    @ApiModelProperty(value = "维修标识 INNER=保内 OUTSIDE=保外")
+    private PartsRepairFlagEnum repairFlag;
+
+    @ApiModelProperty(value = "快递单号")
+    private String expressNo;
+
+    @ApiModelProperty(value = "收货地址")
+    private String receiveAddress;
+
+    @ApiModelProperty(value = "接收网点编号")
+    private String receiveWebsitId;
+
+    @ApiModelProperty(value = "接收网点名称")
+    private String receiveWebsitName;
+
+    @ApiModelProperty(value = "接收配件网点编号")
+    private String receivePartsWebsitId;
+
+    @ApiModelProperty(value = "网点地址")
+    private String websitAddress;
+
+    @ApiModelProperty(value = "师傅身份证")
+    private String identity;
+
+    @ApiModelProperty(value = "师傅编号")
+    private String workerId;
+
+    @ApiModelProperty(value = "师傅名称")
+    private String workerName;
+
+    @ApiModelProperty(value = "工单编号")
+    private String workOrderNo;
+
+    @ApiModelProperty(value = "总部工单派工id")
+    private String pgId;
+
+    @ApiModelProperty(value = "用户名称")
+    private String customerName;
+
+    @ApiModelProperty(value = "用户电话")
+    private String customerTel;
+
+    @ApiModelProperty(value = "退款金额")
+    private BigDecimal refundAmount;
+
+    @ApiModelProperty(value = "退款方式")
+    private PayTypeEnum refundAmountMode;
+
+    @ApiModelProperty(value = "是否已结算")
+    private IsEnum settlementState;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "审批备注")
+    private String examineRemark;
+
+    @ApiModelProperty(value = "复核备注")
+    private String reviewRemark;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "是否优惠价")
+    private IsEnum isDisc;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "是否执行优惠价")
+    private IsEnum reviewResult;
+
+    @ApiModelProperty(value = "单据状态")
+    private PartsOrderFlagEnum flag;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "提交人")
+    private String submitBy;
+
+    @ApiModelProperty(value = "提交时间")
+    private Date submitTime;
+
+    @ApiModelProperty(value = "审核人")
+    private String examineBy;
+
+    @ApiModelProperty(value = "审核时间")
+    private Date examineTime;
+
+    @ApiModelProperty(value = "确认返还人")
+    private String refundedBy;
+
+    @ApiModelProperty(value = "确认返还时间")
+    private Date refundedTime;
+
+    @ApiModelProperty(value = "复核人")
+    private String reviewBy;
+
+    @ApiModelProperty(value = "复核时间")
+    private Date reviewTime;
+
+    @ApiModelProperty(value = "导入更新时间")
+    private Date importTime;
+}

+ 9 - 0
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/MaterialMapper.java

@@ -14,6 +14,7 @@ import com.gree.mall.manager.bean.material.vender.WebsitVenderGoodsVO;
 import com.gree.mall.manager.bean.material.vender.WebsitVenderVO;
 import com.gree.mall.manager.bean.material.worker.NewRefundManageVO;
 import com.gree.mall.manager.bean.material.worker.OldRefundManageRecordBean;
+import com.gree.mall.manager.bean.material.worker.OldRefundManageVO;
 import com.gree.mall.manager.plus.entity.WebsitPartsSalesItem;
 import com.gree.mall.manager.zfire.bean.PartsParamBean;
 import com.gree.mall.manager.zfire.bean.WebsitGoodsParamBean;
@@ -325,4 +326,12 @@ public interface MaterialMapper {
      * @return
      */
     List<WebsitPartsSalesItem> querySalesItemByItemId(String websitId, String partsWebsitId, String identity, List<String> records);
+
+    /**
+     * 旧件返还列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<OldRefundManageVO> oldRefundManagePage(Page page, @Param("ex") ZfireParamBean zfireParamBean);
 }

+ 140 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/worker/OldRefundController.java

@@ -1,10 +1,17 @@
 package com.gree.mall.manager.controller.material.worker;
 
+import cn.hutool.core.lang.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gree.mall.manager.annotation.ZfireList;
+import com.gree.mall.manager.bean.material.worker.OldRefundManageBean;
+import com.gree.mall.manager.bean.material.worker.OldRefundManageVO;
 import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
 import com.gree.mall.manager.logic.material.manage.WorkerOldRefundManageLogic;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
+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;
@@ -14,14 +21,17 @@ 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.io.InputStream;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
 
 @Slf4j
 @RestController
-@Api(value = "师傅旧件返还管理", tags ={"师傅旧件返还管理"} )
+@Api(value = "师傅旧件返还管理", tags = {"师傅旧件返还管理"})
 @RequestMapping(value = "/worker/old-refund", produces = "application/json; charset=utf-8")
 public class OldRefundController {
 
@@ -30,6 +40,107 @@ public class OldRefundController {
     @Resource
     RedisLockRegistry redisLockRegistry;
 
+    @ZfireList
+    @ApiOperation("旧件返还管理列表")
+    @PostMapping("/list")
+    public ResponseHelper<IPage<OldRefundManageVO>> list(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) throws RemoteServiceException {
+        IPage<OldRefundManageVO> stockBeanIPage = workerOldRefundManageLogic.pageList(zfireParamBean);
+        return ResponseHelper.success(stockBeanIPage, new TypeReference<OldRefundManageVO>() {
+        });
+    }
+
+    @ApiOperation("旧件返还管理列表导出")
+    @PostMapping("/list/export")
+    public void listExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<OldRefundManageVO> stockBeanIPage = workerOldRefundManageLogic.pageList(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(stockBeanIPage.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+
+    @ApiOperation(value = "旧件返还管理详情")
+    @PostMapping("/detail")
+    public ResponseHelper<OldRefundManageBean> detail(
+            @ApiParam(value = "申请单号",required = true) @RequestParam String applyNo
+    ) throws RemoteServiceException {
+        OldRefundManageBean bean = workerOldRefundManageLogic.detail(applyNo);
+        return ResponseHelper.success(bean);
+    }
+
+    @PostMapping("/refund")
+    @ApiOperation(value = "旧件返还")
+    public ResponseHelper refund(
+            @ApiParam(value = "申请单号",required = true) @RequestParam String applyNo,
+            @ApiParam(value = "审批状态",required = true) @RequestParam String flag,
+            @ApiParam(value = "审批备注") @RequestParam(required = false) String examineRemark
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.NEW_REFUND + applyNo);
+        try {
+            if (obtain.tryLock(5, TimeUnit.SECONDS)) {
+                workerOldRefundManageLogic.refund(applyNo, flag, examineRemark);
+            }
+        } catch(Exception e) {
+            log.error("【旧件返还确认处理】失败",e);
+            throw e;
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/examine")
+    @ApiOperation(value = "保外新件转销售审核")
+    public ResponseHelper examine(
+            @ApiParam(value = "申请单号",required = true) @RequestParam String applyNo,
+            @ApiParam(value = "是否优惠价 true=是 false=否",required = true) @RequestParam Boolean isDisc,
+            @ApiParam(value = "审批备注") @RequestParam(required = false) String examineRemark
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.NEW_REFUND + applyNo);
+        try {
+            if (obtain.tryLock(5, TimeUnit.SECONDS)) {
+                workerOldRefundManageLogic.examine(applyNo, isDisc, examineRemark);
+            }
+        } catch(Exception e) {
+            log.error("【旧件返还确认处理】失败",e);
+            throw e;
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/review")
+    @ApiOperation(value = "保外新件转销售复核")
+    public ResponseHelper review(
+            @ApiParam(value = "申请单号",required = true) @RequestParam String applyNo,
+            @ApiParam(value = "是否优惠价 true=是 false=否",required = true) @RequestParam Boolean reviewResult,
+            @ApiParam(value = "复核备注") @RequestParam(required = false) String reviewRemark
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.NEW_REFUND + applyNo);
+        try {
+            if (obtain.tryLock(5, TimeUnit.SECONDS)) {
+                workerOldRefundManageLogic.review(applyNo, reviewResult, reviewRemark);
+            }
+        } catch(Exception e) {
+            log.error("【旧件返还确认处理】失败",e);
+            throw e;
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+
+
     @ApiOperation("旧件返还结算状态导入")
     @PostMapping("/import-settlement-state")
     public ResponseHelper importSettlementState(
@@ -54,4 +165,32 @@ public class OldRefundController {
             obtain.unlock();
         }
     }
+
+    @PostMapping("/transfer/flag")
+    @ApiOperation(value = "旧件返还")
+    public ResponseHelper transferFlag(
+            @ApiParam(value = "申请单号",required = true) @RequestParam String applyNo
+    ) throws Exception {
+        Lock importObtain = redisLockRegistry.obtain(Constant.RedisPrefix.NEW_REFUND + "import");
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.NEW_REFUND + applyNo);
+        try {
+            if (importObtain.tryLock(5, TimeUnit.SECONDS)) {
+                if (obtain.tryLock(5, TimeUnit.SECONDS)) {
+                    workerOldRefundManageLogic.transferFlag(applyNo);
+                }
+            }
+        } catch(Exception e) {
+            log.error("【单据转换标志处理】失败",e);
+            throw e;
+        } finally {
+            if (Objects.nonNull(importObtain)) {
+                importObtain.unlock();
+            }
+            if (Objects.nonNull(obtain)) {
+                obtain.unlock();
+            }
+        }
+
+        return ResponseHelper.success();
+    }
 }

+ 2 - 0
mall-server-api/src/main/java/com/gree/mall/manager/enums/material/PartsOrderFlagEnum.java

@@ -16,6 +16,8 @@ public enum PartsOrderFlagEnum implements BaseEnum {
     REJECT("REJECT","驳回"),
     REFUNDED("REFUNDED","已返还"),
     NOTREFUND("NOTREFUND","未返还"),
+    WAIT_REVIEW("WAIT_REVIEW", "待复核"),
+    REVIEWED("REVIEWED", "已复核"),
     ;
 
     @EnumValue

+ 2 - 0
mall-server-api/src/main/java/com/gree/mall/manager/enums/material/PartsRefundApplyTypeEnum.java

@@ -13,6 +13,8 @@ public enum PartsRefundApplyTypeEnum implements BaseEnum {
     NEW("NEW","新件返还"),
     LOST("LOST","破损返还"),
     BUG("BUG","故障返还"),
+    OLD("OLD","旧件返还"),
+    NOT("NOT","无件返还"),
     ;
 
     @EnumValue

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitPartsSalesOrderLogic.java

@@ -780,7 +780,7 @@ public class WebsitPartsSalesOrderLogic {
                 .setRecordId(partsSalesOrderBean.getId())
                 .setCompanyWechatId(partsSalesOrderBean.getCompanyWechatId())
                 .setCompanyWechatName(partsSalesOrderBean.getCompanyWechatName())
-                .setWebsiteId(partsSalesOrderBean.getWebsitId())
+                .setWebsitId(partsSalesOrderBean.getWebsitId())
                 .setWebsitName(partsSalesOrderBean.getWebsitName())
                 .setPartsWebsitId(partsSalesOrderBean.getPartsWebsitId())
                 .setIdentity(partsSalesOrderBean.getIdentity())

+ 363 - 13
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WorkerOldRefundManageLogic.java

@@ -1,33 +1,43 @@
 package com.gree.mall.manager.logic.material.manage;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.poi.excel.ExcelReader;
 import cn.hutool.poi.excel.ExcelUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.bean.material.worker.OldRefundManageBean;
+import com.gree.mall.manager.bean.material.worker.OldRefundManageItemBean;
+import com.gree.mall.manager.bean.material.worker.OldRefundManageRecordBean;
+import com.gree.mall.manager.bean.material.worker.OldRefundManageVO;
 import com.gree.mall.manager.commonmapper.MaterialMapper;
-import com.gree.mall.manager.enums.material.PartsRepairFlagEnum;
+import com.gree.mall.manager.enums.IsEnum;
+import com.gree.mall.manager.enums.base.BaseEnum;
+import com.gree.mall.manager.enums.material.*;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.logic.material.worker.OldRefundManageInnerLogic;
-import com.gree.mall.manager.plus.entity.SysDictCompany;
-import com.gree.mall.manager.plus.entity.WebsitPartsOldRefundManage;
-import com.gree.mall.manager.plus.entity.WebsitPartsSettlementRecord;
-import com.gree.mall.manager.plus.service.SysDictCompanyService;
-import com.gree.mall.manager.plus.service.WebsitPartsOldRefundManageService;
-import com.gree.mall.manager.plus.service.WebsitPartsSettlementRecordService;
+import com.gree.mall.manager.logic.material.worker.PartsRefundRecordDTO;
+import com.gree.mall.manager.plus.entity.*;
+import com.gree.mall.manager.plus.service.*;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
+import io.jsonwebtoken.lang.Collections;
 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 java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.math.BigDecimal;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -42,6 +52,241 @@ public class WorkerOldRefundManageLogic {
     private final WebsitPartsOldRefundManageService websitPartsOldRefundManageService;
     private final WebsitPartsSettlementRecordService websitPartsSettlementRecordService;
     private final OldRefundManageInnerLogic oldRefundManageInnerLogic;
+    private final WebsitPartsOldRefundManageItemService websitPartsOldRefundManageItemService;
+    private final WebsitPartsOldRefundManageRecordService websitPartsOldRefundManageRecordService;
+    private final WebsitPartsRefundRecordService websitPartsRefundRecordService;
+    private final WorkerStockAccService workerStockAccService;
+
+    public IPage<OldRefundManageVO> pageList(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.materialParam(zfireParamBean, OldRefundManageVO.class, adminUser);
+
+        return materialMapper.oldRefundManagePage(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+    }
+
+    public OldRefundManageBean 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);
+
+
+        List<OldRefundManageItemBean> oldRefundManageItemBeanList = BeanUtil.copyToList(partsOldRefundManageItems, OldRefundManageItemBean.class);
+
+        // 查询执行记录
+        List<WebsitPartsOldRefundManageRecord> partsOldRefundManageRecords = websitPartsOldRefundManageRecordService.lambdaQuery()
+                .eq(WebsitPartsOldRefundManageRecord::getApplyNo, partsOldRefundManage.getApplyNo())
+                .list();
+
+        List<OldRefundManageRecordBean> oldRefundManageRecordBeans = BeanUtil.copyToList(partsOldRefundManageRecords, OldRefundManageRecordBean.class);
+
+        oldRefundManageBean.setPartsOldRefundManageRecordList(oldRefundManageRecordBeans);
+        oldRefundManageBean.setOldRefundManageItemBeanList(oldRefundManageItemBeanList);
+
+        return oldRefundManageBean;
+    }
+
+    public void refund(String applyNo, String flag, String examineRemark) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        WebsitPartsOldRefundManage partsOldRefundManage = websitPartsOldRefundManageService.getById(applyNo);
+        if (Objects.isNull(partsOldRefundManage)) {
+            throw new RemoteServiceException("申请单号不存在");
+        }
+        if (PartsRepairFlagEnum.OUTSIDE.toString().equals(partsOldRefundManage.getRepairFlag())) {
+            throw new RemoteServiceException("申请单号不存在");
+        }
+        // 保内 flag=已返还
+        if (PartsRepairFlagEnum.INNER.toString().equals(partsOldRefundManage.getRepairFlag())) {
+            if (!partsOldRefundManage.getFlag().equals(PartsOrderFlagEnum.AGREE.getKey())) {
+                throw new RemoteServiceException(applyNo + "单据状态:"
+                        + BaseEnum.keyToValue(PartsOrderFlagEnum.class, partsOldRefundManage.getFlag()) + ",失败");
+            }
+            if (!(PartsOrderFlagEnum.REFUNDED.getKey() + "|" + PartsOrderFlagEnum.NOTREFUND.getKey()).contains(flag)) {
+                throw new RemoteServiceException("状态不正确");
+            }
+        }
+
+        String refType = PartsRefTypeEnum.OLD_REFUND.toString();
+
+        DateTime curDate = DateUtil.date();
+        partsOldRefundManage.setExamineRemark(examineRemark)
+                .setFlag(flag)
+                .setExamineBy(adminUser.getNickName())
+                .setExamineTime(curDate)
+                .setRefundedBy(adminUser.getNickName())
+                .setRefundedTime(curDate);
+
+        // 更新
+        partsOldRefundManage.updateById();
+
+        List<WebsitPartsOldRefundManageItem> partsOldRefundManageItems = websitPartsOldRefundManageItemService.lambdaQuery()
+                .eq(WebsitPartsOldRefundManageItem::getApplyNo, partsOldRefundManage.getApplyNo())
+                .list();
+
+        // 已返还的处理
+        if (flag.equals(PartsOrderFlagEnum.REFUNDED.getKey())) {
+            // 减师傅临占旧件库存
+//            List<WorkerStockDTO> workerStockDTOList = oldRefundManageInnerLogic.createWorkerStockDTO(partsOldRefundManage, partsOldRefundManageItems,
+//                    refType, PartsStockPartsAttrEnum.TEMP_OLD.toString(), null, flag);
+//            partsStockLogic.handleWorkerStock(workerStockDTOList);
+
+            // 网点旧件库存增加
+//            List<ShopStockDTO> shopStockDTOList = this.createShopStockDTO(partsOldRefundManage, partsOldRefundManageItems);
+//            partsStockLogic.handleShopStock(shopStockDTOList);
+
+            List<WebsitPartsOldRefundManageRecord> partsNewRefundManageRecords = websitPartsOldRefundManageRecordService.lambdaQuery()
+                    .eq(WebsitPartsOldRefundManageRecord::getApplyNo, partsOldRefundManage.getApplyNo())
+                    .list();
+            List<WebsitPartsRefundRecord> partsRefundRecordList = this.createRefundRecord(partsOldRefundManage, partsNewRefundManageRecords, refType);
+            if (CollectionUtil.isNotEmpty(partsRefundRecordList))
+                websitPartsRefundRecordService.saveBatch(partsRefundRecordList);
+        } else {
+            // 加师傅旧件库存
+//            List<WorkerStockDTO> workerStockDTOList = oldRefundManageInnerLogic.createWorkerStockDTO(partsOldRefundManage, partsOldRefundManageItems,
+//                    refType, PartsStockPartsAttrEnum.TEMP_OLD.toString(), PartsStockPartsAttrEnum.OLD.toString(), flag);
+//            partsStockLogic.handleWorkerStock(workerStockDTOList);
+        }
+    }
+
+    private List<WebsitPartsRefundRecord> createRefundRecord(WebsitPartsOldRefundManage partsOldRefundManage, List<WebsitPartsOldRefundManageRecord> partsNewRefundManageRecords, String refType) {
+        List<WebsitPartsRefundRecord> partsRefundRecordList = new ArrayList<>();
+        for (WebsitPartsOldRefundManageRecord partsOldRefundManageRecord : partsNewRefundManageRecords) {
+            if (Objects.isNull(partsOldRefundManageRecord.getRefundAmountMode())
+                    || partsOldRefundManageRecord.getRefundAmountMode().equals(PayTypeEnum.CASH.toString())) {
+                continue;
+            }
+            WebsitPartsRefundRecord partsRefundRecord = new WebsitPartsRefundRecord();
+            partsRefundRecord.setRefundNo(IdWorker.getIdStr())
+                    .setCompanyWechatId(partsOldRefundManage.getCompanyWechatId())
+                    .setCompanyWechatName(partsOldRefundManage.getCompanyWechatName())
+                    .setRecordId(partsOldRefundManageRecord.getId())
+                    .setWebsitId(partsOldRefundManage.getReceiveWebsitId())
+                    .setWebsitName(partsOldRefundManage.getReceiveWebsitName())
+                    .setPartsWebsitId(partsOldRefundManage.getReceivePartsWebsitId())
+                    .setIdentity(partsOldRefundManage.getIdentity())
+                    .setWorkerId(partsOldRefundManage.getWorkerId())
+                    .setWorkerName(partsOldRefundManage.getWorkerName())
+                    .setSalesId(partsOldRefundManageRecord.getSalesId())
+                    .setSalesItemId(partsOldRefundManageRecord.getSalesItemId())
+                    .setRef(partsOldRefundManage.getApplyNo())
+                    .setRefType(refType)
+                    .setPartsNumber(partsOldRefundManageRecord.getPartsNumber())
+                    .setPartsName(partsOldRefundManageRecord.getPartsName())
+                    .setRefundAmount(partsOldRefundManageRecord.getRefundAmount())
+                    .setRefundState(PartsRefundStateEnum.WAIT.getKey())
+                    .setIsExec(IsEnum.N.getValue())
+                    .setCreateTime(DateUtil.date());
+            partsRefundRecordList.add(partsRefundRecord);
+        }
+        return partsRefundRecordList;
+    }
+
+    /**
+     * 保外新件转销售审核
+     * @param applyNo
+     * @param isDisc
+     * @param examineRemark
+     */
+    @Transactional
+    public void examine(String applyNo, Boolean isDisc, String examineRemark) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        WebsitPartsOldRefundManage partsOldRefundManage = websitPartsOldRefundManageService.getById(applyNo);
+        if (Objects.isNull(partsOldRefundManage)) {
+            throw new RemoteServiceException("申请单号不存在");
+        }
+        if (PartsRepairFlagEnum.INNER.toString().equals(partsOldRefundManage.getRepairFlag())) {
+            throw new RemoteServiceException("申请单号不存在");
+        }
+
+        String refType = PartsRefTypeEnum.OUTSIDE_TO_SALES.toString();
+        String flag = isDisc ? PartsOrderFlagEnum.AGREE.getKey() : PartsOrderFlagEnum.WAIT_REVIEW.toString();
+
+        DateTime curDate = DateUtil.date();
+        partsOldRefundManage.setExamineRemark(examineRemark)
+                .setIsDisc(isDisc)
+                .setFlag(flag)
+                .setExamineBy(adminUser.getNickName())
+                .setExamineTime(curDate);
+
+        // 更新
+        partsOldRefundManage.updateById();
+
+        List<WebsitPartsOldRefundManageItem> partsOldRefundManageItems = websitPartsOldRefundManageItemService.lambdaQuery()
+                .eq(WebsitPartsOldRefundManageItem::getApplyNo, partsOldRefundManage.getApplyNo())
+                .list();
+
+        // 已审批的处理
+        if (flag.equals(PartsOrderFlagEnum.AGREE.toString())) {
+            // 减师傅临占旧件库存
+//            List<WorkerStockDTO> workerStockDTOList = oldRefundManageInnerLogic.createWorkerStockDTO(partsOldRefundManage, partsOldRefundManageItems,
+//                    refType, PartsStockPartsAttrEnum.TEMP_OLD.toString(), null, flag);
+//            partsStockLogic.handleWorkerStock(workerStockDTOList);
+
+            List<WebsitPartsOldRefundManageRecord> partsNewRefundManageRecords = websitPartsOldRefundManageRecordService.lambdaQuery()
+                    .eq(WebsitPartsOldRefundManageRecord::getApplyNo, partsOldRefundManage.getApplyNo())
+                    .list();
+            List<WebsitPartsRefundRecord> partsRefundRecordList = this.createRefundRecord(partsOldRefundManage, partsNewRefundManageRecords, refType);
+            if (CollectionUtil.isNotEmpty(partsRefundRecordList))
+                websitPartsRefundRecordService.saveBatch(partsRefundRecordList);
+        }
+    }
+
+    /**
+     * 保外新件转销售复核
+     * @param applyNo
+     * @param reviewResult
+     * @param reviewRemark
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void review(String applyNo, Boolean reviewResult, String reviewRemark) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        WebsitPartsOldRefundManage partsOldRefundManage = websitPartsOldRefundManageService.getById(applyNo);
+        if (Objects.isNull(partsOldRefundManage)) {
+            throw new RemoteServiceException("申请单号不存在");
+        }
+        if (PartsRepairFlagEnum.INNER.getKey().equals(partsOldRefundManage.getRepairFlag())) {
+            throw new RemoteServiceException("申请单号不存在");
+        }
+
+        String refType = PartsRefTypeEnum.OUTSIDE_TO_SALES.getKey();
+        String flag = PartsOrderFlagEnum.REVIEWED.getKey();
+
+        DateTime curDate = DateUtil.date();
+        partsOldRefundManage.setReviewRemark(reviewRemark)
+                .setReviewResult(reviewResult)
+                .setFlag(flag)
+                .setReviewBy(adminUser.getNickName())
+                .setReviewTime(curDate);
+
+        // 更新
+        partsOldRefundManage.updateById();
+
+        List<WebsitPartsOldRefundManageItem> partsOldRefundManageItems = websitPartsOldRefundManageItemService.lambdaQuery()
+                .eq(WebsitPartsOldRefundManageItem::getApplyNo, partsOldRefundManage.getApplyNo())
+                .list();
+
+        // 已复核的处理
+        // 减师傅临占旧件库存
+//        List<WorkerStockDTO> workerStockDTOList = oldRefundManageInnerLogic.createWorkerStockDTO(partsOldRefundManage, partsOldRefundManageItems,
+//                refType, PartsStockPartsAttrEnum.TEMP_OLD.toString(), null, flag);
+//
+//        partsStockLogic.handleWorkerStock(workerStockDTOList);
+
+        if (reviewResult) {
+            List<WebsitPartsOldRefundManageRecord> partsNewRefundManageRecords = websitPartsOldRefundManageRecordService.lambdaQuery()
+                    .eq(WebsitPartsOldRefundManageRecord::getApplyNo, partsOldRefundManage.getApplyNo())
+                    .list();
+            List<WebsitPartsRefundRecord> partsRefundRecordList = this.createRefundRecord(partsOldRefundManage, partsNewRefundManageRecords, refType);
+            if (CollectionUtil.isNotEmpty(partsRefundRecordList))
+                websitPartsRefundRecordService.saveBatch(partsRefundRecordList);
+        }
+    }
 
     /**
      * 保内结算状态导入
@@ -168,7 +413,112 @@ public class WorkerOldRefundManageLogic {
         return msg.toString();
     }
 
-    public String importOutsideSettlement(List<Object> objects) {
-        return null;
+    public String importOutsideSettlement(List<Object> objects) throws Exception {
+        if(Collections.isEmpty(objects)) {
+            throw new RemoteServiceException("导入数据不能为空");
+        }
+        StringBuilder msg = new StringBuilder();
+        LinkedHashSet<String> pgIds = new LinkedHashSet<>();
+        for (Object data : objects) {
+            List<String> row = (List<String>) data;
+            pgIds.add(row.get(0));
+        }
+
+        String repairFlag = PartsRepairFlagEnum.OUTSIDE.toString();
+        // 截取指定数量后分段查询
+        List<List<String>> splitList = CollUtil.split(pgIds, 500);
+        for (List<String> pgIdList : splitList) {
+            final List<WebsitPartsOldRefundManage> partsOldRefundManageList = websitPartsOldRefundManageService.lambdaQuery()
+                    .in(WebsitPartsOldRefundManage::getPgId, pgIdList)
+                    .eq(WebsitPartsOldRefundManage::getRepairFlag, repairFlag)
+                    .list();
+            if(!Collections.isEmpty(partsOldRefundManageList)) {
+                final Map<String, List<WebsitPartsOldRefundManage>> partsOldRefundManageMap =
+                        Collections.isEmpty(partsOldRefundManageList) ? null :
+                                partsOldRefundManageList.stream().collect(Collectors.groupingBy(WebsitPartsOldRefundManage::getPgId));
+                List<WebsitPartsOldRefundManage> updateList = new ArrayList<>();
+//                List<String> errorList = new ArrayList<>();
+                for (Object object : objects) {
+                    List<String> row = (List<String>) object;
+                    if (Objects.nonNull(partsOldRefundManageMap)
+                            && partsOldRefundManageMap.containsKey(row.get(0))
+                            && CollectionUtil.isNotEmpty(partsOldRefundManageMap.get(row.get(0)))) {
+                        List<WebsitPartsOldRefundManage> oldRefundList = partsOldRefundManageMap.get(row.get(0));
+                        for (WebsitPartsOldRefundManage oldRefund : oldRefundList) {
+                            if (Objects.isNull(oldRefund.getSettlementState())
+                                    || !oldRefund.getSettlementState()) {
+                                oldRefundManageInnerLogic.submit(oldRefund);
+                                updateList.add(oldRefund);
+                            }
+//                            else {
+//                                errorList.add(row.get(0) + "已结算,无需重复导入");
+//                            }
+                        }
+                    }
+//                    else {
+//                        errorList.add("没有找到该工单派工id" + row.get(0));
+//                    }
+                }
+                if(!Collections.isEmpty(updateList)) {
+                    msg.append("成功导入处理 "+updateList.size()+" 条;");
+                }
+//                if(!Collections.isEmpty(errorList)) {
+//                    msg.append("导入失败"+errorList.size()+"条, 异常信息: "+JSONObject.toJSONString(errorList));
+//                }
+            }
+        }
+
+        return msg.toString();
+    }
+
+
+    @Transactional
+    public void transferFlag(String applyNo) {
+        WebsitPartsOldRefundManage refundManage = websitPartsOldRefundManageService.getById(applyNo);
+        if (!refundManage.getFlag().equals(PartsOrderFlagEnum.SAVE.getKey())) {
+            throw new RemoteServiceException("非保存状态,转换失败");
+        }
+
+        List<WebsitPartsOldRefundManageRecord> records = websitPartsOldRefundManageRecordService.lambdaQuery()
+                .eq(WebsitPartsOldRefundManageRecord::getApplyNo, applyNo)
+                .list();
+        // 取反
+        String refType = PartsRepairFlagEnum.INNER.getKey().equals(refundManage.getRepairFlag()) ?
+                PartsRefTypeEnum.OUTSIDE_TO_SALES.getKey() :
+                PartsRefTypeEnum.OLD_REFUND.getKey();
+
+        // 取反
+        String repairFlag = PartsRepairFlagEnum.INNER.getKey().equals(refundManage.getRepairFlag()) ?
+                PartsRepairFlagEnum.OUTSIDE.getKey() :
+                PartsRepairFlagEnum.INNER.getKey();
+
+        workerStockAccService.lambdaUpdate()
+                .set(WorkerStockAcc::getRefType, refType)
+                .eq(WorkerStockAcc::getRef, applyNo)
+                .eq(WorkerStockAcc::getCompanyWechatId, refundManage.getCompanyWechatId())
+                .in(WorkerStockAcc::getPartsAttr, PartsAttrEnum.NEW.getKey(), PartsAttrEnum.OLD.getKey())
+                .update();
+
+        PartsRefundRecordDTO dto = new PartsRefundRecordDTO();
+
+        BigDecimal totalRefundAmount = BigDecimal.ZERO;
+
+        for (WebsitPartsOldRefundManageRecord record : records) {
+            BigDecimal amount = repairFlag.equals(PartsRepairFlagEnum.INNER.toString()) ?
+                    record.getSalesPrice().multiply(record.getQty()) :
+                    dto.computeDiffAmount(record.getSalesPrice(), record.getSecondPrice(), record.getQty());
+            websitPartsOldRefundManageRecordService.lambdaUpdate()
+                    .set(WebsitPartsOldRefundManageRecord::getRefundAmount, amount)
+                    .set(WebsitPartsOldRefundManageRecord::getRepairFlag, repairFlag)
+                    .eq(WebsitPartsOldRefundManageRecord::getId, record.getId())
+                    .update();
+            totalRefundAmount = totalRefundAmount.add(amount);
+        }
+
+        websitPartsOldRefundManageService.lambdaUpdate()
+                .set(WebsitPartsOldRefundManage::getRepairFlag, repairFlag)
+                .set(WebsitPartsOldRefundManage::getRefundAmount, totalRefundAmount)
+                .eq(WebsitPartsOldRefundManage::getApplyNo, applyNo)
+                .update();
     }
 }

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/worker/NewRefundManageLogic.java

@@ -165,7 +165,7 @@ public class NewRefundManageLogic {
                     .setCompanyWechatId(partsNewRefundManage.getCompanyWechatId())
                     .setCompanyWechatName(partsNewRefundManage.getCompanyWechatName())
                     .setRecordId(partsNewRefundManageRecord.getId())
-                    .setWebsiteId(partsNewRefundManage.getReceiveWebsitId())
+                    .setWebsitId(partsNewRefundManage.getReceiveWebsitId())
                     .setWebsitName(partsNewRefundManage.getReceiveWebsitName())
                     .setPartsWebsitId(partsNewRefundManage.getReceivePartsWebsitId())
                     .setIdentity(partsNewRefundManage.getIdentity())

+ 124 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/worker/PartsRefundRecordDTO.java

@@ -0,0 +1,124 @@
+package com.gree.mall.manager.logic.material.worker;
+
+import cn.hutool.core.date.DateUtil;
+import com.gree.mall.manager.enums.material.PartsRefTypeEnum;
+import com.gree.mall.manager.plus.entity.WebsitPartsSalesItem;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class PartsRefundRecordDTO {
+
+    @ApiModelProperty("返还明细id")
+    private String itemId;
+
+    @ApiModelProperty("申请单号")
+    private String applyNo;
+
+    @ApiModelProperty("销售单id")
+    private String salesId;
+
+    @ApiModelProperty("销售单明细id")
+    private String salesItemId;
+
+    @ApiModelProperty("配件编码")
+    private String partsNumber;
+
+    @ApiModelProperty("配件名称")
+    private String partsName;
+
+    @ApiModelProperty("销售价")
+    private BigDecimal salesPrice;
+
+    @ApiModelProperty("市场价")
+    private BigDecimal marketPrice;
+
+    @ApiModelProperty("优惠价2")
+    private BigDecimal secondPrice;
+
+    @ApiModelProperty("数量")
+    private BigDecimal qty;
+
+    @ApiModelProperty("总金额")
+    private BigDecimal totalAmount;
+
+    @ApiModelProperty("退款方式 WX=微信 CASH=现金")
+    private String refundAmountMode;
+
+    @ApiModelProperty("退款金额")
+    private BigDecimal refundAmount;
+
+    @ApiModelProperty("维修标识 INNER=保内 OUTSIDE=保外")
+    private String repairFlag;
+
+    @ApiModelProperty("工单编号")
+    private String workOrderNo;
+
+    @ApiModelProperty("总部工单派工id")
+    private String pgId;
+
+    @ApiModelProperty("用户名称")
+    private String customerName;
+
+    @ApiModelProperty("用户电话")
+    private String customerTel;
+
+    @ApiModelProperty("是否备用件 false=否 true=是")
+    private Boolean isBackup;
+
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+
+
+    public void injectData(SalesItemRecordDTO itemRecordDTO, WebsitPartsSalesItem salesOrderItem, BigDecimal qty, String refType) {
+        this.itemId = itemRecordDTO.getItemId();
+        this.applyNo = itemRecordDTO.getApplyNo();
+        this.salesId = salesOrderItem.getSalesId();
+        this.salesItemId = salesOrderItem.getId();
+        this.partsNumber = salesOrderItem.getPartsNumber();
+        this.partsName = salesOrderItem.getPartsName();
+        this.salesPrice = salesOrderItem.getSalesPrice();
+        this.marketPrice = salesOrderItem.getMarketPrice();
+        this.secondPrice = salesOrderItem.getSecondPrice();
+        this.qty = qty;
+        this.totalAmount = salesOrderItem.getSalesPrice().multiply(qty);
+        this.repairFlag = itemRecordDTO.getRepairFlag();
+        this.workOrderNo = itemRecordDTO.getWorkOrderNo();
+        this.pgId = itemRecordDTO.getPgId();
+        this.customerName = itemRecordDTO.getCustomerName();
+        this.customerTel = itemRecordDTO.getCustomerTel();
+        this.isBackup = itemRecordDTO.getIsBackup();
+        this.createTime = DateUtil.date();
+        this.refundAmountMode = salesOrderItem.getRefundAmountMode();
+        if (refType.equals(PartsRefTypeEnum.OLD_REFUND.getKey()) || refType.equals(PartsRefTypeEnum.NEW_REFUND.getKey())) {
+            // 旧件返还保内或新件返还 全额退还
+            this.refundAmount = salesOrderItem.getSalesPrice().multiply(qty);
+        } else if (refType.equals(PartsRefTypeEnum.OUTSIDE_TO_SALES.getKey())) {
+            // 保外新件转销售的市场价-优惠价2的差价退还(旧计算方式)
+//            this.refundAmount = salesOrderItem.getMarketPrice().subtract(salesOrderItem.getSecondPrice()).multiply(qty);
+            // 销售价-优惠价2*1.2倍  返还差价
+            this.refundAmount = BigDecimal.ZERO;
+            if (salesOrderItem.getSecondPrice().compareTo(BigDecimal.ZERO) > 0) {
+                this.refundAmount = this.computeDiffAmount(salesOrderItem.getSalesPrice(), salesOrderItem.getSecondPrice(), qty);
+            }
+
+        }
+
+        if (refType.equals(PartsRefTypeEnum.NEW_REFUND.toString())) {
+            // 销售明细新件数量增加
+            salesOrderItem.setNewRefundQty(salesOrderItem.getNewRefundQty().add(qty));
+        } else {
+            // 销售明细旧件数量增加
+            salesOrderItem.setOldRefundQty(salesOrderItem.getOldRefundQty().add(qty));
+        }
+        // 销售明细数量减少
+        salesOrderItem.setQty(salesOrderItem.getQty().subtract(qty));
+    }
+
+    public BigDecimal computeDiffAmount(BigDecimal salesPrice, BigDecimal secondPrice, BigDecimal qty) {
+        return salesPrice.subtract(secondPrice.multiply(BigDecimal.valueOf(1.2))).multiply(qty);
+    }
+}

+ 48 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/worker/SalesItemRecordDTO.java

@@ -0,0 +1,48 @@
+package com.gree.mall.manager.logic.material.worker;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SalesItemRecordDTO {
+
+    @ApiModelProperty("明细id")
+    private String itemId;
+
+    @ApiModelProperty("申请单号")
+    private String applyNo;
+
+    @ApiModelProperty("配件编码")
+    private String partsNumber;
+
+    @ApiModelProperty("配件名称")
+    private String partsName;
+
+    @ApiModelProperty("数量")
+    private BigDecimal qty;
+
+    @ApiModelProperty("销售单id")
+    private String salesId;
+
+    @ApiModelProperty("维修标识 INNER=保内 OUTSIDE=保外")
+    private String repairFlag;
+
+    @ApiModelProperty("工单编号")
+    private String workOrderNo;
+
+    @ApiModelProperty("总部工单派工id")
+    private String pgId;
+
+    @ApiModelProperty("用户名称")
+    private String customerName;
+
+    @ApiModelProperty("用户电话")
+    private String customerTel;
+
+    @ApiModelProperty("是否备用件 false=否 true=是")
+    private Boolean isBackup;
+
+
+}

+ 19 - 1
mall-server-api/src/main/resources/mapper/MaterialMapper.xml

@@ -667,7 +667,7 @@
             websit_parts_new_refund_manage a
         ${ex.query}
         <if test="ex.adminWebsitIds != null and ex.adminWebsitIds.size > 0">
-            AND a.receive_website_id IN
+            AND a.receive_websit_id IN
             <foreach item="item" index="index" collection="ex.adminWebsitIds" open="(" separator="," close=")">
                 #{item}
             </foreach>
@@ -694,4 +694,22 @@
         </foreach>
         FOR UPDATE
     </select>
+
+    <select id="oldRefundManagePage" resultType="com.gree.mall.manager.bean.material.worker.OldRefundManageVO">
+        SELECT
+            ${ex.selected}
+        FROM
+            websit_parts_old_refund_manage a
+        ${ex.query}
+        <if test="ex.adminWebsitIds != null and ex.adminWebsitIds.size > 0">
+            AND a.receive_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>

TEMPAT SAMPAH
mall-server-api/src/main/resources/template/更新配件结算状态模板.xlsx