瀏覽代碼

同步大中型订单和产品,不走流程

wucl 1 年之前
父節點
當前提交
73b548c77e

+ 10 - 10
biz-base/src/main/java/com/dayou/controller/HistoryOrderController.java

@@ -49,16 +49,16 @@ public class HistoryOrderController {
         return RestResponse.data(pages);
     }
 
-//    /**
-//     * 同步大中型订单
-//     * @param id
-//     * @return
-//     */
-//    @GetMapping("/fetch/major/{id}")
-//    public RestResponse<Boolean> fetchAboutMajor(@PathVariable("id") String id){
-//        Boolean ret = dyoaHistoryService.fetchAboutMajor(id);
-//        return RestResponse.data(ret);
-//    }
+    /**
+     * 同步大中型订单
+     * @param id
+     * @return
+     */
+    @GetMapping("/fetch/major/{id}")
+    public RestResponse<Boolean> fetchAboutMajor(@PathVariable("id") String id){
+        Boolean ret = dyoaHistoryService.fetchAboutMajor(id);
+        return RestResponse.data(ret);
+    }
 
     /**
      * 获取老系统资产订单

+ 33 - 13
biz-base/src/main/resources/application-local.yml

@@ -3,19 +3,39 @@ server:
 
 spring:
   datasource:
-    url: jdbc:mysql://localhost:3306/item-management?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-    username: root
-    password: 914851221
-    initialSize: 10 #初始化连接数
-    minIdle: 10 #最小空闲连接数
-    max-active: 100 #最大连接数
-    maxWait: 60000 #最大等待时间ms(获取不到连接后多久超时)
-    hikari:
-      minimum-idle: 5
-      maximum-pool-size: 200
-      connection-timeout: 30000
-      idle-timeout: 600000
-      max-lifetime: 1800000
+    dynamic:
+      primary: mbs
+      datasource:
+        mbs:
+          url: jdbc:mysql://localhost:3306/item-management?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          username: root
+          password: 914851221
+          initialSize: 10 #初始化连接数D
+          minIdle: 10 #最小空闲连接数
+          max-active: 100 #最大连接数
+          maxWait: 60000 #最大等待时间ms(获取不到连接后多久超时)
+          hikari:
+            minimum-idle: 5
+            maximum-pool-size: 200
+            connection-timeout: 30000
+            idle-timeout: 600000
+            max-lifetime: 1800000
+        dyoa:
+          url: jdbc:mysql://192.168.0.108/dyoa?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          username: root
+          password: 914851221
+          initialSize: 10 #初始化连接数D
+          minIdle: 10 #最小空闲连接数
+          max-active: 100 #最大连接数
+          maxWait: 60000 #最大等待时间ms(获取不到连接后多久超时)
+          hikari:
+            minimum-idle: 5
+            maximum-pool-size: 200
+            connection-timeout: 30000
+            idle-timeout: 600000
+            max-lifetime: 1800000
 
 
 dfs:

+ 116 - 116
biz-base/src/test/java/history/SyncHistoryTest.java

@@ -1,118 +1,118 @@
-//package history;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.alibaba.fastjson.JSONArray;
-//import com.alibaba.fastjson.JSONException;
-//import com.alibaba.fastjson.JSONObject;
-//import com.dayou.BaseApplication;
-//import com.dayou.dto.history.HisMajorOrder;
-//import com.dayou.dyoa.IDyoaHistoryService;
-//import com.dayou.utils.HttpKit;
-//import lombok.extern.slf4j.Slf4j;
-//import org.apache.http.HttpEntity;
-//import org.apache.http.HttpResponse;
-//import org.apache.http.client.HttpClient;
-//import org.apache.http.client.methods.HttpGet;
-//import org.apache.http.client.methods.HttpPost;
-//import org.apache.http.impl.client.DefaultHttpClient;
-//import org.junit.Test;
-//import org.junit.runner.RunWith;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.test.context.SpringBootTest;
-//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-//
-//import java.io.BufferedReader;
-//import java.io.IOException;
-//import java.io.InputStreamReader;
-//import java.io.PrintWriter;
-//import java.net.HttpURLConnection;
-//import java.net.URL;
-//import java.net.URLConnection;
-//import java.util.Arrays;
-//import java.util.HashMap;
-//import java.util.List;
-//import java.util.Map;
-//import java.util.regex.Matcher;
-//import java.util.regex.Pattern;
-//
-///**
-// * 类说明:
-// *
-// * @author: wucl
-// * @since: 2024/5/7
-// * created with IntelliJ IDEA.
-// */
-//@Slf4j
-//@SpringBootTest(classes = BaseApplication.class)
-//@RunWith(value = SpringJUnit4ClassRunner.class)
-//public class SyncHistoryTest {
-//
-//    private static final String HISTORY_MAJOR_ORDER_URL = "http://noa.scdayou.com/dyoa/order/pageQuery";
-//
-//    private static final String HISTORY_LOGIN_URL = "http://noa.scdayou.com/login";
-//
-//    private static String COOKIE ;
-//
-//    @Autowired
-//    private IDyoaHistoryService dyoaHistoryService;
-//
-//
-//    public static void main(String[] args) {
-//        COOKIE = historySystemLogin();
-//        syncMajorOrderTest();
-////        try {
-////            JSONObject jsonObject = JSON.parseObject("<!DOCTYPE html>\n" +"<html>");
-////        } catch (JSONException e) {
-////            log.error("JSONException");
-////        }
-//    }
-//
-//    public static void syncMajorOrderTest(){
-//        Map<String,Object> params = new HashMap<>();
-//        params.put("limit","15");
-//        params.put("orderBy","-createdDatetime");
-//        params.put("start","0");
-//        String respond = HttpKit.sendPost(HISTORY_MAJOR_ORDER_URL, params,COOKIE);
-//        JSONObject jsonObject = JSON.parseObject(respond);
-//        JSONObject data = jsonObject.getJSONObject("data");
-//        JSONArray data1 = data.getJSONArray("data");
-//        List<HisMajorOrder> hisMajorOrders = data1.toJavaList(HisMajorOrder.class);
-//        log.info(hisMajorOrders.toString());
-//    }
-//
-//    public static String historySystemLogin(){
-//
+package history;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
+import com.alibaba.fastjson.JSONObject;
+import com.dayou.BaseApplication;
+import com.dayou.dto.history.HisMajorOrder;
+import com.dayou.dyoa.IDyoaHistoryService;
+import com.dayou.utils.HttpKit;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2024/5/7
+ * created with IntelliJ IDEA.
+ */
+@Slf4j
+@SpringBootTest(classes = BaseApplication.class)
+@RunWith(value = SpringJUnit4ClassRunner.class)
+public class SyncHistoryTest {
+
+    private static final String HISTORY_MAJOR_ORDER_URL = "http://noa.scdayou.com/dyoa/order/pageQuery";
+
+    private static final String HISTORY_LOGIN_URL = "http://noa.scdayou.com/login";
+
+    private static String COOKIE ;
+
+    @Autowired
+    private IDyoaHistoryService dyoaHistoryService;
+
+
+    public static void main(String[] args) {
+        COOKIE = historySystemLogin();
+        syncMajorOrderTest();
 //        try {
-//            // 创建HttpClient对象
-//            HttpClient httpClient = new DefaultHttpClient();
-//
-//            // 创建HttpGet请求对象
-//            HttpPost httpPost = new HttpPost(HISTORY_LOGIN_URL+"?loginName=admin&password=ABC666000");
-//
-//            // 发送请求并获取响应
-//            HttpResponse response = httpClient.execute(httpPost);
-//
-//            // 获取cookie
-//            String cookies = Arrays.toString(response.getHeaders("Set-Cookie"));
-//            if (cookies != null) {
-//                String pattern = "(JSESSIONID)(.*?)( )";
-//                Pattern r = Pattern.compile(pattern);
-//                // 创建 matcher 对象
-//                Matcher m = r.matcher(cookies);
-//                if (m.find()) {
-//                    return m.group(0);
-//                }
-//            }
-//            // 关闭连接
-//            httpClient.getConnectionManager().shutdown();
-//        } catch (Exception e) {
-//            e.printStackTrace();
+//            JSONObject jsonObject = JSON.parseObject("<!DOCTYPE html>\n" +"<html>");
+//        } catch (JSONException e) {
+//            log.error("JSONException");
 //        }
-//        return null;
-//    }
-//
-//    @Test
-//    public void getLandTargetMajorTest() throws NoSuchFieldException, IllegalAccessException {
-//       // dyoaHistoryService.doCreateMajorTarget("房地产","1331400911615954944",78L);
-//    }
-//}
+    }
+
+    public static void syncMajorOrderTest(){
+        Map<String,Object> params = new HashMap<>();
+        params.put("limit","15");
+        params.put("orderBy","-createdDatetime");
+        params.put("start","0");
+        String respond = HttpKit.sendPost(HISTORY_MAJOR_ORDER_URL, params,COOKIE);
+        JSONObject jsonObject = JSON.parseObject(respond);
+        JSONObject data = jsonObject.getJSONObject("data");
+        JSONArray data1 = data.getJSONArray("data");
+        List<HisMajorOrder> hisMajorOrders = data1.toJavaList(HisMajorOrder.class);
+        log.info(hisMajorOrders.toString());
+    }
+
+    public static String historySystemLogin(){
+
+        try {
+            // 创建HttpClient对象
+            HttpClient httpClient = new DefaultHttpClient();
+
+            // 创建HttpGet请求对象
+            HttpPost httpPost = new HttpPost(HISTORY_LOGIN_URL+"?loginName=admin&password=ABC666000");
+
+            // 发送请求并获取响应
+            HttpResponse response = httpClient.execute(httpPost);
+
+            // 获取cookie
+            String cookies = Arrays.toString(response.getHeaders("Set-Cookie"));
+            if (cookies != null) {
+                String pattern = "(JSESSIONID)(.*?)( )";
+                Pattern r = Pattern.compile(pattern);
+                // 创建 matcher 对象
+                Matcher m = r.matcher(cookies);
+                if (m.find()) {
+                    return m.group(0);
+                }
+            }
+            // 关闭连接
+            httpClient.getConnectionManager().shutdown();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Test
+    public void getLandTargetMajorTest() throws NoSuchFieldException, IllegalAccessException {
+       dyoaHistoryService.fetchDyoaMajorOrderProduction();
+    }
+}

+ 5 - 0
dao/src/main/java/com/dayou/mapper/DyoaHistoryMapper.java

@@ -13,4 +13,9 @@ public interface DyoaHistoryMapper {
     List<HisMajorTarget> queryMajorHouseTarget(@Param("id") String id);
 
     List<HisMajorTarget> queryMajorLandTarget(@Param("id")String id);
+
+    List<String> selectDyoaMajorOrderIds();
+
+    List<HisMajorTarget> queryMajorProduction(@Param("id") String id);
+
 }

+ 39 - 3
dao/src/main/resources/mapper/DyoaHistoryMapper.xml

@@ -41,9 +41,9 @@
                terminalContactName,
                members,
                description,
-               nowNodeName,
-               nowNodeEmpName,
-               createdDatetime
+                standardPrice,
+               createdDatetime,
+               needPay
         from dy_order where id = #{id}
     </select>
 
@@ -148,4 +148,40 @@
                   left join dy_order_product dop on dop.orderId = d.id where dotl.orderId = #{id}
 
        </select>
+
+    <select id="queryMajorProduction" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorTarget">
+        select
+        d.id,
+        dop.id as pId,
+        dop.printQuantity , <!--#打印份数 -->
+        dop.type AS pType, <!--#产品类型 -->
+        d.reportNo, <!--#产品号 -->
+        concat(d.signEmpName1,',',d.signEmpName2) as signEmpNames,<!--#签字人1 -->
+        d.name,<!--#项目名称 -->
+        d.principal, <!--#委托方名称 -->
+        d.principalAddress, <!--#委托方地址 -->
+        d.principalMobile ,<!--#委托方电话 -->
+        d.propertyName, <!--#产权人 -->
+        d.priceDate ,<!-- 价值时点-->
+        d.area,<!-- 评估面积-->
+        (d.money*10000)as money,<!-- 评估总价-->
+        d.price as xPrice,<!-- 评估单价-->
+        d.specDesc,<!-- 特殊情况说明-->
+        d.repo ,<!-- 库存状态-->
+        d.archiveTime, <!-- 归档时间-->
+        d.standardPrice ,<!-- 标准收费-->
+        d.confirmTime, <!-- 报告送达的确认时间-->
+        if(d.confirmTime is null,0,1) as deliveryState,
+        d.yjsInTime,<!-- 意见书入库时间-->
+        d.yjsOutTime,<!-- 意见书出库时间-->
+        d.bgInTime,<!-- 报告入库时间-->
+        d.bgOutTime,
+        d.code<!-- 报告出库时间-->
+        from dy_order d
+        left join dy_order_product dop on dop.orderId = d.id where dop.orderId = #{id}
+    </select>
+
+    <select id="selectDyoaMajorOrderIds" resultType="java.lang.String">
+        select id from dy_order where masterName is not null
+    </select>
 </mapper>

+ 1 - 0
domain/src/main/java/com/dayou/dto/history/HisMajorTarget.java

@@ -38,6 +38,7 @@ public class HisMajorTarget {
     private String planUsage;
     private String realUsage;
     private String surveyAddress;
+    private String code;
 
 
 

+ 4 - 4
service/pom.xml

@@ -108,10 +108,10 @@
             <version>8.0.0</version>
         </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>com.baomidou</groupId>-->
-<!--            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+        </dependency>
 
     </dependencies>
     <build>

+ 354 - 308
service/src/main/java/com/dayou/dyoa/DyoaHistoryServiceImpl.java

@@ -8,6 +8,8 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -23,20 +25,15 @@ import com.dayou.enums.ProductionEnum;
 import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.DyoaHistoryMapper;
 import com.dayou.service.*;
-import com.dayou.service.impl.MajorServiceImpl;
-import com.dayou.service.workflow.*;
 import com.dayou.utils.DateUtils;
 import com.dayou.utils.HttpKit;
-import com.sun.corba.se.spi.orbutil.threadpool.Work;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.DefaultHttpClient;
-import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
@@ -48,9 +45,9 @@ import java.util.stream.Collectors;
 
 import static com.dayou.common.Constants.*;
 import static com.dayou.enums.MainBusinessEnum.MAJOR_BUSINESS;
-import static com.dayou.enums.workflow.NodeStateEnum.PENDING;
-import static com.dayou.enums.workflow.NodeTaskVersion.LATEST;
+import static com.dayou.enums.MainBusinessEnum.MAJOR_ORDER;
 
+@DS("dyoa")
 @Service
 @Slf4j
 public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
@@ -65,21 +62,14 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     private static final String HISTORY_ASSETS_ORDER_URL = "http://noa.scdayou.com/dyoa/assets/assets/pageQuery";
 
-//    private Map<String,Long> users = new HashMap<>();
-//
-//    private Map<String,Long> departments = new HashMap<>();
-//
-//    private Map<String,Long> majorBusinessNodes = new HashMap<>();
-//
-//    private Map<String,Long> workFlows = new HashMap<>();
-//
-//    private static final Map<String,String> MAJOR_ORDER_COLUM = new HashMap<>();
-//
-//    private static final Map<String,String> MAJOR_TARGET_LAND_COLUM = new HashMap<>();
-//
-//    private static final Map<String,String> MAJOR_PRODUCTION_COLUM = new HashMap<>();
-//
-//    private static final Map<String,String> MAJOR_TARGET_HOUSE_COLUM = new HashMap<>();
+    private Map<String,Long> users = new HashMap<>();
+
+    private Map<String,Long> departments = new HashMap<>();
+
+
+    private static final Map<String,String> MAJOR_ORDER_COLUM = new HashMap<>();
+
+    private static final Map<String,String> MAJOR_PRODUCTION_COLUM = new HashMap<>();
 
 
     @Autowired
@@ -95,138 +85,82 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     private IDyoaRecordService dyoaRecordService;
 
     @Autowired
-    private IWorkFlowNodeInstanceService workFlowNodeInstanceService;
+    private IOrderFundService orderFundService;
 
     @Autowired
-    private IWorkFlowService workFlowService;
+    private IProductionFundService productionFundService;
 
-    @Autowired
-    private IWorkNodeService workNodeService;
-
-    @Autowired
-    private MajorServiceImpl majorServiceImpl;
 
-    @Autowired
-    private IWorkNodeTaskService workNodeTaskService;
 
     @Autowired
-    private IWorkTaskRecordService workTaskRecordService;
+    private IMajorService majorServiceImpl;
 
-    @Autowired
-    private IMajorTargetService majorTargetService;
 
     @Autowired
     private IMajorProductionService majorProductionService;
 
-//    static {
-////        MAJOR_ORDER_COLUM.put("id","id");
-//        MAJOR_ORDER_COLUM.put("name","name");
-//        MAJOR_ORDER_COLUM.put("code","orderId");
-//        MAJOR_ORDER_COLUM.put("sourceType","financial");
-//        MAJOR_ORDER_COLUM.put("assign","allotType");
-//        MAJOR_ORDER_COLUM.put("masterName","clientManagerId");
-//        MAJOR_ORDER_COLUM.put("managerName","principalId");
-//        MAJOR_ORDER_COLUM.put("masterOrgName","departmentId");
-//        MAJOR_ORDER_COLUM.put("businessType","businessObjectType");
-//        MAJOR_ORDER_COLUM.put("businessType2","businessGener");
-//        MAJOR_ORDER_COLUM.put("spec","specialType");
-//        MAJOR_ORDER_COLUM.put("evaluateTarget","evaluateAim");
-//        MAJOR_ORDER_COLUM.put("repeatOrder","entrustAgain");
-//        MAJOR_ORDER_COLUM.put("fhbq","multipleRemoval");
-//        MAJOR_ORDER_COLUM.put("oral","informalEvaluate");
-//        MAJOR_ORDER_COLUM.put("customerType","clienteleType");
-////        MAJOR_ORDER_COLUM.put("customerName","clienteleId");
-////        MAJOR_ORDER_COLUM.put("customerName2","clienteleSubId");
-////        MAJOR_ORDER_COLUM.put("contactId","clienteleContactId");
-//        MAJOR_ORDER_COLUM.put("cz","dispenseBenefit");
-//        MAJOR_ORDER_COLUM.put("locations","nonnative");
-//        MAJOR_ORDER_COLUM.put("refinance","refinance");
-//        MAJOR_ORDER_COLUM.put("loanMoney","loanLimit");
-//        MAJOR_ORDER_COLUM.put("loanLimit","loanPeriod");
-//        MAJOR_ORDER_COLUM.put("loanProperty","loanNature");
-//        MAJOR_ORDER_COLUM.put("loanUsage","loanAim");
-//        MAJOR_ORDER_COLUM.put("loanExpired","loanExpire");
-//        MAJOR_ORDER_COLUM.put("principal","bailor");
-//        MAJOR_ORDER_COLUM.put("principalAddress","bailorAddress");
-//        MAJOR_ORDER_COLUM.put("principalName","bailorContactName");
-//        MAJOR_ORDER_COLUM.put("principalMobile","bailorContactTel");
-//        MAJOR_ORDER_COLUM.put("propertyName","owner");
-//        MAJOR_ORDER_COLUM.put("propertyMobile","ownerTel");
-//        MAJOR_ORDER_COLUM.put("urgent","urgent");
-////        MAJOR_ORDER_COLUM.put("terminalName","terminalClienteleId");
-//        MAJOR_ORDER_COLUM.put("terminalType","terminalClienteleType");
-////        MAJOR_ORDER_COLUM.put("terminalContactName","terminalClienteleContactId");
-//        MAJOR_ORDER_COLUM.put("members","members");
-//        MAJOR_ORDER_COLUM.put("description","remark");
-//
-//        // 大中型估价对象(土地)字段
-//        MAJOR_TARGET_LAND_COLUM.put("type","landType");
-//        MAJOR_TARGET_LAND_COLUM.put("ownerName","rightToUser");
-//        MAJOR_TARGET_LAND_COLUM.put("ownerNo","landCertificateNo");
-//        MAJOR_TARGET_LAND_COLUM.put("locations","located");
-//        MAJOR_TARGET_LAND_COLUM.put("useArea","useAcreage");
-//        MAJOR_TARGET_LAND_COLUM.put("lastYear","residueYears");
-//        MAJOR_TARGET_LAND_COLUM.put("plotRate","plotRatio");
-//        MAJOR_TARGET_LAND_COLUM.put("landUsage","landUse");
-//        MAJOR_TARGET_LAND_COLUM.put("useType","rightType");
-//        MAJOR_TARGET_LAND_COLUM.put("masterName","principalId");
-//        MAJOR_TARGET_LAND_COLUM.put("surveyName","siteIds");
-//        MAJOR_TARGET_LAND_COLUM.put("description","remark");
-//        MAJOR_TARGET_LAND_COLUM.put("price","evaluateValue");
-//        MAJOR_TARGET_LAND_COLUM.put("approvedPrice","checkValue");
-//        MAJOR_TARGET_LAND_COLUM.put("measure","evaluateMethods");
-//        MAJOR_TARGET_LAND_COLUM.put("surveyDate","evaluateDate");
-//
-//        //大中型估价对象(房地产)字段
-//        MAJOR_TARGET_HOUSE_COLUM.put("type","housePurpose");
-//        MAJOR_TARGET_HOUSE_COLUM.put("ownerName","owner");
-//        MAJOR_TARGET_HOUSE_COLUM.put("ownerNo","ownerNo");
-//        MAJOR_TARGET_HOUSE_COLUM.put("houseName","targetName");
-//        MAJOR_TARGET_HOUSE_COLUM.put("locations","located");
-//        MAJOR_TARGET_HOUSE_COLUM.put("landOwnerName","rightToUser");
-//        MAJOR_TARGET_HOUSE_COLUM.put("landNo","landCertificateNo");
-//        MAJOR_TARGET_HOUSE_COLUM.put("buildYear","buildDoneYear");
-//        MAJOR_TARGET_HOUSE_COLUM.put("buildArea","buildAcreage");
-//        MAJOR_TARGET_HOUSE_COLUM.put("useType","useRightType");
-//        MAJOR_TARGET_HOUSE_COLUM.put("landArea","landAcreage");
-//        MAJOR_TARGET_HOUSE_COLUM.put("masterName","principalId");
-//        MAJOR_TARGET_HOUSE_COLUM.put("surveyName","siteIds");
-//        MAJOR_TARGET_HOUSE_COLUM.put("planUsage","planPurpose");
-//        MAJOR_TARGET_HOUSE_COLUM.put("realUsage","realPurpose");
-//        MAJOR_TARGET_HOUSE_COLUM.put("surveyAddress","siteLocated");
-//        MAJOR_TARGET_HOUSE_COLUM.put("description","remark");
-//        MAJOR_TARGET_HOUSE_COLUM.put("price","evaluateValue");
-//        MAJOR_TARGET_HOUSE_COLUM.put("approvedPrice","checkValue");
-//        MAJOR_TARGET_HOUSE_COLUM.put("measure","evaluateMethods");
-//        MAJOR_TARGET_HOUSE_COLUM.put("surveyDate","evaluateDate");
-//
-//
-//        //大中型产品字段
-//        MAJOR_PRODUCTION_COLUM.put("pType","production");
-//        MAJOR_PRODUCTION_COLUM.put("reportNo","reportNo");
-//        MAJOR_PRODUCTION_COLUM.put("signEmpNames","signatory");
-//        MAJOR_PRODUCTION_COLUM.put("name","name");
-//        MAJOR_PRODUCTION_COLUM.put("principal","clientName");
-//        MAJOR_PRODUCTION_COLUM.put("principalAddress","clientAddress");
-//        MAJOR_PRODUCTION_COLUM.put("principalMobile","clientTel");
-//        MAJOR_PRODUCTION_COLUM.put("propertyName","owner");
-//        MAJOR_PRODUCTION_COLUM.put("priceDate","valueTiming");
-//        MAJOR_PRODUCTION_COLUM.put("area","evaluateAcreage");
-//        MAJOR_PRODUCTION_COLUM.put("money","evaluateAmount");
-//        MAJOR_PRODUCTION_COLUM.put("xPrice","evaluatePrice");
-//        MAJOR_PRODUCTION_COLUM.put("specDesc","comment");
-//        MAJOR_PRODUCTION_COLUM.put("repo","repertoryState");
-//        MAJOR_PRODUCTION_COLUM.put("yjsInTime","repertoryInTime");
-//        MAJOR_PRODUCTION_COLUM.put("yjsOutTime","repertoryOutTime");
-//        MAJOR_PRODUCTION_COLUM.put("bgInTime","repertoryInTime");
-//        MAJOR_PRODUCTION_COLUM.put("bgOutTime","repertoryOutTime");
-//        MAJOR_PRODUCTION_COLUM.put("archiveTime","saveFileDate");
-//        MAJOR_PRODUCTION_COLUM.put("standardPrice","standardAmount");
-//        MAJOR_PRODUCTION_COLUM.put("confirmTime","deliveryDate");
-//        MAJOR_PRODUCTION_COLUM.put("deliveryState","delivery");
-//        MAJOR_PRODUCTION_COLUM.put("printQuantity","printTimes");
-//
-//    }
+    static {
+//        MAJOR_ORDER_COLUM.put("id","id");
+        MAJOR_ORDER_COLUM.put("name","name");
+        MAJOR_ORDER_COLUM.put("code","orderId");
+        MAJOR_ORDER_COLUM.put("sourceType","financial");
+        MAJOR_ORDER_COLUM.put("assign","allotType");
+        MAJOR_ORDER_COLUM.put("masterName","clientManagerId");
+        MAJOR_ORDER_COLUM.put("managerName","principalId");
+        MAJOR_ORDER_COLUM.put("masterOrgName","departmentId");
+        MAJOR_ORDER_COLUM.put("businessType","businessObjectType");
+        MAJOR_ORDER_COLUM.put("businessType2","businessGener");
+        MAJOR_ORDER_COLUM.put("spec","specialType");
+        MAJOR_ORDER_COLUM.put("evaluateTarget","evaluateAim");
+        MAJOR_ORDER_COLUM.put("repeatOrder","entrustAgain");
+        MAJOR_ORDER_COLUM.put("fhbq","multipleRemoval");
+        MAJOR_ORDER_COLUM.put("oral","informalEvaluate");
+        MAJOR_ORDER_COLUM.put("customerType","clienteleType");
+        MAJOR_ORDER_COLUM.put("cz","dispenseBenefit");
+        MAJOR_ORDER_COLUM.put("locations","nonnative");
+        MAJOR_ORDER_COLUM.put("refinance","refinance");
+        MAJOR_ORDER_COLUM.put("loanMoney","loanLimit");
+        MAJOR_ORDER_COLUM.put("loanLimit","loanPeriod");
+        MAJOR_ORDER_COLUM.put("loanProperty","loanNature");
+        MAJOR_ORDER_COLUM.put("loanUsage","loanAim");
+        MAJOR_ORDER_COLUM.put("loanExpired","loanExpire");
+        MAJOR_ORDER_COLUM.put("principal","bailor");
+        MAJOR_ORDER_COLUM.put("principalAddress","bailorAddress");
+        MAJOR_ORDER_COLUM.put("principalName","bailorContactName");
+        MAJOR_ORDER_COLUM.put("principalMobile","bailorContactTel");
+        MAJOR_ORDER_COLUM.put("propertyName","owner");
+        MAJOR_ORDER_COLUM.put("propertyMobile","ownerTel");
+        MAJOR_ORDER_COLUM.put("urgent","urgent");
+        MAJOR_ORDER_COLUM.put("terminalType","terminalClienteleType");
+        MAJOR_ORDER_COLUM.put("members","members");
+        MAJOR_ORDER_COLUM.put("description","remark");
+
+        //大中型产品字段
+        MAJOR_PRODUCTION_COLUM.put("pType","production");
+        MAJOR_PRODUCTION_COLUM.put("reportNo","reportNo");
+        MAJOR_PRODUCTION_COLUM.put("signEmpNames","signatory");
+        MAJOR_PRODUCTION_COLUM.put("name","name");
+        MAJOR_PRODUCTION_COLUM.put("principal","clientName");
+        MAJOR_PRODUCTION_COLUM.put("principalAddress","clientAddress");
+        MAJOR_PRODUCTION_COLUM.put("principalMobile","clientTel");
+        MAJOR_PRODUCTION_COLUM.put("propertyName","owner");
+        MAJOR_PRODUCTION_COLUM.put("priceDate","valueTiming");
+        MAJOR_PRODUCTION_COLUM.put("area","evaluateAcreage");
+        MAJOR_PRODUCTION_COLUM.put("money","evaluateAmount");
+        MAJOR_PRODUCTION_COLUM.put("xPrice","evaluatePrice");
+        MAJOR_PRODUCTION_COLUM.put("specDesc","comment");
+        MAJOR_PRODUCTION_COLUM.put("repo","repertoryState");
+        MAJOR_PRODUCTION_COLUM.put("yjsInTime","repertoryInTime");
+        MAJOR_PRODUCTION_COLUM.put("yjsOutTime","repertoryOutTime");
+        MAJOR_PRODUCTION_COLUM.put("bgInTime","repertoryInTime");
+        MAJOR_PRODUCTION_COLUM.put("bgOutTime","repertoryOutTime");
+        MAJOR_PRODUCTION_COLUM.put("archiveTime","saveFileDate");
+        MAJOR_PRODUCTION_COLUM.put("standardPrice","standardAmount");
+        MAJOR_PRODUCTION_COLUM.put("confirmTime","deliveryDate");
+        MAJOR_PRODUCTION_COLUM.put("deliveryState","delivery");
+        MAJOR_PRODUCTION_COLUM.put("printQuantity","printTimes");
+
+    }
 
     @Override
     public Page<HisMajorOrder> hisMajorPage(HisOrderParam param) {
@@ -360,6 +294,15 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         return page;
     }
 
+    @DSTransactional
+    @Override
+    public void fetchDyoaMajorOrderProduction() {
+        List<String> dyoaIds = dyoaHistoryMapper.selectDyoaMajorOrderIds();
+        dyoaIds.stream().forEach(x->{
+            fetchAboutMajor(x);
+        });
+    }
+
 
     public Map<String,Object> queryMajorOrder(String majorId){
         Map<String, Object> resultMap = dyoaHistoryMapper.queryMajorOrder(majorId);
@@ -367,35 +310,277 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     }
 
     //多数据源切换,主方法用@DSTransactional注解解决事务失效问题
-    //@DSTransactional
-//    @Override
-//    public Boolean fetchAboutMajor(String id) {
-//        dyoaRecordService.isExist(MainBusinessEnum.MAJOR_ORDER,id);
-//        try {
-//            //1. 获取订单信息,插入major表。
-//            Map<String, Object> dyoaMajorOrder = dyoaHistoryMapper.queryMajorOrder(id);
-//            Long mbsId = this.doCreateMajorOrder(dyoaMajorOrder);
-//            //2. 同步估价对象
-//            String targetType = (String) dyoaMajorOrder.get("businessType");
-//            List<MajorProduction> majorProductions = this.doCreateMajorTarget(targetType, id, mbsId);
-//            //3. 创建节点
-//            Object node = dyoaMajorOrder.get("nowNodeName");
-//            if (node!=null){
-//                String dyoaNodeName = (String) node;
-//                Long instanceNodeId = this.doCreateMajorInstanceNode(mbsId, dyoaNodeName,majorProductions);
-//                //4. 创建任务
-//                String dyoaHandlerName = (String) dyoaMajorOrder.get("nowNodeEmpName");
-//                this.doCreateNodeTask(instanceNodeId,dyoaNodeName,dyoaHandlerName);
-//            }
-//            return Boolean.TRUE;
-//        } catch (NoSuchFieldException e) {
-//            throw new RuntimeException(e);
-//        } catch (IllegalAccessException e) {
-//            throw new RuntimeException(e);
+
+    @Override
+    public Boolean fetchAboutMajor(String id) {
+        try {
+            //1. 获取订单信息,插入major表。
+            Map<String, Object> dyoaMajorOrder = dyoaHistoryMapper.queryMajorOrder(id);
+            Long mbsId = this.doCreateMajorOrder(dyoaMajorOrder);
+            //2. 同步产品
+            Double shouldAmount = (Double) dyoaMajorOrder.get("needPay");
+            this.doCreateMajorProduction(shouldAmount,id, mbsId);
+            return Boolean.TRUE;
+        } catch (NoSuchFieldException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public void doCreateMajorProduction(Double shouldAmount ,String id,Long majorId) throws NoSuchFieldException, IllegalAccessException {
+        List<HisMajorTarget> majorProductions = dyoaHistoryMapper.queryMajorProduction(id);
+        if (CollectionUtil.isNotEmpty(majorProductions)){
+
+            OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>().eq(OrderFund::getBusinessType, MAJOR_BUSINESS.name())
+                    .eq(OrderFund::getBusinessId, majorId).eq(OrderFund::getOrderId, majorProductions.get(0).getCode()));
+
+            if (orderFund==null){
+                //创建订单收款记录
+                orderFund = new OrderFund();
+                orderFund.setBusinessId(majorId);
+                orderFund.setBusinessType(MAJOR_BUSINESS.name());
+                orderFund.setOrderId(majorProductions.get(0).getCode());
+                orderFund.setOrderName(majorProductions.get(0).getName());
+                orderFund.setShouldAmount(BigDecimal.valueOf(shouldAmount));
+                orderFundService.save(orderFund);
+            }
+
+            for (HisMajorTarget production :majorProductions){
+                if (StrUtil.isNotBlank(production.getPId())){
+                    MajorProduction majorProduction = new MajorProduction();
+                    majorProduction.setMajorId(majorId);
+                    for (Map.Entry<String, String> entry : MAJOR_PRODUCTION_COLUM.entrySet()){
+                        Field field = HisMajorTarget.class.getDeclaredField(entry.getKey());
+                        field.setAccessible(true);
+                        Object value = field.get(production);
+                        if (value!=null){
+                            String mbsColum = entry.getValue();
+                            Field xFiled = MajorProduction.class.getDeclaredField(mbsColum);
+                            xFiled.setAccessible(true);
+                            switch (mbsColum){
+                                case "production":
+                                    String productionType = getProductionType((String) value);
+                                    xFiled.set(majorProduction, productionType);
+                                    break;
+                                case "delivery":
+                                    xFiled.set(majorProduction,production.getConfirmTime()!=null);
+                                    break;
+                                case "signatory":
+                                    xFiled.set(majorProduction,getMbsUserIds((String) value));
+                                    break;
+                                case "valueTiming":
+                                case "saveFileDate":
+                                case "deliveryDate":
+                                    xFiled.set(majorProduction,DateUtils.dateToLocalDate((Date) value));
+                                    break;
+                                case "repertoryState":
+                                    String repertoryState = (String) value;
+                                    xFiled.set(majorProduction,repertoryState.equals("OUT"));
+                                    break;
+                                default:
+                                    xFiled.set(majorProduction,value);
+                                    break;
+                            }
+                        }
+
+                    }
+                    MajorProduction mp = majorProductionService.getOne(new LambdaQueryWrapper<MajorProduction>().eq(MajorProduction::getMajorId, majorId)
+                            .eq(MajorProduction::getReportNo, majorProduction.getReportNo()).eq(MajorProduction::getProduction, majorProduction.getProduction()));
+                    //插入产品记录
+                    if (mp==null){
+                        //查询有没有产品号,如果没有就不创建产品和产品收款
+                        if (StrUtil.isNotBlank(majorProduction.getReportNo())){
+                            majorProductionService.save(majorProduction);
+                            //创建产品收款记录
+                            ProductionFund productionFund = new ProductionFund();
+                            productionFund.setBusinessId(majorId);
+                            productionFund.setBusinessType(MAJOR_BUSINESS.name());
+                            productionFund.setProductionNo(production.getReportNo());
+                            productionFund.setProductionType(getProductionType(production.getPType()));
+                            productionFund.setOrderFundId(orderFund.getId());
+                            productionFund.setStandardAmount(production.getStandardPrice());
+                            productionFundService.save(productionFund);
+                        }
+
+                    }
+                }
+            }
+        }
+
+    }
+
+
+
+    private String getProductionType(String value) {
+        if (value.contains(ProductionEnum.REPORT.getMsg())){
+            return ProductionEnum.REPORT.name();
+        }
+        if (value.contains(ProductionEnum.STATEMENT.getMsg())){
+            return ProductionEnum.STATEMENT.name();
+        }
+        return ProductionEnum.LETTER.name();
+    }
+
+    private Long doCreateMajorOrder(Map<String,Object> dyMajorOrder) throws NoSuchFieldException, IllegalAccessException {
+        String dyoaId = (String) dyMajorOrder.get("id");
+        String managerName = (String) dyMajorOrder.get("managerName");
+
+        DyoaRecord record = dyoaRecordService.getOne(new LambdaQueryWrapper<DyoaRecord>().eq(DyoaRecord::getMbsType, MAJOR_ORDER.name()).eq(DyoaRecord::getDyoaId, dyoaId));
+        if (record != null){
+            //更新项目负责人
+            Long mbsOrderId = record.getMbsId();
+            if (StrUtil.isNotEmpty(managerName)){
+                Major major = majorServiceImpl.getOne(new LambdaQueryWrapper<Major>().eq(BaseEntity::getId, mbsOrderId).select(BaseEntity::getId, Major::getPrincipalId));
+                if (major.getPrincipalId()==null){
+                    majorServiceImpl.update(new LambdaUpdateWrapper<Major>().set(Major::getPrincipalId,getMbsUserId(managerName)).eq(BaseEntity::getId, mbsOrderId));
+                    log.info("项目负责人被更新 mbsId: {}",mbsOrderId);
+                }
+            }
+            return mbsOrderId;
+        }
+        Major major = new Major();
+        Class<Major> mClass = Major.class;
+        for (Map.Entry<String, String> entry : MAJOR_ORDER_COLUM.entrySet()){
+            Object columValue = dyMajorOrder.get(entry.getKey());
+            if (columValue!=null){
+                String mbsColum = entry.getValue();
+                Field field = mClass.getDeclaredField(mbsColum);
+
+                field.setAccessible(true);
+                switch (mbsColum){
+                    case "allotType":
+                        field.set(major,(Boolean) columValue?ASSIGN:BY_TURNS);break;
+                    case "financial":
+                        field.set(major,columValue.equals("FINANCE"));break;
+                    case "clientManagerId":
+                        field.set(major,getMbsUserId((String) columValue));break;
+                    case "principalId":
+                        field.set(major,getMbsUserId((String) columValue));break;
+                    case "departmentId":
+                        field.set(major,getMbsDepartmentId((String) columValue));break;
+                    case "loanLimit":
+                    case "loanPeriod":
+                        field.set(major, BigDecimal.valueOf((Double) columValue));break;
+                    case "members":
+                        field.set(major,getMbsUserIds((String) columValue));break;
+                    default:
+                        field.set(major,columValue);
+                }
+
+            }
+        }
+        major.setCreated((Date) dyMajorOrder.get("createdDatetime"));
+        majorServiceImpl.save(major);
+        //插入同步记录表
+        Long mbsId = major.getId();
+
+        dyoaRecordService.insert(MainBusinessEnum.MAJOR_ORDER, mbsId, dyoaId);
+        return mbsId;
+
+    }
+
+    private Long getMbsUserId(String userName){
+        if (CollectionUtil.isEmpty(users)){
+            List<User> list = userService.list(new LambdaQueryWrapper<User>().select(BaseEntity::getId, User::getName));
+            users = list.stream().collect(Collectors.toMap(User::getName, User::getId));
+        }
+
+        Long clientManagerId = users.get(userName);
+        return clientManagerId==null?1L:clientManagerId;
+    }
+
+    private Long getMbsDepartmentId(String departmentName){
+        if (CollectionUtil.isEmpty(departments)){
+            List<Department> list = departmentService.list(new LambdaQueryWrapper<Department>().select(BaseEntity::getId, Department::getName));
+            departments = list.stream().collect(Collectors.toMap(Department::getName, Department::getId));
+        }
+        if (departmentName.equals("复审部")){
+            departmentName = "综合部";
+        }
+        if (departmentName.equals("土地综合部")){
+            departmentName = "土地规划与评估事业部";
+        }
+        if (departmentName.equals("资产事业部")){
+            departmentName = "资产评估事业部";
+        }
+        return departments.get(departmentName);
+    }
+
+    private String getMbsUserIds(String userNames){
+        List<Long> userIds = new ArrayList<>();
+        Arrays.asList(userNames.split(",")).forEach(userName -> {
+            Long mbsUserId = getMbsUserId(userName.replaceAll(" ",""));
+            userIds.add(mbsUserId);
+        });
+        return JSON.toJSONString(userIds);
+    }
+
+//    private Long getMbsWorkFlows(String flowCode){
+//        if (CollectionUtil.isEmpty(workFlows)){
+//            List<WorkFlow> list = workFlowService.list(new LambdaQueryWrapper<WorkFlow>().select(BaseEntity::getId, WorkFlow::getCode));
+//            workFlows = list.stream().collect(Collectors.toMap(WorkFlow::getCode, WorkFlow::getId));
 //        }
+//        return workFlows.get(flowCode);
 //    }
 //
-//    public List<MajorProduction> doCreateMajorTarget(String targetType, String id,Long majorId) throws NoSuchFieldException, IllegalAccessException {
+//    private Long getMbsWorkNodes(String nodeName){
+//        if (CollectionUtil.isEmpty(majorBusinessNodes)){
+//            List<WorkNode> list = workNodeService.list(new LambdaQueryWrapper<WorkNode>().select(BaseEntity::getId, WorkNode::getName)
+//                    .eq(WorkNode::getFlowId,getMbsWorkFlows(MAJOR_BUSINESS.name())));
+//            majorBusinessNodes = list.stream().collect(Collectors.toMap(WorkNode::getName, WorkNode::getId));
+//        }
+//        return majorBusinessNodes.get(nodeName);
+//    }
+
+
+
+//    private Long doCreateMajorInstanceNode(Long businessId,String dyoaNodeName,List<MajorProduction> productions){
+//        String businessSubId = null;
+//        String businessMinId = null;
+//        if (CollectionUtil.isNotEmpty(productions)){
+//            List<MajorProduction> statement = productions.stream().filter(x -> x.getProduction().equals(ProductionEnum.STATEMENT.name())).collect(Collectors.toList());
+//            if (CollectionUtil.isNotEmpty(statement)){
+//                businessSubId = statement.get(0).getReportNo();
+//            }
+//            List<MajorProduction> report = productions.stream().filter(x -> x.getProduction().equals(ProductionEnum.REPORT.name())).collect(Collectors.toList());
+//            if (CollectionUtil.isNotEmpty(report)){
+//                businessMinId = report.get(0).getReportNo();
+//            }
+//            List<MajorProduction> letter = productions.stream().filter(x -> x.getProduction().equals(ProductionEnum.LETTER.name())).collect(Collectors.toList());
+//            if (CollectionUtil.isNotEmpty(letter)){
+//                businessMinId = letter.get(0).getReportNo();
+//            }
+//
+//        }
+//        Long nodeId = getMbsWorkNodes(dyoaNodeName);
+//        Long flowId = getMbsWorkFlows(MAJOR_BUSINESS.name());
+//        WorkFlowNodeInstance instance = new WorkFlowNodeInstance();
+//        instance.setFlowId(flowId);
+//        instance.setBusinessId(businessId);
+//        instance.setBusinessSubId(businessSubId);
+//        instance.setBusinessMinId(businessMinId);
+//        instance.setNodeId(nodeId);
+//        instance.setBusinessType(MAJOR_BUSINESS.name());
+//        instance.setSequence(0);
+//        instance.setState(PENDING.name());
+//        workFlowNodeInstanceService.add(instance);
+//        return instance.getId();
+//    }
+
+//    private void doCreateNodeTask(Long instanceNodeId, String dyoaNodeName,String dyoaHandlerName) {
+//        Long nodeId = getMbsWorkNodes(dyoaNodeName);
+//        WorkNodeTask task = workNodeTaskService.getOne(new LambdaQueryWrapper<WorkNodeTask>().eq(WorkNodeTask::getNodeId, nodeId)
+//                .eq(WorkNodeTask::getVersion, LATEST.name()).select(BaseEntity::getId));
+//        WorkTaskRecord workTaskRecord = new WorkTaskRecord();
+//        workTaskRecord.setInstanceId(instanceNodeId);
+//        workTaskRecord.setTaskId(task.getId());
+//        workTaskRecord.setHandlerId(getMbsUserId(dyoaHandlerName));
+//        workTaskRecordService.save(workTaskRecord);
+//    }
+
+
+    //    public List<MajorProduction> doCreateMajorTarget(String targetType, String id,Long majorId) throws NoSuchFieldException, IllegalAccessException {
 //        List<MajorTarget> mts = new ArrayList<>();
 //        List<MajorProduction> mps = new ArrayList<>();
 //        if ("土地".equals(targetType)){
@@ -628,143 +813,4 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 //        }
 //        return null;
 //    }
-//
-//    private String getProductionType(String value) {
-//        if (value.contains(ProductionEnum.REPORT.getMsg())){
-//            return ProductionEnum.REPORT.name();
-//        }
-//        if (value.contains(ProductionEnum.STATEMENT.getMsg())){
-//            return ProductionEnum.STATEMENT.name();
-//        }
-//        return ProductionEnum.LETTER.name();
-//    }
-//
-//    private Long doCreateMajorOrder(Map<String,Object> dyMajorOrder) throws NoSuchFieldException, IllegalAccessException {
-//        Major major = new Major();
-//        Class<Major> mClass = Major.class;
-//        for (Map.Entry<String, String> entry : MAJOR_ORDER_COLUM.entrySet()){
-//            Object columValue = dyMajorOrder.get(entry.getKey());
-//            if (columValue!=null){
-//                String mbsColum = entry.getValue();
-//                Field field = mClass.getDeclaredField(mbsColum);
-//
-//                field.setAccessible(true);
-//                switch (mbsColum){
-//                    case "allotType":
-//                        field.set(major,(Boolean) columValue?ASSIGN:BY_TURNS);break;
-//                    case "financial":
-//                        field.set(major,columValue.equals("FINANCE"));break;
-//                    case "clientManagerId":
-//                        field.set(major,getMbsUserId((String) columValue));break;
-//                    case "principalId":
-//                        field.set(major,getMbsUserId((String) columValue));break;
-//                    case "departmentId":
-//                        field.set(major,getMbsDepartmentId((String) columValue));break;
-//                    case "loanLimit":
-//                    case "loanPeriod":
-//                        field.set(major, BigDecimal.valueOf((Double) columValue));break;
-//                    case "members":
-//                        field.set(major,getMbsUserIds((String) columValue));break;
-//                    default:
-//                        field.set(major,columValue);
-//                }
-//
-//            }
-//        }
-//        major.setCreated((Date) dyMajorOrder.get("createdDatetime"));
-//        majorServiceImpl.save(major);
-//        //插入同步记录表
-//        Long mbsId = major.getId();
-//        dyoaRecordService.insert(MainBusinessEnum.MAJOR_ORDER, mbsId, (String) dyMajorOrder.get("id"));
-//        return mbsId;
-//
-//    }
-
-//    private Long getMbsUserId(String userName){
-//        if (CollectionUtil.isEmpty(users)){
-//            List<User> list = userService.list(new LambdaQueryWrapper<User>().select(BaseEntity::getId, User::getName));
-//            users = list.stream().collect(Collectors.toMap(User::getName, User::getId));
-//        }
-//        return users.get(userName);
-//    }
-//
-//    private Long getMbsDepartmentId(String departmentName){
-//        if (CollectionUtil.isEmpty(departments)){
-//            List<Department> list = departmentService.list(new LambdaQueryWrapper<Department>().select(BaseEntity::getId, Department::getName));
-//            departments = list.stream().collect(Collectors.toMap(Department::getName, Department::getId));
-//        }
-//        return departments.get(departmentName);
-//    }
-//
-//    private Long getMbsWorkFlows(String flowCode){
-//        if (CollectionUtil.isEmpty(workFlows)){
-//            List<WorkFlow> list = workFlowService.list(new LambdaQueryWrapper<WorkFlow>().select(BaseEntity::getId, WorkFlow::getCode));
-//            workFlows = list.stream().collect(Collectors.toMap(WorkFlow::getCode, WorkFlow::getId));
-//        }
-//        return workFlows.get(flowCode);
-//    }
-//
-//    private Long getMbsWorkNodes(String nodeName){
-//        if (CollectionUtil.isEmpty(majorBusinessNodes)){
-//            List<WorkNode> list = workNodeService.list(new LambdaQueryWrapper<WorkNode>().select(BaseEntity::getId, WorkNode::getName)
-//                    .eq(WorkNode::getFlowId,getMbsWorkFlows(MAJOR_BUSINESS.name())));
-//            majorBusinessNodes = list.stream().collect(Collectors.toMap(WorkNode::getName, WorkNode::getId));
-//        }
-//        return majorBusinessNodes.get(nodeName);
-//    }
-
-//    private String getMbsUserIds(String userNames){
-//        List<Long> userIds = new ArrayList<>();
-//        Arrays.asList(userNames.split(",")).forEach(userName -> {
-//            Long mbsUserId = getMbsUserId(userName.replaceAll(" ",""));
-//            userIds.add(mbsUserId);
-//        });
-//        return JSON.toJSONString(userIds);
-//    }
-//
-//    private Long doCreateMajorInstanceNode(Long businessId,String dyoaNodeName,List<MajorProduction> productions){
-//        String businessSubId = null;
-//        String businessMinId = null;
-//        if (CollectionUtil.isNotEmpty(productions)){
-//            List<MajorProduction> statement = productions.stream().filter(x -> x.getProduction().equals(ProductionEnum.STATEMENT.name())).collect(Collectors.toList());
-//            if (CollectionUtil.isNotEmpty(statement)){
-//                businessSubId = statement.get(0).getReportNo();
-//            }
-//            List<MajorProduction> report = productions.stream().filter(x -> x.getProduction().equals(ProductionEnum.REPORT.name())).collect(Collectors.toList());
-//            if (CollectionUtil.isNotEmpty(report)){
-//                businessMinId = report.get(0).getReportNo();
-//            }
-//            List<MajorProduction> letter = productions.stream().filter(x -> x.getProduction().equals(ProductionEnum.LETTER.name())).collect(Collectors.toList());
-//            if (CollectionUtil.isNotEmpty(letter)){
-//                businessMinId = letter.get(0).getReportNo();
-//            }
-//
-//        }
-//        Long nodeId = getMbsWorkNodes(dyoaNodeName);
-//        Long flowId = getMbsWorkFlows(MAJOR_BUSINESS.name());
-//        WorkFlowNodeInstance instance = new WorkFlowNodeInstance();
-//        instance.setFlowId(flowId);
-//        instance.setBusinessId(businessId);
-//        instance.setBusinessSubId(businessSubId);
-//        instance.setBusinessMinId(businessMinId);
-//        instance.setNodeId(nodeId);
-//        instance.setBusinessType(MAJOR_BUSINESS.name());
-//        instance.setSequence(0);
-//        instance.setState(PENDING.name());
-//        workFlowNodeInstanceService.add(instance);
-//        return instance.getId();
-//    }
-//
-//    private void doCreateNodeTask(Long instanceNodeId, String dyoaNodeName,String dyoaHandlerName) {
-//        Long nodeId = getMbsWorkNodes(dyoaNodeName);
-//        WorkNodeTask task = workNodeTaskService.getOne(new LambdaQueryWrapper<WorkNodeTask>().eq(WorkNodeTask::getNodeId, nodeId)
-//                .eq(WorkNodeTask::getVersion, LATEST.name()).select(BaseEntity::getId));
-//        WorkTaskRecord workTaskRecord = new WorkTaskRecord();
-//        workTaskRecord.setInstanceId(instanceNodeId);
-//        workTaskRecord.setTaskId(task.getId());
-//        workTaskRecord.setHandlerId(getMbsUserId(dyoaHandlerName));
-//        workTaskRecordService.save(workTaskRecord);
-//    }
-
-
 }

+ 6 - 3
service/src/main/java/com/dayou/dyoa/IDyoaHistoryService.java

@@ -15,9 +15,9 @@ public interface IDyoaHistoryService {
 
     String getEverCookie();
 
-//    Map<String,Object> queryMajorOrder(String majorId);
-//
-//    Boolean fetchAboutMajor(String id);
+    Map<String,Object> queryMajorOrder(String majorId);
+
+    Boolean fetchAboutMajor(String id);
 
     /**
      * 获取老系统资产订单
@@ -25,4 +25,7 @@ public interface IDyoaHistoryService {
      * @return Page<HisAssetsOrder>
      */
     Page<HisAssetsOrder> hisAssetsPage(HisOrderParam param);
+
+    //批量同步大中型订单和产品
+    void fetchDyoaMajorOrderProduction();
 }

+ 2 - 0
service/src/main/java/com/dayou/service/impl/DepartmentServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.dayou.common.BaseEntity;
@@ -38,6 +39,7 @@ import com.dayou.enums.BatchTaskTypeEnum;
  * @author wucl
  * @since 2022-11-29
  */
+@DS("mbs")
 @Service
 public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Department> implements IDepartmentService {
 

+ 3 - 1
service/src/main/java/com/dayou/service/impl/DyoaRecordServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.entity.DyoaRecord;
 import com.dayou.enums.MainBusinessEnum;
@@ -21,6 +22,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  * @author wucl
  * @since 2024-07-25
  */
+@DS("mbs")
 @Service
 public class DyoaRecordServiceImpl extends ServiceImpl<DyoaRecordMapper, DyoaRecord> implements IDyoaRecordService {
 
@@ -37,7 +39,7 @@ public class DyoaRecordServiceImpl extends ServiceImpl<DyoaRecordMapper, DyoaRec
         dyoaRecord.setDyoaId(dyoaId);
         dyoaRecord.setMbsId(mbsId);
         dyoaRecord.setMbsType(businessEnum.name());
-        dyoaRecord.setUserId(LoginContext.getCurrentUserId());
+        dyoaRecord.setUserId(1L);
         this.save(dyoaRecord);
     }
 

+ 2 - 0
service/src/main/java/com/dayou/service/impl/MajorProductionServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.common.BaseEntity;
@@ -45,6 +46,7 @@ import static com.dayou.message.MessageTypeEnum.*;
  * @author wucl
  * @since 2023-11-06
  */
+@DS("mbs")
 @Slf4j
 @Service
 public class MajorProductionServiceImpl extends ServiceImpl<MajorProductionMapper, MajorProduction> implements IMajorProductionService {

+ 2 - 0
service/src/main/java/com/dayou/service/impl/MajorServiceImpl.java

@@ -3,6 +3,7 @@ package com.dayou.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.*;
@@ -42,6 +43,7 @@ import static com.dayou.common.Constants.BY_TURNS;
  * @author wucl
  * @since 2023-10-30
  */
+@DS("mbs")
 @Service
 public class MajorServiceImpl extends ServiceImpl<MajorMapper, Major> implements IMajorService {
 

+ 2 - 0
service/src/main/java/com/dayou/service/impl/MajorTargetServiceImpl.java

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.TakeNumberDTO;
@@ -33,6 +34,7 @@ import java.util.stream.Collectors;
  * @author wucl
  * @since 2023-11-03
  */
+@DS("mbs")
 @Service
 public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, MajorTarget> implements IMajorTargetService {
 

+ 2 - 0
service/src/main/java/com/dayou/service/impl/OrderFundServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.entity.OrderFund;
 import com.dayou.mapper.OrderFundMapper;
 import com.dayou.service.IOrderFundService;
@@ -35,6 +36,7 @@ import com.dayou.enums.BatchTaskTypeEnum;
  * @author wucl
  * @since 2023-12-14
  */
+@DS("mbs")
 @Service
 public class OrderFundServiceImpl extends ServiceImpl<OrderFundMapper, OrderFund> implements IOrderFundService {
 

+ 2 - 0
service/src/main/java/com/dayou/service/impl/ProductionFundServiceImpl.java

@@ -1,6 +1,7 @@
 package com.dayou.service.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.common.BaseEntity;
 import com.dayou.entity.OrderFund;
 import com.dayou.entity.ProductionFund;
@@ -41,6 +42,7 @@ import com.dayou.enums.BatchTaskTypeEnum;
  * @author wucl
  * @since 2023-12-08
  */
+@DS("mbs")
 @Service
 public class ProductionFundServiceImpl extends ServiceImpl<ProductionFundMapper, ProductionFund> implements IProductionFundService {
 

+ 2 - 0
service/src/main/java/com/dayou/service/impl/UserServiceImpl.java

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -65,6 +66,7 @@ import static com.dayou.exception.ErrorCode.*;
  * @author wucl
  * @since 2022-11-29
  */
+@DS("mbs")
 @Service
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
 

+ 7 - 0
sql/update_sql.sql

@@ -578,3 +578,10 @@ ALTER TABLE `personal_production` ADD is_online bit(1) NULL COMMENT '是否是
     未更新到test-env
  */
 ALTER TABLE major MODIFY COLUMN clientele_contact_id bigint(20) NULL;
+ALTER TABLE major MODIFY COLUMN bailor varchar(255) NULL;
+ALTER TABLE major MODIFY COLUMN bailor_contact_name varchar(255) NULL;
+ALTER TABLE major MODIFY COLUMN bailor_contact_tel varchar(255) NULL;
+ALTER TABLE major MODIFY COLUMN owner varchar(255) NULL;
+ALTER TABLE major MODIFY COLUMN clientele_type varchar(32) NULL;
+
+