Browse Source

Merge remote-tracking branch 'origin/develop' into develop

FengChaoYu 4 months ago
parent
commit
195e70a73e

+ 25 - 20
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java

@@ -424,31 +424,12 @@ public class PayOrderLogic {
             final User user = userService.getById(workerOrder.getUserId());
             workerOrder.setIdentity(user.getIdCard());
         }
-
         List<WorkerOrderItem> workerOrderItems = workerOrderItemService.lambdaQuery().eq(WorkerOrderItem::getOrderId, workerOrder.getOrderId()).list();
 
-        for (WorkerOrderItem workerOrderItem : workerOrderItems) {
-            if (websitNormChargeService.lambdaQuery().eq(WebsitNormCharge::getNormName,workerOrderItem.getGoodsName())
-                    .eq(WebsitNormCharge::getNormType,"M").count() < 1
-                    && partsImportService.lambdaQuery().eq(PartsImport::getPartName,workerOrderItem.getGoodsName())
-                    .count() < 1
-            ) {
-                workerOrderItem.setChargeType("SERV");
-            }
-
-        }
-
         workerOrder.setSource(commonLogic.getSource().equals("A")?OrderInfoSourceEnum.A.getRemark():OrderInfoSourceEnum.B.getRemark() );
 
 
-        if (!StringUtil.isEmpty(workerOrder.getWorkerOrderId())){
-            PgOrderBase pgOrderBase = pgOrderBaseService.getById(workerOrder.getWorkerOrderId());
-            if (pgOrderBase != null){
-                workerOrder.setSaleType(pgOrderBase.getSaleType());
-                workerOrder.setOrderSmallType(pgOrderBase.getOrderSmallType());
-                workerOrder.setOrderSmallTypeText(pgOrderBase.getOrderSmallTypeText());
-            }
-        }
+
 
 
         workerOrder.setPayTime(new Date());
