yaozhixue vor 1 Jahr
Ursprung
Commit
aae6cf0d99

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/service/impl/InstallProduceDataUploadServiceImpl.java

@@ -186,7 +186,7 @@ public class InstallProduceDataUploadServiceImpl implements InstallProduceDataUp
 
                 // 数据上传任务表提取对应的任务类型数据
                 ojtutls = outJiasmToGreeUploadTaskListService.lambdaQuery()
-                        // .eq(OutJiasmToGreeUploadTaskList::getSynStatus,0)
+                        .eq(OutJiasmToGreeUploadTaskList::getSynStatus,0)
                         .eq(OutJiasmToGreeUploadTaskList::getUploadTaskType,uploadTaskType)
 
                         //.eq(OutJiasmToGreeUploadTaskList::getSynReqId,26208) // 测试用

+ 260 - 39
src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairProduceDataUploadServiceImpl.java

@@ -12,15 +12,21 @@ import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
 import com.zfire.jiasm.syncdata.dao.mapper.*;
 import com.zfire.jiasm.syncdata.data.Token;
+import com.zfire.jiasm.syncdata.gree.GreeLogic;
+import com.zfire.jiasm.syncdata.helper.GreeFileResponseHelper;
+import com.zfire.jiasm.syncdata.helper.GreeFileSaveHelper;
+import com.zfire.jiasm.syncdata.http.PostObjectSample;
 import com.zfire.jiasm.syncdata.parameter.InstallCJDetailFile;
 import com.zfire.jiasm.syncdata.parameter.OrderPar;
 import com.zfire.jiasm.syncdata.parameter.ReAppointment;
 import com.zfire.jiasm.syncdata.plus.entity.*;
 import com.zfire.jiasm.syncdata.plus.service.*;
+import com.zfire.jiasm.syncdata.response.ResultData;
 import com.zfire.jiasm.syncdata.response.WebsitSH;
 import com.zfire.jiasm.syncdata.service.PublicService;
 import com.zfire.jiasm.syncdata.service.RepairProduceDataUploadService;
 import com.zfire.jiasm.syncdata.utils.*;
+import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -132,6 +139,10 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
     BrandWebsitService brandWebsitService;
     @Resource
     ReAppointmentOrderMapper reAppointmentOrderMapper;
+    @Resource
+    OSSUtil ossUtil;
+    @Resource
+    GreeLogic greeLogic;
 
 
 
@@ -902,7 +913,6 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
      *
      *
      */
-    @Transactional(rollbackFor = Exception.class)
     public void generateItfTblAssignUpload(Brand brand, Map<String, List<SysDictRef>> sysDictRefXLMapXq,
                                            Long taskId, OutJiasmToGreeUploadTaskList sourceData, String newDykh,
                                            OutJiasmToGreeUploadTaskList row) {
@@ -911,44 +921,85 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
                 .eq(OrderBase::getId, sourceData.getOrderNo()).one();
         if (orderBase !=null && orderBase.getUploadFlag()){
             // 增加初始化处理,不需要事务
-            // 同步工单的pgid,pguuid
-            upOrderBasePgid(sourceData, orderBase, newDykh);
-            // 同步维修工单产品信息 pgid
-            upOrderProduct(sourceData, newDykh);
-            // 同步维修工单操作日志pgid
-            uporderRepairOperatingLogpgid(sourceData, newDykh);
-            // 同步预约改约-总部短信发送请求fjid 这里字段必须有值,这里无需处理
-            // upFaGreeSmsFjid(sourceData, newDykh);
-            // 同步派服务人员-短信发送请求fjid 这里字段必须有值,这里无需处理
-            // upFaGreeSmsWorker(sourceData, newDykh);
+            dataInit(sourceData, newDykh, orderBase);
 
+            itfTblAssignUpload(brand, sysDictRefXLMapXq,taskId, sourceData, newDykh,row, orderBase);
+        }
+        // 修改数据上传任务表中的状态   这里固定值 66
+        publicService.updateUploadTaskListStatus(row.getOrderNo(),row.getSynReqId(),1,66);
+    }
 
