|
@@ -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;
|
|
|
+ }
|
|
|
+}
|