@@ -610,6 +591,9 @@ public class PayOrderLogic {
 
         if (payType.equals(PayTypeEnum.WECHAT.getKey())) {
             if (workerOrder.getTotalAmount().doubleValue() > 0) {
+                WorkerOrder workerOrderOne = workerOrderService.getById(orderId);
+                if (workerOrderOne == null)
+                    throw new RemoteServiceException("支付失败请重新发起支付" );
                 String transcationId = wechatLogic.paymentFkm(workerOrder.getOrderId(), workerOrder.getTotalAmount(), authCode, "Y", ip,
                         adminWebsit.getPayWorkerCodeId(), workerOrder.getSource());
 
@@ -1188,6 +1172,15 @@ public class PayOrderLogic {
         workerOrder.setPayStateTime(new Date());
         workerOrder.setOpenId(currentCompanyWechat.getUser().getMiniOpenId());
 
+        if (!StringUtil.isEmpty(workerOrder.getWorkerOrderId())){
+            PgOrderBase pgOrderBase = pgOrderBaseService.getById(workerOrder.getWorkerOrderId());
+            if (pgOrderBase != null){
+                workerOrder.setSaleType(pgOrderBase.getSaleType());
+                workerOrder.setOrderSmallType(pgOrderBase.getOrderSmallType());
+                workerOrder.setOrderSmallTypeText(pgOrderBase.getOrderSmallTypeText());
+            }
+        }
+
         if (StringUtil.isEmpty(workerOrder.getOpenId())){
             throw new RemoteServiceException("师傅身份Oppid获得失败,请重新进入小程序,授权用户信息,发起支付");
         }
@@ -1197,6 +1190,18 @@ public class PayOrderLogic {
         }else {
             workerOrder.updateById();
         }
+
+        List<WorkerOrderItem> workerOrderItems = workerOrderItemService.lambdaQuery().eq(WorkerOrderItem::getOrderId, workerOrder.getOrderId()).list();
+
+        for (WorkerOrderItem workerOrderItem : workerOrderItems) {
+            if (partsImportService.lambdaQuery().eq(PartsImport::getPartName,workerOrderItem.getGoodsName())
+                    .count() > 0
+            ) {
+                workerOrderItem.setChargeType("SERV");
+                workerOrderItem.updateById();
+            }
+
+        }
         return workerOrder;
     }
 }

+ 2 - 2
mall-server-api/src/main/java/com/gree/mall/manager/bean/apply/WorkerInvolvePrincipalVO.java

@@ -25,13 +25,13 @@ public class WorkerInvolvePrincipalVO   {
 
     @ZfireField(tbName = "b")
     @ApiModelProperty(value = "网点编号")
-    private String websitNumber;
+    private String websitId;
     @ZfireField(tbName = "b")
     @ApiModelProperty(value = "网点名称")
     private String websitName;
     @ZfireField(tbName = "b")
     @ApiModelProperty(value = "所属公司编号")
-    private String belongCompanyId;
+    private String belongCompanyCode;
     @ZfireField(tbName = "b")
     @ApiModelProperty(value = "所属销售公司")
     private String belongCompany;

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

@@ -3,6 +3,7 @@ package com.gree.mall.manager.controller.workerorder;
 import cn.hutool.core.lang.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.manager.annotation.ApiNotAuth;
 import com.gree.mall.manager.annotation.ZfireList;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.listvo.param.WorkOrderZfireParam;
@@ -113,6 +114,15 @@ public class OrderBaseController {
     }
 
 
+    @ApiNotAuth
+    @PostMapping("/saveJsm")
+    @ApiOperation(value = "保存工单jsm")
+    public ResponseHelper<String> saveJsm(@Valid @RequestBody OrderAddBeanDTO orderAddBeanDTO){
+        String orderBaseId = orderBaseLogic.saveOrderJSM(orderAddBeanDTO);
+        return ResponseHelper.success(orderBaseId);
+    }
+
+
     @PostMapping("/update")
     @ApiOperation(value = "修改工单")
     public ResponseHelper update(@Valid @RequestBody PgOrderBase pgOrderBase){

+ 0 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/comlist/ComListAllLogic.java

@@ -277,7 +277,6 @@ public class ComListAllLogic {
         List<Map<String, Object>> fileUrls = new ArrayList<>();
 
         while ((entry = zipInputStream.getNextZipEntry())!= null){
-            System.out.println("name"+entry.getName());
 
             File fileZip = FileUtil.touch("testZip/"+entry.getName());
 

+ 8 - 2
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java

@@ -339,7 +339,7 @@ public class WechatLogic {
 
         WxPayMicropayRequest request = new WxPayMicropayRequest();
         //request.setDeviceInfo(worker.getWorkerId());
-        request.setBody("家盛茂费用");
+        request.setBody("辅材配件");
         request.setOutTradeNo(id);
         request.setTotalFee(payment.multiply(new BigDecimal("100")).intValue());
         request.setSpbillCreateIp(ip);
@@ -763,6 +763,12 @@ public class WechatLogic {
         //请求单次分账
         log.info("【开始分账】request:{}", JSONObject.toJSONString(profitSharingRequest));
         profitSharingService.profitSharing(profitSharingRequest);
+
+        ProfitSharingQueryRequest profitSharingQueryRequest = new ProfitSharingQueryRequest();
+        profitSharingQueryRequest.setOutOrderNo(orderSharingId);
+        profitSharingQueryRequest.setTransactionId(transactionId);
+        ProfitSharingQueryResult profitSharingQueryResult = profitSharingService.profitSharingQuery(profitSharingQueryRequest);
+        log.info("【开始分账】request:{}", JSONObject.toJSONString(profitSharingQueryResult));
         //log.info("【开始分账】result:{}", JSONObject.toJSONString(profitSharingResult));
 
     }
@@ -1270,7 +1276,7 @@ public class WechatLogic {
 
         WxPayMicropayRequest request = new WxPayMicropayRequest();
         //request.setDeviceInfo(worker.getWorkerId());
-        request.setBody("家盛茂费用");
+        request.setBody("辅材配件");
         request.setOutTradeNo(id);
         request.setTotalFee(payment.multiply(new BigDecimal("100")).intValue());
         request.setSpbillCreateIp(ip);

+ 6 - 2
mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/AgreementLogic.java

@@ -609,7 +609,9 @@ public class AgreementLogic {
 
 
         //意外保险发送邮件
-        List<PolicyOrder> policyOrders = policyOrderService.lambdaQuery().eq(PolicyOrder::getType, PolicyTypeEnum.AC.getKey())
+        List<PolicyOrder> policyOrders = policyOrderService.lambdaQuery()
+                .le(PolicyOrder::getCreateTime,endTime)
+                .eq(PolicyOrder::getType, PolicyTypeEnum.AC.getKey())
                 .eq(PolicyOrder::getIsPay, IsYesNoEnum.YES.getKey())
                 .eq(PolicyOrder::getIsSend, IsYesNoEnum.NO.getKey()).list();
 
@@ -681,7 +683,7 @@ public class AgreementLogic {
         List<MailboxReceive> mailboxReceives = mailboxReceiveService.lambdaQuery().eq(MailboxReceive::getMailboxId, mailbox.getId()).list();
 
         List<MailboxSendRecord> mailboxSendRecordList = mailboxSendRecordService.lambdaQuery()
-                .between(MailboxSendRecord::getSendTime, DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()))
+                .between(MailboxSendRecord::getSendTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(),-3)), DateUtil.endOfDay(new Date()))
                 .eq(MailboxSendRecord::getReceiptStatus, IsYesNoEnum.NO.getKey()).list();
 
         for (MailboxSendRecord mailboxSendRecord : mailboxSendRecordList) {
@@ -1145,6 +1147,7 @@ public class AgreementLogic {
 
         //雇主保险发送邮件
         List<PolicyOrder> policyOrdersEm = policyOrderService.lambdaQuery()
+                .le(PolicyOrder::getCreateTime,endTime)
                 .eq(PolicyOrder::getType, PolicyTypeEnum.EM.getKey())
                 .eq(PolicyOrder::getIsImport, IsYesNoEnum.NO.getKey())
                 .eq(PolicyOrder::getIsSend, IsYesNoEnum.NO.getKey()).list();
@@ -1339,6 +1342,7 @@ public class AgreementLogic {
 
             EmailUtilsNew emailUtilsNew = new EmailUtilsNew(mailbox.getSendMailbox(), mailbox.getSendPassword());
             List<PolicyOrder> policyOrdersIn = policyOrderService.lambdaQuery()
+                    .le(PolicyOrder::getCreateTime,endTime)
                     .eq(PolicyOrder::getType, PolicyTypeEnum.IN.getKey())
                     .eq(PolicyOrder::getIsImport, IsYesNoEnum.NO.getKey())
                     .eq(PolicyOrder::getBuyUnitId, mailboxReceive.getDictId())

+ 5 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/WorkerManagerLogic.java

@@ -1005,6 +1005,11 @@ public class WorkerManagerLogic {
             }
         }
 
+        userService.lambdaUpdate()
+                .eq(User::getUserId,workerManagerBean.getUserId())
+                .set(User::getType,UserTypeEnum.WORKER.getKey())
+                .update();
+
 
         workerPolicyService.saveOrUpdateBatch(workerManagerBean.getWorkerPolicies());
 

+ 30 - 5
mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/SettlementOrderLogic.java

@@ -396,11 +396,20 @@ public class SettlementOrderLogic {
 
 
     public void sync() throws WxPayException, InterruptedException {
+        List<WorkerOrder> workerOrders =new ArrayList<>();
+        workerOrders.addAll(workerOrderService.lambdaQuery()
+                .eq(WorkerOrder::getPayState, IsYesNoEnum.YES.getKey())
+                .ne(WorkerOrder::getPayStatus, PayStatusEnum.PAID.getKey())
+                .le(WorkerOrder::getPayNum, 10)
+                .list());
+
 
-        List<WorkerOrder> workerOrders = workerOrderService.lambdaQuery().eq(WorkerOrder::getPayState, IsYesNoEnum.YES.getKey())
+        workerOrders.addAll(workerOrderService.lambdaQuery()
+                .eq(WorkerOrder::getPayState, IsYesNoEnum.YES.getKey())
+                .le(WorkerOrder::getPayStateTime, DateUtil.offsetMinute(new Date(),-20))
                 .ne(WorkerOrder::getPayStatus, PayStatusEnum.PAID.getKey())
-                .ge(WorkerOrder::getPayStateTime, DateUtil.offsetMinute(new Date(), -3))
-                .list();
+                .le(WorkerOrder::getPayNum, 11)
+                .list());
 
         for (WorkerOrder workerOrder : workerOrders) {
 
@@ -409,10 +418,25 @@ public class SettlementOrderLogic {
                 if (!obtain.tryLock(5, TimeUnit.SECONDS)) {
                     throw new RemoteServiceException("系统繁忙,请稍后再试");
                 }
-                WxPayService payService = wechatLogic.getPayJaspWebstiService(workerOrder.getConfigId(), "B");
 
-                WxPayOrderQueryResult wxPayOrderQueryResult = payService.queryOrder("", workerOrder.getOrderId());
+                WorkerOrder workerOrderServiceById = workerOrderService.getById(workerOrder.getOrderId());
+                if (workerOrderServiceById.getPayStatus().equals("PAID"))
+                    continue;
+
+                workerOrder.setPayNum((workerOrder.getPayNum()==null?0: workerOrder.getPayNum())+1);
+                workerOrder.updateById();
+
+                WxPayService payService = wechatLogic.getPayJaspWebstiService(workerOrder.getConfigId(), "B");
+                WxPayOrderQueryResult wxPayOrderQueryResult = null;
+                try {
+                     wxPayOrderQueryResult = payService.queryOrder("", workerOrder.getOrderId());
+                }catch (Exception e){
+                    log.info(e);
+                    continue;
+                }
 
+                if (wxPayOrderQueryResult == null)
+                    continue;
 
                 if (!wxPayOrderQueryResult.getReturnCode().equals("SUCCESS")) {
                     continue;
@@ -450,6 +474,7 @@ public class SettlementOrderLogic {
 
                 workerOrder.setPayTime(new Date());
                 workerOrder.setPayType("WECHAT");
+                workerOrder.setPayNum((workerOrder.getPayNum()==null?0: workerOrder.getPayNum())+1);
                 workerOrder.setPayStatus(PayStatusEnum.PAID.getKey());
                 workerOrder.updateById();
 

+ 406 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseLogic.java

@@ -100,6 +100,7 @@ public class OrderBaseLogic {
     private final PgAppraiseApplyService pgAppraiseApplyService;
     private final PgAppraiseConfigService pgAppraiseConfigService;
     private final ElasticsearchRestTemplate elasticsearchRestTemplate;
+    private final WebsitDispatchService websitDispatchService;
 
     /**
      * 工单列表
@@ -1387,6 +1388,39 @@ public class OrderBaseLogic {
         return pgOrderBase;
     }
 
+
+    /**
+     * 生成过程反馈
+     *
+     * @param pgOrderBase
+     * @param websitName
+     */
+    public void addLogJSM(PgOrderBase pgOrderBase, String websitName) {
+        //自建工单
+        orderLogLogic.addLog(pgOrderBase.getId(), "创建工单", "创建工单-家盛茂商城api", websitName);
+        //派工网点
+        if (StringUtils.isNotBlank(pgOrderBase.getWebsitId())) {
+            orderLogLogic.addLog(pgOrderBase.getId(), "指派网点", "派工给网点【" +(pgOrderBase.getWebsitId())+ pgOrderBase.getWebsitName() + "】", websitName);
+        }
+        //派工给师傅
+        if (StringUtils.isNotBlank(pgOrderBase.getWorkerId())) {
+            orderLogLogic.addLog(pgOrderBase.getId(), "指派师傅", "派工给师傅【" + pgOrderBase.getWorkerName() + "】", websitName);
+        }
+        //预约
+        if (pgOrderBase.getAppointmentTime() != null && pgOrderBase.getAppointmentEndTime() != null) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat sdf2 = new SimpleDateFormat("HH");
+            SimpleDateFormat sdf3 = new SimpleDateFormat("HH:mm");
+            int hour = Integer.parseInt(sdf2.format(pgOrderBase.getAppointmentTime()));
+            String s = hour >= 12 ? "下午" : "上午";
+
+            String format = sdf3.format(pgOrderBase.getAppointmentTime());
+            String format1 = sdf3.format(pgOrderBase.getAppointmentEndTime());
+
+            String s2 = StringUtils.isNotBlank(pgOrderBase.getAppointmentRemark()) ? "备注:" + pgOrderBase.getAppointmentRemark() : "";
+            orderLogLogic.addLog(pgOrderBase.getId(), "用户预约", "预约时间:" + sdf.format(pgOrderBase.getAppointmentTime())+" "+format+"-"+format1 + " "  + "," + s2, websitName);
+        }
+    }
     /**
      * 生成过程反馈
      *
@@ -1855,4 +1889,376 @@ public class OrderBaseLogic {
     }
 
 
+    public String saveOrderJSM(OrderAddBeanDTO orderAddBeanDTO) {
+
+        String orderBaseId = orderAddBeanDTO.getId();
+        Boolean addFlag = false;
+        PgOrderBase old = pgOrderBaseService.getById(orderBaseId);
+        Boolean oldIsQd = false;
+        if (old == null) {
+            orderBaseId = "A" + IdWorker.getIdStr();
+            addFlag = true;
+        } else {
+            oldIsQd = old.getIsQd();
+        }
+        orderAddBeanDTO.setId(orderBaseId);
+
+        //如果选择的师傅存在非当前工单的网点,则清空师傅信息
+        if (CollectionUtils.isNotEmpty(orderAddBeanDTO.getOrderWorkers())) {
+            long count = orderAddBeanDTO.getOrderWorkers().stream().filter(v -> !StringUtils.equals(v.getWebsitId(), orderAddBeanDTO.getWebsitId())).count();
+            if (count > 0) {
+                orderAddBeanDTO.getOrderWorkers().clear();
+            }
+        }
+
+        PgOrderBase orderBase = this.converJSM(old, orderAddBeanDTO, addFlag);
+        orderBase.setCompanyWechatId("1");
+        orderBase.setCompanyWechatName("家盛茂");
+        orderBase.setCreateWebsitId("1831608878940995586");
+        orderBase.setCreateWebsitName("广佛格力售后");
+
+        orderBase.setIsQd(orderAddBeanDTO.getIsQd());
+        orderBase.setIsQdNotice(true);
+        orderBase.setId(orderBaseId);
+        orderBase.setIsImportExcel(orderBase.getIsImportExcel() != null?old.getIsImportExcel():false);
+        orderBase.setIsMeet(orderBase.getIsImportExcel()?orderAddBeanDTO.getIsMeet():true);
+
+
+        //是否变更了师傅
+        Boolean changeWorker = false;
+        //修改记录
+        if (!addFlag) {
+            changeWorker = updateOrderLog(old, orderBase, orderAddBeanDTO);
+        }
+
+        //产品信息(编辑是单独维护的,这里只需要处理新增)
+        if (addFlag) {
+            for (PgOrderProduct v : orderAddBeanDTO.getOrderProducts()) {
+                v.setOrderBaseId(orderBase.getId());
+
+                if (StringUtils.isNotBlank(orderAddBeanDTO.getRpProjectRepairId())) {
+                    //维保单判断是否数量超了
+                    RpProjectRepairProduct one = projectRepairProductService.lambdaQuery()
+                            .eq(RpProjectRepairProduct::getProjectRepairId, orderAddBeanDTO.getRpProjectRepairId())
+                            .eq(RpProjectRepairProduct::getBrandId, v.getBrandId())
+                            .eq(RpProjectRepairProduct::getMainId, v.getMainId())
+                            .eq(RpProjectRepairProduct::getSmallId, v.getSmallId())
+                            .last("limit 1")
+                            .one();
+                    if (one != null && one.getNum() < v.getNum()) {
+                        throw new RemoteServiceException("机型【" + v.getProductName() + "】设备数量不可大于维保项目的机型设备数量");
+                    }
+                }
+            }
+            pgOrderProductService.saveBatch(orderAddBeanDTO.getOrderProducts());
+            this.upOrderProduct(orderBase.getId());
+        }
+
+        //师傅信息
+        pgOrderWorkerService.lambdaUpdate().eq(PgOrderWorker::getOrderBaseId, orderBaseId).remove();
+        if (CollectionUtils.isNotEmpty(orderAddBeanDTO.getOrderWorkers())) {
+            for (PgOrderWorker v : orderAddBeanDTO.getOrderWorkers()) {
+                v.setOrderBaseId(orderBase.getId());
+            }
+            pgOrderWorkerService.saveBatch(orderAddBeanDTO.getOrderWorkers());
+        }
+
+        //如果变更了师傅,则需要将“抢单”标识剔除
+        if (changeWorker || (addFlag && CollectionUtils.isNotEmpty(orderAddBeanDTO.getOrderWorkers()))) {
+            orderBase.setIsQd(false);
+            if (orderBase.getIsImportExcel())
+                orderBase.setIsMeet(false);
+            else
+                orderBase.setIsMeet(true);
+        }
+
+        String orderTitle = getOrderTitle(orderAddBeanDTO.getOrderProducts());
+        orderBase.setOrderTitle(orderTitle);
+        orderBase.insertOrUpdate();
+
+
+        orderFlagLogic.saveOrderFlag(Lists.newArrayList(orderBase.getId()),OrderFlagEnum.ORDER);
+
+        //日志记录
+        if (addFlag) {
+            addLogJSM(orderBase, "");
+        }
+
+        //重算机型数量
+        reNum(orderBaseId);
+
+        //增值服务工单
+        increWorkerOrderInsideCode(orderBaseId);
+
+        //维保工单
+        if (StringUtils.isNotBlank(orderAddBeanDTO.getRpProjectRepairId()))
+            repairProjectWorkerOrder(orderBase);
+        if (orderAddBeanDTO.getSaleType() != null && orderAddBeanDTO.getSaleType() == SaleTypeEnum.B.getIntKey()) {
+            if (StringUtils.isAnyBlank(orderAddBeanDTO.getProjectNo(), orderAddBeanDTO.getProjectName())) {
+                throw new RemoteServiceException("工程单的工程编号和工程名称不能为空");
+            }
+            orderFlagLogic.saveOrderFlag(Lists.newArrayList(orderBaseId), OrderFlagEnum.PROJECT);
+        }
+        //租赁单业务处理
+        orderBase = handleZl(orderBase);
+        //变更师傅的通知
+        if (changeWorker) {
+            orderLogLogic.insertNotice(orderBaseId);
+        }
+
+        //创建工单添加消息
+        if (addFlag) {
+            this.sendMaterialExamine(orderBase.getId());
+        }
+        //新建单,或者从旧单的不抢单改成抢单
+//        if(addFlag || (!oldIsQd && orderAddBeanDTO.getIsQd())){
+//            //抢单的通知,通知给当前网点的所有师傅
+//            this.addQdNotice(orderBase);
+//        }
+        if (orderAddBeanDTO.getIsQd() && orderBase.getOrderStatus().equals(OrderBaseStatusEnum.DQD.getKey())) {
+            this.addQdNotice(orderBase);
+        }
+        return orderBaseId;
+    }
+
+    private PgOrderBase converJSM(PgOrderBase old, OrderAddBeanDTO orderAddBeanDTO, Boolean isAdd) {
+
+        //工单渠道 (维保的工单渠道是写死的,不能检查)
+//        SysDictCompany orderChannelDict = sysDictCompanyLogic.dictByTypeOfCode(SysDictConstant.ORDER_CHANNEL, orderAddBeanDTO.getOrderChannelId(),companyWechatId);
+//        if(orderChannelDict == null){
+//            throw new RemoteServiceException("工单渠道不存在");
+//        }
+        //工单类型
+        OrderSmallType orderSmallType = orderSmallTypeService.getById(orderAddBeanDTO.getOrderSmallType());
+        if (orderSmallType == null) {
+            throw new RemoteServiceException("工单类型不存在【orderSmallType】");
+        }
+        //业务类型,工单大类
+        OrderTypeEnum orderTypeEnum = BaseEnum.keyToEnum(OrderTypeEnum.class, orderSmallType.getOrderType());
+        if (orderTypeEnum == null) {
+            throw new RemoteServiceException("工单类型业务线错误【orderType】");
+        }
+
+        //PgOrderBase pgOrderBase = pgOrderBaseService.getById(orderAddBeanDTO.getId());
+//        if(pgOrderBase == null){
+//            pgOrderBase = new PgOrderBase();
+//        }
+        PgOrderBase pgOrderBase = null;
+        if (old != null) {
+            //深拷贝
+            pgOrderBase = ObjectUtil.clone(old);
+        } else {
+            pgOrderBase = new PgOrderBase();
+        }
+
+        if (!isAdd && OrderBaseStatusEnum.isOver().contains(pgOrderBase.getOrderStatus())) {
+            throw new RemoteServiceException("当前状态不可编辑工单");
+        }
+        if (StringUtils.isBlank(orderAddBeanDTO.getSource())) {
+            orderAddBeanDTO.setSource("自建工单");
+        }
+        if (StringUtils.isBlank(orderAddBeanDTO.getLng()) || StringUtils.isBlank(orderAddBeanDTO.getLat())) {
+            String gpsAddress = orderAddBeanDTO.getProvince() + orderAddBeanDTO.getCity() + orderAddBeanDTO.getArea() + orderAddBeanDTO.getStreet() + orderAddBeanDTO.getAddress();
+            //反查经纬度
+            String location = lbsAmapLogic.getLocationByAddress(gpsAddress);
+            orderAddBeanDTO.setLng(location.split(",")[0]);
+            orderAddBeanDTO.setLat(location.split(",")[1]);
+        }
+
+        Region p = regionService.lambdaQuery().eq(Region::getProvinceName, orderAddBeanDTO.getProvince()).last("limit 1").one();
+        Region c = regionService.lambdaQuery().eq(Region::getProvinceName, orderAddBeanDTO.getProvince())
+                .eq(Region::getCityName, orderAddBeanDTO.getCity())
+                .last("limit 1").one();
+        Region a = regionService.lambdaQuery().eq(Region::getProvinceName, orderAddBeanDTO.getProvince())
+                .eq(Region::getCityName, orderAddBeanDTO.getCity())
+                .eq(Region::getAreaName, orderAddBeanDTO.getArea())
+                .last("limit 1").one();
+        Region s = regionService.lambdaQuery().eq(Region::getProvinceName, orderAddBeanDTO.getProvince())
+                .eq(Region::getCityName, orderAddBeanDTO.getCity())
+                .eq(Region::getAreaName, orderAddBeanDTO.getArea())
+                .eq(Region::getName, orderAddBeanDTO.getStreet())
+                .last("limit 1").one();
+
+        pgOrderBase.setUserName(orderAddBeanDTO.getUserName())
+                .setLinkName(orderAddBeanDTO.getLinkName())
+                .setUserMobile(orderAddBeanDTO.getUserMobile())
+                .setUserMobile2(orderAddBeanDTO.getUserMobile2())
+                .setProvinceId(p.getProvinceCode())
+                .setProvince(orderAddBeanDTO.getProvince())
+                .setCityId(c.getCityCode())
+                .setCity(orderAddBeanDTO.getCity())
+                .setAreaId(a.getAreaCode())
+                .setArea(orderAddBeanDTO.getArea())
+                .setStreetId(s.getId())
+                .setStreet(orderAddBeanDTO.getStreet())
+                .setAddress(orderAddBeanDTO.getAddress())
+                .setGpsAddress(orderAddBeanDTO.getGpsAddress())
+                .setOrderChannelId(orderAddBeanDTO.getOrderChannelId())
+                .setOrderChannelText(orderAddBeanDTO.getOrderChannelText())
+//                .setOrderChannelId(orderChannelDict.getDictCode())
+//                .setOrderChannelText(orderChannelDict.getDictValue())
+                .setAppointmentTime(orderAddBeanDTO.getAppointmentTime())
+                .setAppointmentEndTime(orderAddBeanDTO.getAppointmentEndTime())
+                .setSaleCompany(orderAddBeanDTO.getSaleCompany())
+                .setRemark(orderAddBeanDTO.getRemark())
+                .setLastOperatorAppointmentTime(new Date())
+                .setRpProjectRepairId(orderAddBeanDTO.getRpProjectRepairId())
+                .setLng(orderAddBeanDTO.getLng())
+                .setLat(orderAddBeanDTO.getLat())
+                .setSaleType(orderAddBeanDTO.getSaleType())
+                .setSaleOrderId(orderAddBeanDTO.getSaleOrderId())
+                .setProjectNo(orderAddBeanDTO.getProjectNo())
+                .setProjectName(orderAddBeanDTO.getProjectName())
+                .setIsZl(orderAddBeanDTO.getIsZl())
+                .setIsQd(orderAddBeanDTO.getIsQd())
+                .setSource(orderAddBeanDTO.getSource())
+                .setServiceStatus(orderAddBeanDTO.getServiceStatus())
+                .setComplaint(orderAddBeanDTO.getComplaint())
+                .setUrgent(orderAddBeanDTO.getUrgent())
+                .setEvaluate(orderAddBeanDTO.getEvaluate())
+                .setSalesPlatform(orderAddBeanDTO.getSalesPlatform())
+                .setBuyName(orderAddBeanDTO.getBuyName())
+                .setSalesTypeName(orderAddBeanDTO.getSalesTypeName())
+                .setReqStatus(orderAddBeanDTO.getReqStatus())
+                .setReqText(orderAddBeanDTO.getReqText())
+                .setReqType(orderAddBeanDTO.getReqType())
+                .setServiceOrderId(orderAddBeanDTO.getServiceOrderId())
+                .setSalesOrderId(orderAddBeanDTO.getSalesOrderId())
+                .setManagerName(orderAddBeanDTO.getManagerName())
+                .setOperateEntity(orderAddBeanDTO.getOperateEntity())
+                .setMainName(orderAddBeanDTO.getMainName())
+                .setIsImportExcel(orderAddBeanDTO.getIsImportExcel())
+        ;
+
+        OrderBaseStatusEnum orderBaseStatusEnum = OrderBaseStatusEnum.DSHPG;
+        AdminWebsit adminWebsit = null;
+        //网点
+        if (StringUtils.isNotBlank(orderAddBeanDTO.getWebsitId())) {
+            adminWebsit = adminWebsitService.getById(orderAddBeanDTO.getWebsitId());
+
+
+            if (adminWebsit == null) {
+
+                WebsitDispatch websitDispatch = websitDispatchService.lambdaQuery()
+                        .eq(WebsitDispatch::getStreetCode, pgOrderBase.getStreetId())
+                        .eq(WebsitDispatch::getSaleTypeId, pgOrderBase.getSaleType())
+                        .eq(WebsitDispatch::getCategoryId, orderAddBeanDTO.getOrderProducts().get(0).getMainId())
+                        .eq(WebsitDispatch::getOrderSmallId, pgOrderBase.getOrderSmallType())
+                        .last("limit 1").one();
+
+                if (websitDispatch != null) {
+
+                    adminWebsit = adminWebsitService.getById(websitDispatch.getWebsitId());
+                }
+
+            }
+            if (adminWebsit == null) {
+                orderBaseStatusEnum = OrderBaseStatusEnum.DSHPG;
+            }else {
+                if (adminWebsit.getType().equals(AdminWebsitTypeEnum.B.getKey())) {
+                    orderBaseStatusEnum = OrderBaseStatusEnum.DSHPG;
+                }
+                if (adminWebsit.getType().equals(AdminWebsitTypeEnum.C.getKey())
+                        && (orderBaseStatusEnum == OrderBaseStatusEnum.DSHPG || orderBaseStatusEnum == OrderBaseStatusEnum.DWDPG || orderBaseStatusEnum == OrderBaseStatusEnum.DQD)) {
+                    orderBaseStatusEnum = OrderBaseStatusEnum.DWDPG;
+                    if (pgOrderBase.getIsQd() != null && pgOrderBase.getIsQd()) {
+                        orderBaseStatusEnum = OrderBaseStatusEnum.DQD;
+                    }
+                }
+                pgOrderBase.setWebsitId(adminWebsit.getWebsitId());
+                pgOrderBase.setWebsitName(adminWebsit.getName());
+                pgOrderBase.setWebsitPhone(adminWebsit.getWebsitPhone());
+                //只记录第一次
+                if (pgOrderBase.getDispatchWebsitTime() == null) {
+                    pgOrderBase.setDispatchWebsitTime(new Date());
+                }
+            }
+
+        }
+        //师傅
+        String workerIdsStr = "";
+        if (CollectionUtils.isNotEmpty(orderAddBeanDTO.getOrderWorkers())) {
+            //如果是待网点派工的工单,此时变更状态为待接单
+            if (orderBaseStatusEnum == OrderBaseStatusEnum.DWDPG || orderBaseStatusEnum == OrderBaseStatusEnum.DQD ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.FL ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.CJ ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.YPD ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.DXSPD ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.DZBPG ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.DWDSPGP ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.DXSSPGP ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.DTJXSSPGP ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.DFZXPD ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.DFZXSPGP ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.XSBH ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.TJXSBH ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.ZBBH ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.FZXBH ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.WDBH ||
+                    orderBaseStatusEnum == OrderBaseStatusEnum.DFZXPD
+
+
+            )
+                orderBaseStatusEnum = OrderBaseStatusEnum.DJD;
+
+            List<String> workerIds = orderAddBeanDTO.getOrderWorkers().stream().map(PgOrderWorker::getWorkerId).collect(Collectors.toList());
+            workerIdsStr = StringUtils.join(workerIds, ",");
+
+            PgOrderWorker masterWorker = orderAddBeanDTO.getOrderWorkers().stream()
+                    .filter(PgOrderWorker::getIsMaster).findFirst().orElse(null);
+
+            if (Objects.isNull(masterWorker)) {
+                throw new RemoteServiceException("请选择主要工程师");
+            }
+
+            if (Objects.nonNull(adminWebsit)
+                    && adminWebsit.getAttr().equals(WebsitAttrEnum.SELF.getKey())
+                    && "安装, 拆移机".contains(orderSmallType.getOrderSmallTypeText())
+                    && StringUtils.isBlank(masterWorker.getWorkerNumber())) {
+                throw new RemoteServiceException("工单类型必须是有S编号的主要工程师");
+            }
+
+            pgOrderBase.setWorkerId(masterWorker.getWorkerId());
+            pgOrderBase.setWorkerNumber(masterWorker.getWorkerNumber());
+            pgOrderBase.setWorkerName(masterWorker.getWorkerName());
+            pgOrderBase.setWorkerMobile(masterWorker.getWorkerMobile());
+            pgOrderBase.setWorkerIdcard(masterWorker.getWorkerIdcard());
+            pgOrderBase.setWebsitId(masterWorker.getWebsitId());
+            pgOrderBase.setWebsitName(masterWorker.getWebsitName());
+            pgOrderBase.setWorkerIdList(workerIdsStr);
+            //只记录第一次
+            if (pgOrderBase.getDispatchTime() == null) {
+                pgOrderBase.setDispatchTime(new Date());
+            }
+            //旧单状态,如果是派师傅之后的状态则根据旧单的状态来
+            if (StringUtils.isNotBlank(pgOrderBase.getOrderStatus())) {
+                OrderBaseStatusEnum oldOrderBaseStatusEnum = BaseEnum.keyToEnum(OrderBaseStatusEnum.class, pgOrderBase.getOrderStatus());
+                if (!OrderBaseStatusEnum.notDispatchWorker().contains(oldOrderBaseStatusEnum.getKey())) {
+                    orderBaseStatusEnum = oldOrderBaseStatusEnum;
+                }
+            }
+
+        } else {
+            pgOrderBase.setWorkerId("");
+            pgOrderBase.setWorkerNumber("");
+            pgOrderBase.setWorkerName("");
+            pgOrderBase.setWorkerMobile("");
+            pgOrderBase.setWorkerIdcard("");
+            pgOrderBase.setWorkerIdList("");
+        }
+
+        pgOrderBase.setOrderSmallType(orderAddBeanDTO.getOrderSmallType())
+                .setOrderSmallTypeText(orderSmallType.getOrderSmallTypeText())
+                .setOrderType(orderSmallType.getOrderType())
+                .setOrderTypeText(orderTypeEnum.getRemark());
+
+        if (isAdd) {
+            pgOrderBase.setCreateDate(DateUtil.beginOfDay(new Date()));
+        }
+        pgOrderBase.setOrderStatus(orderBaseStatusEnum.getKey());
+        pgOrderBase.setOrderStatusText(orderBaseStatusEnum.getRemark());
+
+        return pgOrderBase;
+
+    }
 }

+ 2 - 3
mall-server-api/src/main/java/com/gree/mall/manager/utils/email/EmailUtilsNew.java

@@ -179,7 +179,7 @@ public class EmailUtilsNew {
         Message[] messages = inbox.getMessages();
 
         int mailCounts = messages.length;
-        for(int i = messages.length-1; i > messages.length -20; i--) {
+        for(int i = messages.length-1; i > messages.length -30; i--) {
 
             String subject = messages[i].getSubject();
             String from = (messages[i].getFrom()[0]).toString();
@@ -191,8 +191,7 @@ public class EmailUtilsNew {
             if (!subject.split("-")[1].equals(sendBatch) ){
                 continue;
             }
-            //今天接收的邮件
-            if(receivedDate.getTime() > DateUtil.beginOfDay(new Date()).getTime() && from.indexOf(receEmail) > -1){
+            if(from.indexOf(receEmail) > -1){
                 messages[i].setFlag(Flags.Flag.SEEN, true);
                 inbox.close(false);
                 store.close();