+    @Transactional(rollbackFor = Exception.class)
+    public void itfTblAssignUpload(Brand brand, Map<String, List<SysDictRef>> sysDictRefXLMapXq,
+                                           Long taskId, OutJiasmToGreeUploadTaskList sourceData, String newDykh,
+                                           OutJiasmToGreeUploadTaskList row, OrderBase orderBase) {
+        // 删除工单更新被忽略
+        // 接收派工网点为空上传被忽略
+        if (StringUtils.isEmpty(orderBase.getReceWebsitId()) || orderBase.getReceWebsitId().equals("0")){
+            publicService.updateUploadTaskListStatus(row.getOrderNo(),row.getSynReqId(),1,66);
+            return ;
+        }
+        // 生成待同步的工单主表数据
+        getItfTblAssignUpload(brand, sysDictRefXLMapXq, taskId, sourceData, newDykh, orderBase);
+        // 生成短信评价发送数据
+        generateMessage(brand, sourceData, newDykh, orderBase);
+        // 检查附件完整性 未同步图片不处理本记录数据同步
+        if (checkFile(sourceData.getOrderNo(),row.getSynReqId())){
+            return ;
+        }
+        // 处理采集明细数据(生成维修结算+生成维修现象数据)    TL_PrePareSynDataby_fa_order_repair_detail
+        generateRepairDetailOrReason(brand, orderBase);
+    }
 
+    private void dataInit(OutJiasmToGreeUploadTaskList sourceData, String newDykh, OrderBase orderBase) {
+        // 同步工单的pgid,pguuid
+        upOrderBasePgid(sourceData, orderBase, newDykh);
+        // 同步维修工单产品信息 pgid
+        upOrderProduct(sourceData, newDykh);
+        // 同步维修工单操作日志pgid
+        uporderRepairOperatingLogpgid(sourceData, newDykh);
+        // 同步预约改约-总部短信发送请求fjid 这里字段必须有值,这里无需处理
+        // upFaGreeSmsFjid(sourceData, newDykh);
+        // 同步派服务人员-短信发送请求fjid 这里字段必须有值,这里无需处理
+        // upFaGreeSmsWorker(sourceData, newDykh);
+        // 修改序采集单内的序
+        upOrderRepairDetail(orderBase.getId());
 
+        // 格力总部数据采集主键为空时代表为公司采集的数据,brandwxjsguid填写UUID
+        updateOrderRepairDetailWxjsguid(orderBase.getId());
 
+        // 采集明细表全表更新pgid = brand_pgid
+        upBrandPgid(orderBase);
 
-            // 删除工单更新被忽略
-            // 接收派工网点为空上传被忽略
-            if (StringUtils.isEmpty(orderBase.getReceWebsitId()) || orderBase.getReceWebsitId().equals("0")){
-                publicService.updateUploadTaskListStatus(row.getOrderNo(),row.getSynReqId(),1,66);
-                return ;
-            }
-            // 生成待同步的工单主表数据
-            getItfTblAssignUpload(brand, sysDictRefXLMapXq, taskId, sourceData, newDykh, orderBase);
-            // 生成短信评价发送数据
-            generateMessage(brand, sourceData, newDykh, orderBase);
-            // 检查附件完整性
-            if (checkFile(sourceData.getOrderNo(),row.getSynReqId())){
-                return ;
-            }
-            // 处理采集明细数据(生成维修结算+生成维修现象数据)    TL_PrePareSynDataby_fa_order_repair_detail
-            generateRepairDetailOrReason(brand, orderBase);
-        }
-        // 修改数据上传任务表中的状态   这里固定值 66
-        publicService.updateUploadTaskListStatus(row.getOrderNo(),row.getSynReqId(),1,66);
-        return ;
+        // 修改 维修现象主键、维修明细主键
+        upOrderRepairDetailReason(orderBase.getId());
+
+        // 上传图片
+        generateFileInit(orderBase);
     }
 
