Ver Fonte

师傅结算记录

FengChaoYu há 8 meses atrás
pai
commit
6968d48b7c

+ 180 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitWorkSettlementVO.java

@@ -0,0 +1,180 @@
+package com.gree.mall.manager.bean.material.manage;
+
+import com.gree.mall.manager.annotation.ZfireField;
+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 WebsitWorkSettlementVO {
+
+    @ApiModelProperty("派工序号")
+    private String pgId;
+
+    @ApiModelProperty("序号")
+    private String no;
+
+    @ApiModelProperty("自编号码")
+    private String workNumber;
+
+    @ApiModelProperty("工单状态")
+    private String workState;
+
+    @ApiModelProperty("新结算单位号")
+    private String newSettlementUnitNo;
+
+    @ApiModelProperty("旧结算单位号")
+    private String oldSettlementUnitNo;
+
+    @ApiModelProperty("结算单位名")
+    private String settlementUnitName;
+
+    @ApiModelProperty("维修类型")
+    private String repairType;
+
+    @ApiModelProperty("内外机")
+    private String outInnerMachine;
+
+    @ApiModelProperty("机器条码")
+    private String outMachineBarcode;
+
+    @ApiModelProperty("外机型")
+    private String outMachineType;
+
+    @ApiModelProperty("外机型描述")
+    private String outMachineDescr;
+
+    @ApiModelProperty("内机条码")
+    private String innerMachineBarcode;
+
+    @ApiModelProperty("内机型")
+    private String innerMachineType;
+
+    @ApiModelProperty("内机型描述")
+    private String innerMachineDescr;
+
+    @ApiModelProperty("用户姓名")
+    private String customerName;
+
+    @ApiModelProperty("区号")
+    private String areaNo;
+
+    @ApiModelProperty("移动电话")
+    private String mobile;
+
+    @ApiModelProperty("电话号码")
+    private String tel;
+
+    @ApiModelProperty("省份")
+    private String province;
+
+    @ApiModelProperty("市县")
+    private String city;
+
+    @ApiModelProperty("区县")
+    private String area;
+
+    @ApiModelProperty("用户地址")
+    private String customerAddress;
+
+    @ApiModelProperty("GPS定位")
+    private String gPSPosition;
+
+    @ApiModelProperty("邮政编码")
+    private String mailNumber;
+
+    @ApiModelProperty("销售单位号")
+    private String salesUnitNo;
+
+    @ApiModelProperty("销售单位")
+    private String salesUnitName;
+
+    @ApiModelProperty("发票编号")
+    private String invoiceNumber;
+
+    @ApiModelProperty("购买日期")
+    private String buyDate;
+
+    @ApiModelProperty("安装日期")
+    private String installDate;
+
+    @ApiModelProperty("报修日期")
+    private String applyDate;
+
+    @ApiModelProperty("修复日期")
+    private String repairDate;
+
+    @ApiModelProperty("维修工ID")
+    private String repairWorkerId;
+
+    @ApiModelProperty("维修工姓名")
+    private String repairWorkerName;
+
+    @ApiModelProperty("维修师傅")
+    private String repairWorker;
+
+    @ApiModelProperty("维修工电话")
+    private String repairMobile;
+
+    @ApiModelProperty("维修费用")
+    private BigDecimal repairAmount;
+
+    @ApiModelProperty("交通费")
+    private BigDecimal trafficAmount;
+
+    @ApiModelProperty("住宿费用")
+    private BigDecimal hotelAmount;
+
+    @ApiModelProperty("吊装费用")
+    private BigDecimal hoistAmount;
+
+    @ApiModelProperty("其他费用")
+    private BigDecimal otherAmount;
+
+    @ApiModelProperty("总费用")
+    private BigDecimal totalAmount;
+
+    @ApiModelProperty("结算单批号")
+    private String settlementBatchNo;
+
+    @ApiModelProperty("安装网点号")
+    private String installWebsiteNumber;
+
+    @ApiModelProperty("安装网点名")
+    private String installWebsiteName;
+
+    @ApiModelProperty("新维修单位号")
+    private String newRepairUnitNo;
+
+    @ApiModelProperty("旧维修单位号")
+    private String oldRepairUnitNo;
+
+    @ApiModelProperty("维修单位名")
+    private String repairUnitName;
+
+    @ApiModelProperty("故障现象")
+    private String bugDescr;
+
+    @ApiModelProperty("故障分析")
+    private String bugReason;
+
+    @ApiModelProperty("维修内容")
+    private String repairRemark;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("转结算时间")
+    private String settlementTime;
+
+    @ApiModelProperty("导入人")
+    private String importBy;
+
+    @ApiModelProperty("导入时间")
+    private Date importTime;
+}

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