+    private void updateOrderRepairDetailWxjsguid(String id) {
+        List<OrderRepairDetail> upList = new ArrayList<>();
+        // 看有无需要修改的数据
+        List<OrderRepairDetail> detaillistz = orderRepairDetailService.lambdaQuery()
+                .eq(OrderRepairDetail::getOrderBaseId, id)
+                .eq(OrderRepairDetail::getBrandWxjsguid, "").list();
+        if (CollectionUtils.isEmpty(detaillistz)){
+            return;
+        }
+        for (OrderRepairDetail i:detaillistz){
+            OrderRepairDetail u = new OrderRepairDetail();
+            MyBeanUtils.copyProperties(i,u);
+            u.setBrandWxjsguid(UUID.randomUUID().toString());
+            upList.add(u);
+        }
+        // 修改序
+        if (upList.size()>0){
+            orderRepairDetailService.updateBatchById(upList);
+            upList.clear();
+        }
+        detaillistz.clear();
+    }
 
     private Boolean checkFile(String orderNo, Long synReqId){
         InstallCJDetailFile installCJDetailFile = new InstallCJDetailFile();
@@ -963,6 +1014,42 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
         return Boolean.FALSE;
     }
 
+    // 修改 维修现象主键、维修明细主键
+    private void upOrderRepairDetailReason(String id) {
+        List<OrderRepairDetailReason> ulist = new ArrayList<>();
+        // 提取采集的数据
+        List<OrderRepairDetail> orderRepairDetails = orderRepairDetailService.lambdaQuery()
+                .eq(OrderRepairDetail::getOrderBaseId, id)
+                .orderByAsc(OrderRepairDetail::getId)
+                .list();
+        if (orderRepairDetails != null && orderRepairDetails.size() > 0) {
+            for (OrderRepairDetail detail : orderRepairDetails) {
+                // status 状态:0=待采集,1=采集中,2=已采集,3=已完成
+                if (detail.getStatus().equals(0)) {
+                    continue;
+                }
+                List<OrderRepairDetailReason> reasons = orderRepairDetailReasonService.lambdaQuery()
+                        .eq(OrderRepairDetailReason::getOrderRepairDetailId, detail.getId()).list();
+                for (OrderRepairDetailReason r : reasons) {
+                    if (StringUtils.isEmpty(r.getXxyyguid()) || StringUtils.isEmpty(r.getWxjsguid())) {
+                        OrderRepairDetailReason up = new OrderRepairDetailReason();
+                        if (StringUtils.isEmpty(r.getXxyyguid())) {
+                            r.setXxyyguid(UUID.randomUUID().toString());
+                        }
+                        if (StringUtils.isEmpty(r.getWxjsguid())) {
+                            r.setWxjsguid(UUID.randomUUID().toString());
+                        }
+                        ulist.add(up);
+                    }
+                }
+            }
+            if (ulist.size() > 0) {
+                orderRepairDetailReasonService.updateBatchById(ulist);
+            }
+        }
+    }
+
+
     private void generateRepairDetailOrReason(Brand brand, OrderBase orderBase) {
         List<ItfTblWxjsJyktUpload> jykts = new ArrayList<>();
         List<ItfTblWxjsXxyyJyktUpload>  jyktus = new ArrayList<>();
@@ -1084,10 +1171,14 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
                 continue;
             }
             // 品牌方fileindex未获取上传被忽略
-            if (StringUtils.isEmpty(file.getBrandFileIndex())){
+            /*if (StringUtils.isEmpty(file.getBrandFileIndex())){
+                continue;
+            }*/
+
+            if (StringUtils.isEmpty(file.getBrandFilePath())){
                 continue;
             }
-            // 修改附件的fjguid
+           /* // 修改附件的fjguid
             if (StringUtils.isEmpty(file.getFjguid())){
                 OrderDetailFile upf = new OrderDetailFile();
                 upf.setId(file.getId());
@@ -1102,7 +1193,7 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
                 upf.setPgwcmxid(UUID.randomUUID().toString());
                 orderDetailFileService.updateById(upf);
                 file.setPgwcmxid(upf.getPgwcmxid());
-            }
+            }*/
 
             // 生成附件数据
             InstallCJDetailFile request = new InstallCJDetailFile();
@@ -1113,11 +1204,140 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
         }
     }
 