@@ -267,4 +267,12 @@ public interface MaterialMapper {
      * @return
      */
     IPage<WebsitPartsOldOutVO> websitPartsOldOutPage(Page page, @Param("ex") PartsParamBean zfireParamBean);
+
+    /**
+     * 网点师傅结算记录列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<WebsitWorkSettlementVO> websitWorkSettlementPage(Page page, @Param("ex") ZfireParamBean zfireParamBean);
 }

+ 1 - 0
mall-server-api/src/main/java/com/gree/mall/manager/constant/Constant.java

@@ -85,6 +85,7 @@ public class Constant {
 
         public final static String NEW_IN = "jsm:parts:new:in:";
         public static final String OLD_OUT = "jsm:parts:old:out:";
+        public static final String NEW_REFUND = "jsm:parts:new:refund:";
     }
     public class ChatMessage {
         public final static String MSG_TYPE_DOC = "docmsg";

+ 78 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/manage/WebsitWorkSettlementController.java

@@ -0,0 +1,78 @@
+package com.gree.mall.manager.controller.material.manage;
+
+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.manage.WebsitWorkSettlementVO;
+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.WebsitWorkSettlementLogic;
+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 javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.concurrent.locks.Lock;
+
+@Slf4j
+@RestController
+@Api(value = "网点工单结算记录", tags = {"网点工单结算记录"})
+@RequestMapping(value = "/parts/work-settlement", produces = "application/json; charset=utf-8")
+public class WebsitWorkSettlementController {
+
+    @Resource
+    WebsitWorkSettlementLogic websitWorkSettlementLogic;
+    @Resource
+    RedisLockRegistry redisLockRegistry;
+
+    @ZfireList
+    @PostMapping("/list")
+    @ApiOperation("网点工单结算记录列表")
+    public ResponseHelper<IPage<WebsitWorkSettlementVO>> list(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) throws RemoteServiceException {
+        IPage<WebsitWorkSettlementVO> partsBeanIPage = websitWorkSettlementLogic.pageList(zfireParamBean);
+        return ResponseHelper.success(partsBeanIPage, new TypeReference<WebsitWorkSettlementVO>() {
+        });
+    }
+
+    @PostMapping("/list/export")
+    @ApiOperation("网点工单结算记录列表导出")
+    public void listExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<WebsitWorkSettlementVO> stockBeanIPage = websitWorkSettlementLogic.pageList(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(stockBeanIPage.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+    @ApiOperation(value = "删除网点工单结算记录")
+    @PostMapping("/del")
+    public ResponseHelper del(
+            @ApiParam(required = true, value = "网点网点工单结算记录id") @RequestParam List<String> ids
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.NEW_REFUND + "import");
+        if (!obtain.tryLock()) {
+            throw new RemoteServiceException("正在处理导入结算状态数据,请稍后删除");
+        }
+        try {
+            websitWorkSettlementLogic.del(ids);
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+}

+ 57 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/manage/WorkerOldRefundController.java

@@ -0,0 +1,57 @@
+package com.gree.mall.manager.controller.material.manage;
+
+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 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 java.io.InputStream;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Lock;
+
+@Slf4j
+@RestController
+@Api(value = "师傅旧件返还管理", tags ={"师傅旧件返还管理"} )
+@RequestMapping(value = "/worker/old-refund", produces = "application/json; charset=utf-8")
+public class WorkerOldRefundController {
+
+    @Resource
+    WorkerOldRefundManageLogic workerOldRefundManageLogic;
+    @Resource
+    RedisLockRegistry redisLockRegistry;
+
+    @ApiOperation("旧件返还结算状态导入")
+    @PostMapping("/import-settlement-state")
+    public ResponseHelper importSettlementState(
+            @ApiParam(required = true, value = "附件") @RequestPart("file") MultipartFile file,
+            @ApiParam(required = true, value = "0-旧件返还 1-保外新件转销售") @RequestParam Integer flag
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.NEW_REFUND + "import");
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("获取导入结算状态锁超时");
+        }
+        try {
+            String s;
+            if (flag.compareTo(0) == 0) {
+                InputStream inputStream = file.getInputStream();
+                s = workerOldRefundManageLogic.importInnerSettlement(inputStream);
+            } else {
+                List<Object> objects = ExcelUtils.importExcel(file);
+                s = workerOldRefundManageLogic.importOutsideSettlement(objects);
+            }
+            return ResponseHelper.success(s);
+        } finally {
+            obtain.unlock();
+        }
+    }
+}

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

@@ -0,0 +1,25 @@
+package com.gree.mall.manager.enums.material;
+
+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.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum PartsOrderFlagEnum implements BaseEnum {
+    SAVE("SAVE","保存"),
+    SUBMIT("SUBMIT","提交"),
+    AGREE("AGREE","通过"),
+    REJECT("REJECT","驳回"),
+    REFUNDED("REFUNDED","已返还"),
+    NOTREFUND("NOTREFUND","未返还"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+}

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

@@ -0,0 +1,21 @@
+package com.gree.mall.manager.enums.material;
+
+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.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;
+}

+ 61 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/OldRefundManageInnerLogic.java

@@ -0,0 +1,61 @@
+package com.gree.mall.manager.logic.material.manage;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.enums.material.PartsOrderFlagEnum;
+import com.gree.mall.manager.enums.material.PartsRefTypeEnum;
+import com.gree.mall.manager.enums.material.PartsRepairFlagEnum;
+import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.plus.entity.WebsitPartsOldRefundManage;
+import com.gree.mall.manager.plus.entity.WebsitPartsOldRefundManageItem;
+import com.gree.mall.manager.plus.service.WebsitPartsOldRefundManageItemService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class OldRefundManageInnerLogic {
+
+    private final CommonLogic commonLogic;
+    private final WebsitPartsOldRefundManageItemService websitPartsOldRefundManageItemService;
+
+    @Transactional(rollbackFor = Exception.class)
+    public void submit(WebsitPartsOldRefundManage partsOldRefundManage) throws Exception {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+//        PartsOldRefundManage partsOldRefundManage = partsOldRefundManageService.getById(applyNo);
+        if (!partsOldRefundManage.getFlag().equals(PartsOrderFlagEnum.SAVE.getKey())) {
+            return;
+//            throw new RemoteServiceException(partsOldRefundManage.getApplyNo() + "单据状态:"
+//                    + PartsExamineFlagEnum.valueOf(partsOldRefundManage.getFlag()).getDesc() + ",提交失败");
+        }
+
+        DateTime curDate = DateUtil.date();
+        partsOldRefundManage
+                .setSettlementState(true)
+                .setImportTime(curDate)
+                .setFlag(partsOldRefundManage.getRepairFlag().equals(PartsRepairFlagEnum.INNER.getKey()) ? PartsOrderFlagEnum.AGREE.getKey() : PartsOrderFlagEnum.SUBMIT.getKey())
+                .setSubmitBy(adminUser.getNickName())
+                .setSubmitTime(curDate)
+                .updateById();
+
+        String refType = PartsRepairFlagEnum.INNER.getKey().equals(partsOldRefundManage.getRepairFlag()) ?
+                PartsRefTypeEnum.OLD_REFUND.getKey() :
+                PartsRefTypeEnum.OUTSIDE_TO_SALES.getKey();
+        // 提交状态时 旧件库存减 临占件库存加
+        List<WebsitPartsOldRefundManageItem> partsOldRefundManageItems = websitPartsOldRefundManageItemService.lambdaQuery()
+                .eq(WebsitPartsOldRefundManageItem::getApplyNo, partsOldRefundManage.getApplyNo())
+                .list();
+
+//        List<WorkerStockDTO> workerStockDTOList = this.createWorkerStockDTO(partsOldRefundManage, partsOldRefundManageItems,
+//                refType, PartsStockPartsAttrEnum.OLD.toString(), PartsStockPartsAttrEnum.TEMP_OLD.toString(), PartsExamineFlagEnum.SUBMIT.toString());
+//        partsStockLogic.handleWorkerStock(workerStockDTOList);
+
+//        this.insertPartsMessageTip(partsOldRefundManage, curDate);
+    }
+}

+ 57 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitWorkSettlementLogic.java

@@ -0,0 +1,57 @@
+package com.gree.mall.manager.logic.material.manage;
+
+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.material.manage.WebsitWorkSettlementVO;
+import com.gree.mall.manager.commonmapper.MaterialMapper;
+import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.plus.entity.WebsitPartsSettlementRecord;
+import com.gree.mall.manager.plus.entity.WebsitPartsSettlementRecordBak;
+import com.gree.mall.manager.plus.service.WebsitPartsSettlementRecordBakService;
+import com.gree.mall.manager.plus.service.WebsitPartsSettlementRecordService;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class WebsitWorkSettlementLogic {
+
+    private final CommonLogic commonLogic;
+    private final MaterialMapper materialMapper;
+    private final WebsitPartsSettlementRecordService websitPartsSettlementRecordService;
+    private final WebsitPartsSettlementRecordBakService websitPartsSettlementRecordBakService;
+
+    public IPage<WebsitWorkSettlementVO> pageList(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.materialParam(zfireParamBean, WebsitWorkSettlementVO.class, adminUser);
+        IPage<WebsitWorkSettlementVO> page = materialMapper.websitWorkSettlementPage(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+        return page;
+    }
+
+    public void del(List<String> ids) {
+        List<WebsitPartsSettlementRecord> partsSettlementRecords = websitPartsSettlementRecordService.lambdaQuery()
+                .in(WebsitPartsSettlementRecord::getPgId, ids)
+                .list();
+
+        websitPartsSettlementRecordService.lambdaUpdate()
+                .in(WebsitPartsSettlementRecord::getPgId, ids)
+                .remove();
+
+        List<WebsitPartsSettlementRecordBak> partsSettlementRecordBakList = new ArrayList<>();
+        for (WebsitPartsSettlementRecord partsSettlementRecord : partsSettlementRecords) {
+            WebsitPartsSettlementRecordBak partsSettlementRecordBak = new WebsitPartsSettlementRecordBak();
+            BeanUtils.copyProperties(partsSettlementRecord, partsSettlementRecordBak);
+            partsSettlementRecordBakList.add(partsSettlementRecordBak);
+        }
+        websitPartsSettlementRecordBakService.saveBatch(partsSettlementRecordBakList);
+    }
+}

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

@@ -0,0 +1,173 @@
+package com.gree.mall.manager.logic.material.manage;
+
+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.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.commonmapper.MaterialMapper;
+import com.gree.mall.manager.enums.material.PartsRepairFlagEnum;
+import com.gree.mall.manager.exception.RemoteServiceException;
+import com.gree.mall.manager.logic.common.CommonLogic;
+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 lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class WorkerOldRefundManageLogic {
+
+    private final CommonLogic commonLogic;
+    private final MaterialMapper materialMapper;
+    private final SysDictCompanyService sysDictCompanyService;
+    private final WebsitPartsOldRefundManageService websitPartsOldRefundManageService;
+    private final WebsitPartsSettlementRecordService websitPartsSettlementRecordService;
+    private final OldRefundManageInnerLogic oldRefundManageInnerLogic;
+
+    /**
+     * 保内结算状态导入
+     * @param inputStream
+     * @return
+     * @throws RemoteServiceException
+     */
+    public String importInnerSettlement(InputStream inputStream) throws Exception {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        //读取excel数据
+        ExcelReader reader = ExcelUtil.getReader(inputStream);
+        reader.addHeaderAlias("序号", "no");
+        reader.addHeaderAlias("派工序号", "pgId");
+        reader.addHeaderAlias("自编号码", "workNumber");
+        reader.addHeaderAlias("工单状态", "workState");
+        reader.addHeaderAlias("新结算单位号", "newSettlementUnitNo");
+        reader.addHeaderAlias("旧结算单位号", "oldSettlementUnitNo");
+        reader.addHeaderAlias("结算单位名", "settlementUnitName");
+        reader.addHeaderAlias("维修类型", "repairType");
+        reader.addHeaderAlias("内外机", "outInnerMachine");
+        reader.addHeaderAlias("机器条码", "outMachineBarcode");
+        reader.addHeaderAlias("外机型", "outMachineType");
+        reader.addHeaderAlias("外机型描述", "outMachineDescr");
+        reader.addHeaderAlias("内机条码", "innerMachineBarcode");
+        reader.addHeaderAlias("内机型", "innerMachineType");
+        reader.addHeaderAlias("内机型描述", "innerMachineDescr");
+        reader.addHeaderAlias("用户姓名", "customerName");
+        reader.addHeaderAlias("区号", "areaNo");
+        reader.addHeaderAlias("移动电话", "mobile");
+        reader.addHeaderAlias("电话号码", "tel");
+        reader.addHeaderAlias("省份", "province");
+        reader.addHeaderAlias("市县", "city");
+        reader.addHeaderAlias("区县", "area");
+        reader.addHeaderAlias("用户地址", "customerAddress");
+        reader.addHeaderAlias("GPS定位", "GPSPosition");
+        reader.addHeaderAlias("邮政编码", "mailNumber");
+        reader.addHeaderAlias("销售单位号", "salesUnitNo");
+        reader.addHeaderAlias("销售单位", "salesUnitName");
+        reader.addHeaderAlias("发票编号", "invoiceNumber");
+        reader.addHeaderAlias("购买日期", "buyDate");
+        reader.addHeaderAlias("安装日期", "installDate");
+        reader.addHeaderAlias("报修日期", "applyDate");
+        reader.addHeaderAlias("修复日期", "repairDate");
+        reader.addHeaderAlias("维修工ID", "repairWorkerId");
+        reader.addHeaderAlias("维修工姓名", "repairWorkerName");
+        reader.addHeaderAlias("维修师傅", "repairWorker");
+        reader.addHeaderAlias("维修工电话", "repairMobile");
+        reader.addHeaderAlias("维修费用", "repairAmount");
+        reader.addHeaderAlias("交通费", "trafficAmount");
+        reader.addHeaderAlias("住宿费用", "hotelAmount");
+        reader.addHeaderAlias("吊装费用", "hoistAmount");
+        reader.addHeaderAlias("其他费用", "otherAmount");
+        reader.addHeaderAlias("总费用", "totalAmount");
+        reader.addHeaderAlias("结算单批号", "settlementBatchNo");
+        reader.addHeaderAlias("安装网点号", "installWebsiteNumber");
+        reader.addHeaderAlias("安装网点名", "installWebsiteName");
+        reader.addHeaderAlias("新维修单位号", "newRepairUnitNo");
+        reader.addHeaderAlias("旧维修单位号", "oldRepairUnitNo");
+        reader.addHeaderAlias("维修单位名", "repairUnitName");
+        reader.addHeaderAlias("故障现象", "bugDescr");
+        reader.addHeaderAlias("故障分析", "bugReason");
+        reader.addHeaderAlias("维修内容", "repairRemark");
+        reader.addHeaderAlias("备注", "remark");
+        reader.addHeaderAlias("转结算时间", "settlementTime");
+
+        List<WebsitPartsSettlementRecord> partsSettlementRecords = reader.readAll(WebsitPartsSettlementRecord.class);
+        DateTime curDate = DateUtil.date();
+        if (CollectionUtil.isEmpty(partsSettlementRecords)) {
+            throw new RemoteServiceException("导入数据不能空");
+        }
+        for (WebsitPartsSettlementRecord settlementRecord : partsSettlementRecords) {
+            if (StringUtils.isBlank(settlementRecord.getPgId()) || StringUtils.isBlank(settlementRecord.getWorkState()) ) {
+                throw new RemoteServiceException("导入的序号" + settlementRecord.getNo() + "数据异常,导入中止");
+            }
+            settlementRecord.setImportBy(adminUser.getNickName())
+                    .setImportTime(curDate);
+        }
+        List<SysDictCompany> sysDictCompanyList = sysDictCompanyService.lambdaQuery()
+                .eq(SysDictCompany::getDictType, "PARTS_INNER_SETTLEMENT_WORK_STATE")
+                .list();
+        if (CollectionUtil.isEmpty(sysDictCompanyList))
+            throw new RemoteServiceException("未配置保内结算工单状态");
+
+        List<String> workStateList = sysDictCompanyList.stream()
+                .map(SysDictCompany::getDictValue)
+                .collect(Collectors.toList());
+
+        StringBuilder msg = new StringBuilder();
+        String repairFlag = PartsRepairFlagEnum.INNER.getKey();
+        Map<String, WebsitPartsSettlementRecord> settlementRecordMap = partsSettlementRecords.stream()
+                .collect(Collectors.toMap(v -> v.getPgId().trim(), Function.identity(), (key1, key2) -> key2));
+        // 过滤出要结算的派工序号 "待总部审批,待总部日审,待退旧件,已转结算待汇总,已汇总"
+        List<String> pgIds = partsSettlementRecords.stream()
+                .filter(v -> workStateList.contains(v.getWorkState().trim()))
+                .map(v -> v.getPgId().trim())
+                .collect(Collectors.toList());
+        // 截取指定数量后分段查询
+        List<List<String>> splitList = CollUtil.split(pgIds, 500);
+        List<WebsitPartsOldRefundManage> updateList = new ArrayList<>();
+        for (List<String> pgIdList : splitList) {
+            final List<WebsitPartsOldRefundManage> partsOldRefundManageList = websitPartsOldRefundManageService.lambdaQuery()
+                    .in(WebsitPartsOldRefundManage::getPgId, pgIdList)
+                    .eq(WebsitPartsOldRefundManage::getRepairFlag, repairFlag)
+                    .eq(WebsitPartsOldRefundManage::getSettlementState, false)
+                    .list();
+            if(CollectionUtil.isNotEmpty(partsOldRefundManageList)) {
+                for (WebsitPartsOldRefundManage partsOldRefundManage : partsOldRefundManageList) {
+                    WebsitPartsSettlementRecord settlementRecord = settlementRecordMap.get(partsOldRefundManage.getPgId());
+                    if (Objects.nonNull(settlementRecord)) {
+                        oldRefundManageInnerLogic.submit(partsOldRefundManage);
+                        updateList.add(partsOldRefundManage);
+                    }
+                }
+            }
+            if(CollectionUtil.isNotEmpty(updateList)) {
+                msg.append("成功导入处理 ").append(updateList.size()).append(" 条;");
+            }
+        }
+
+        for (WebsitPartsSettlementRecord partsSettlementRecord : partsSettlementRecords) {
+            partsSettlementRecord.setPgId(partsSettlementRecord.getPgId().trim());
+        }
+        websitPartsSettlementRecordService.saveOrUpdateBatch(partsSettlementRecords);
+        return msg.toString();
+    }
+
+    public String importOutsideSettlement(List<Object> objects) {
+        return null;
+    }
+}

+ 13 - 0
mall-server-api/src/main/resources/mapper/MaterialMapper.xml

@@ -543,4 +543,17 @@
         </if>
         ${ex.orderBy}
     </select>
+
+    <select id="websitWorkSettlementPage"
+            resultType="com.gree.mall.manager.bean.material.manage.WebsitWorkSettlementVO">
+        SELECT
+            ${ex.selected}
+        FROM
+            websit_parts_settlement_record a
+        ${ex.query}
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.import_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
 </mapper>