+    private void generateFileInit(OrderBase orderBase) {
+        // 提取采集的数据
+        List<OrderRepairDetail> orderRepairDetails = orderRepairDetailService.lambdaQuery()
+                .eq(OrderRepairDetail::getOrderBaseId, orderBase.getId())
+                .orderByAsc(OrderRepairDetail::getId)
+                .list();
+        if (orderRepairDetails !=null && orderRepairDetails.size()>0){
+            for (OrderRepairDetail detail :orderRepairDetails){
+                // status 状态:0=待采集,1=采集中,2=已采集,3=已完成
+                if (detail.getStatus().equals(0)){
+                    continue;
+                }
+                OrderDetailFileInit(orderBase, detail);
 
+                OrderDetailFileUpload(orderBase, detail);
+            }
+        }
+    }
 
 
+    private void OrderDetailFileInit(OrderBase orderBase, OrderRepairDetail detail){
+        List<OrderDetailFile> upodfs = new ArrayList<>();
+        List<OrderDetailFile> odfs = new ArrayList<>();
+        // 提取数据采集附件数据
+        odfs =  orderDetailFileService.lambdaQuery()
+                .eq(OrderDetailFile::getOrderBaseId,orderBase.getId())
+                .eq(OrderDetailFile::getOrderDetailId, detail.getId()).list();
+        for (OrderDetailFile file:odfs){
+            if (StringUtils.isEmpty(file.getFjguid()) || StringUtils.isEmpty(file.getPgwcmxid())){
+                OrderDetailFile upf = new OrderDetailFile();
+                MyBeanUtils.copyProperties(file,upf);
+                // 修改附件的fjguid
+                if (StringUtils.isEmpty(file.getFjguid())){
+                    upf.setFjguid(UUID.randomUUID().toString());
+                    file.setFjguid(upf.getFjguid());
+                }
+                // 修改采集明细序号 wxmxguid
+                if (StringUtils.isEmpty(file.getPgwcmxid())){
+                    upf.setPgwcmxid(UUID.randomUUID().toString());
+                }
+                upodfs.add(upf);
+            }
+        }
+        if (upodfs.size()>0){
+            orderDetailFileService.updateBatchById(upodfs);
+            upodfs.clear();
+        }
+        odfs.clear();
+    }
+
+    private void OrderDetailFileUpload(OrderBase orderBase, OrderRepairDetail detail){
+        String oldFile ="";
+        String newFile ="";
+        // 提取数据采集附件数据
+        List<OrderDetailFile> odfs =  orderDetailFileService.lambdaQuery()
+                .eq(OrderDetailFile::getOrderBaseId,orderBase.getId())
+                .eq(OrderDetailFile::getOrderDetailId, detail.getId()).list();
+        for (OrderDetailFile file:odfs){
+            // path未准备上传被忽略
+            if (StringUtils.isEmpty(file.getFilePath())){
+                continue;
+            }
+            if (StringUtils.isEmpty(file.getBrandFilePath())){
+                // 上传图片
+                oldFile = IdWorker.getIdStr() + ".jpeg";
+                baseService.saveToFile(ossUtil.getUrlWw(file.getFilePath()),oldFile);
+                // 获取文件
+                newFile = oldFile;
+                WebsitSH websitSH = publicService.ptshwdToshshwd(orderBase.getWebsitId(), orderBase.getMainId());
+                log.info("图片上传网点编号:{}",websitSH.getWdId());
+                Boolean flag = uploadFileexc(newFile, oldFile,websitSH.getWdId(), file);
+                new File(newFile).delete();
+                if (!flag) {
+                    continue;
+                }
+            }
+        }
+    }
 
+    private Boolean uploadFileexc(String newFile, String oldFile,String wdno,OrderDetailFile file) {
+        try{
+            // 1: 获取签名信息
+            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
+            if (response.getStatusCode() == 200){
+                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
+                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+oldFile);
+                // 2:文件上传
+                PostObjectSample ossPostObject = new PostObjectSample();
+                String result = ossPostObject.PostObject(newFile, resultData.getExtData());
+                // 3: 保存文件
+                if (org.apache.commons.lang3.StringUtils.isEmpty(result.trim())){
+                    Map<String,String>req = new HashMap<>();
+                    // 生成对象
+                    getSaveFileInfo(oldFile, resultData, req);
+                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
+
+                    if (responses.getStatusCode() == 200){
+                        file.setBrandFilePath(responses.getData().getId());
+                        file.setSynErrMsg("");
+                        orderDetailFileService.updateById(file);
+                    } else {
+                        // 失败
+                        file.setSynErrMsg("保存图片信息失败");
+                        orderDetailFileService.updateById(file);
+                        return Boolean.FALSE;
+                    }
+                } else {
+                    // 上传图片到OSS失败
+                    file.setSynErrMsg("上传图片到OSS失败");
+                    orderDetailFileService.updateById(file);
+                    return Boolean.FALSE;
+                }
+            } else {
+                //  获取签名信息失败
+                file.setSynErrMsg("获取签名信息失败");
+                orderDetailFileService.updateById(file);
+                return Boolean.FALSE;
+            }
+            return Boolean.TRUE;
+        } catch (Exception ex) {
+            file.setSynErrMsg("操作图片信息失败");
+            orderDetailFileService.updateById(file);
+            return Boolean.FALSE;
+        }
+    }
 
+    private void getSaveFileInfo(String id1, ResultData resultData, Map<String, String> req) {
+        req.put("bizAppId","flydiy-auto-sit-default-front-greeshmerge");
+        req.put("bizTable","default");
+        req.put("bizType","default");
+        req.put("accessType","auth");
+        req.put("url", resultData.getExtData().getDir());
+        req.put("name", id1 +".jpeg");
+    }
 
     private void generateReason(List<ItfTblWxjsXxyyJyktUpload> jyktus, OrderRepairDetail detail) {
         // 提取维修数据采集故障现象数据  数据采集明细表的所有id
@@ -1128,12 +1348,14 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
                 continue;
             }
             // 修改 维修现象主键、维修明细主键
-            upxxyyguid(r);
+            // upxxyyguid(r);
             // 生成维修现象数据
             generateJyktU(jyktus, detail, r);
         }
     }
 
+
+
     private void generateJyktU(List<ItfTblWxjsXxyyJyktUpload> jyktus, OrderRepairDetail detail, OrderRepairDetailReason r) {
         ItfTblWxjsXxyyJyktUpload add = new ItfTblWxjsXxyyJyktUpload();
         add.setWorkerOrderNo(detail.getOrderBaseId());
@@ -1197,14 +1419,13 @@ public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUplo
     private ItfTblWxjsJyktUpload generateJykt(Brand brand, OrderBase orderBase, OrderRepairDetail detail) {
         WebsitSH websitSH = new WebsitSH();
 
-        // 修改序采集单内的序
+        /*// 修改序采集单内的序
         upOrderRepairDetail(orderBase.getId());
-
-        // 格力总部数据采集主键为空时代表为公司采集的数据,未赋值时账值 wxjsguid = brandWxjsguid
         // 格力总部数据采集主键为空时代表为公司采集的数据,填写UUID
         upBrandWxjsguid(detail);
         // 采集明细表全表更新pgid = brand_pgid
-        upBrandPgid(orderBase);
+        upBrandPgid(orderBase);*/
+
         // 生成维修结算数据
         OrderPar request = new OrderPar();
         request.setOrderNo(orderBase.getId());

+ 1 - 1
src/main/resources/mapper/FileOrderDetailMapper.xml

@@ -78,7 +78,7 @@
         select a.order_base_id as worker_order_no,UNIX_TIMESTAMP(a.create_time) as fa_order_repair_annex_id,
                a.fjguid,'guangfo' as created_by,a.create_time as created_date,
                'guangfo' as last_modified_by,a.update_time as last_modified_date,
-               b.brand_wxjsguid as wxjsguid,a.brand_file_index as wjlj,a.create_time as cjsj,
+               b.brand_wxjsguid as wxjsguid,a.brand_file_path as wjlj,a.create_time as cjsj,
                a.file_type as tpms,a.file_path as wjnm,a.pgwcmxid as wxmxguid,
                b.id as wxjsmxguid,c.repair_item_no as repairitemno,c.xxyyguid as repairtroubleno
         from order_detail_file a