瀏覽代碼

同步资产订单数据

wucl 11 月之前
父節點
當前提交
9bb149f3bd

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

@@ -113,6 +113,6 @@ public class SyncHistoryTest {
 
     @Test
     public void getLandTargetMajorTest() throws NoSuchFieldException, IllegalAccessException {
-       dyoaHistoryService.fetchRealAmountClaimData();
+       dyoaHistoryService.fetchAssetsOrderProduction();
     }
 }

+ 11 - 4
dao/src/main/java/com/dayou/mapper/DyoaHistoryMapper.java

@@ -1,6 +1,7 @@
 package com.dayou.mapper;
 
-import com.dayou.dto.history.HisMajorTarget;
+import com.dayou.dto.history.HisAssetsProduction;
+import com.dayou.dto.history.HisMajorProduction;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -11,13 +12,13 @@ public interface DyoaHistoryMapper {
 
     Map<String,Object> queryMajorOrder(@Param("id") String id);
 
-    List<HisMajorTarget> queryMajorHouseTarget(@Param("id") String id);
+    List<HisMajorProduction> queryMajorHouseTarget(@Param("id") String id);
 
-    List<HisMajorTarget> queryMajorLandTarget(@Param("id")String id);
+    List<HisMajorProduction> queryMajorLandTarget(@Param("id")String id);
 
     List<String> selectDyoaMajorOrderIds();
 
-    List<HisMajorTarget> queryMajorProduction(@Param("id") String id);
+    List<HisMajorProduction> queryMajorProduction(@Param("id") String id);
 
     List<String> selectDyoaPersonalOrderIds();
 
@@ -32,4 +33,10 @@ public interface DyoaHistoryMapper {
     List<String> getNewClaimRecordIds(@Param("max") Date max);
 
     Map<String, Object> getNewClaimRecord(@Param("id") String id);
+
+    List<String> selectDyoaAssetsOrderIds();
+
+    Map<String, Object> queryAssetsOrder(@Param("id")String id);
+
+    List<HisAssetsProduction> queryAssetsProduction(@Param("id") String id);
 }

+ 69 - 4
dao/src/main/resources/mapper/DyoaHistoryMapper.xml

@@ -48,7 +48,7 @@
         from dy_order where id = #{id}
     </select>
 
-       <select id="queryMajorHouseTarget" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorTarget">
+       <select id="queryMajorHouseTarget" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorProduction">
            select
            d.id,
            doth.id as tId,
@@ -101,7 +101,7 @@
            left join dy_order_product dop on dop.orderId = d.id where doth.orderId = #{id}
        </select>
 
-       <select id="queryMajorLandTarget" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorTarget">
+       <select id="queryMajorLandTarget" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorProduction">
               select
                      d.id,
                      dotl.id as tId,
@@ -150,7 +150,7 @@
 
        </select>
 
-    <select id="queryMajorProduction" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorTarget">
+    <select id="queryMajorProduction" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorProduction">
         select
         d.id,
         dop.id as pId,
@@ -269,6 +269,7 @@
 
     <select id="getNewClaimRecord" parameterType="java.lang.String" resultType="map">
         SELECT
+            id,
             orderId,
             incomeId,
             money,
@@ -278,4 +279,68 @@
         FROM
             dy_finance_income_order where id = #{id}
     </select>
-</mapper>
+
+    <select id="selectDyoaAssetsOrderIds" resultType="java.lang.String">
+        select id from dy_assets where deleted = 0
+    </select>
+
+    <select id="queryAssetsOrder" parameterType="java.lang.String" resultType="map">
+        SELECT
+            id,
+            masterName ,
+            assign,
+            masterOrgName,
+            code,
+            name,
+            businessType,
+            managerName,
+            companyName,
+            principal,
+            principalName,
+            principalMobile,
+            description,
+            orderTime,
+            needPay,
+            standardPrice,
+            archiveTime,
+            customerType,
+            customerName,
+            bankContactName,
+            terminalType,
+            terminalName,
+            terminalContactName,
+            importantAsset,
+            stateOwned,
+            abroadAsset,
+            cz,
+            stock,
+            repeatOrder
+        FROM
+            dy_assets where id = #{id} and deleted = 0
+
+    </select>
+
+    <select id="queryAssetsProduction" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisAssetsProduction">
+        SELECT
+            da.id,
+            dop.id AS pId,
+            da.yjsReportNO,
+            da.reportNo,
+            da.needPay,
+            da.standardPrice,
+            da.principal,
+            da.principalMobile,
+            da.money,
+            da.area,
+            da.price,
+            dop.printQuantity,
+            da.archiveTime,
+            da.finished,
+            dop.type
+        FROM
+            dy_assets da
+                LEFT JOIN dy_order_product dop ON da.id = dop.orderId
+        WHERE
+            da.deleted = 0 and da.id = #{id}
+    </select>
+ </mapper>

+ 5 - 3
dao/src/main/resources/mapper/DyoaRecordMapper.xml

@@ -44,14 +44,16 @@
                 SELECT
                     mbs_id,
                     dyoa_id,
-                    ( CASE mbs_type WHEN 'MAJOR_ORDER' THEN 'MAJOR_BUSINESS' WHEN 'PERSONAL_ORDER' THEN 'PERSONAL_BUSINESS' END ) AS mbs_type
+                    ( CASE mbs_type WHEN 'MAJOR_ORDER' THEN 'MAJOR_BUSINESS' WHEN 'PERSONAL_ORDER' THEN 'PERSONAL_BUSINESS'
+                        WHEN 'ASSETS_ORDER' THEN 'ASSET_BUSINESS'
+                        END ) AS mbs_type
                 FROM
                     dyoa_record
                 WHERE
-                    mbs_type IN ( 'MAJOR_ORDER','PERSONAL_ORDER' )) m
+                    mbs_type IN ( 'MAJOR_ORDER','PERSONAL_ORDER','ASSETS_ORDER' )) m
                 LEFT JOIN order_fund f ON (
                 f.business_id = m.mbs_id
-                    AND f.business_type = m.mbs_type)
+                    AND f.business_type = m.mbs_type) where f.id is not null
     </select>
 
 

+ 28 - 0
domain/src/main/java/com/dayou/dto/history/HisAssetsProduction.java

@@ -0,0 +1,28 @@
+package com.dayou.dto.history;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class HisAssetsProduction {
+
+    private String id;
+    private String pId;
+    private String type;
+    private String reportNo;
+    private String yjsReportNo;
+    private String principal;
+    private String principalMobile;
+    private String propertyName;
+    private BigDecimal area;
+    private BigDecimal money;
+    private BigDecimal price;
+    private Boolean finished;
+    private Date archiveTime;
+    private BigDecimal standardPrice;
+    private BigDecimal needPay;
+    private Integer printQuantity;
+
+}

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

@@ -7,7 +7,7 @@ import java.time.LocalDate;
 import java.util.Date;
 
 @Data
-public class HisMajorTarget {
+public class HisMajorProduction {
 
     private String id;
     private String tId;

+ 2 - 1
domain/src/main/java/com/dayou/entity/AssetsProduction.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.dayou.common.BaseEntity;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 import lombok.Data;
@@ -156,7 +157,7 @@ public class AssetsProduction extends BaseEntity {
      */
     @ImportCell
     @ExportCell(columnName = "归档日期")
-    private LocalDateTime saveFileDate;
+    private Date saveFileDate;
 
     /**
      * 送达状态

+ 2 - 1
domain/src/main/java/com/dayou/entity/FinanceClaim.java

@@ -2,6 +2,7 @@ package com.dayou.entity;
 import java.math.BigDecimal;
 import com.dayou.common.BaseEntity;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 import com.github.liangbaika.validate.annations.AbcValidate;
 import com.github.liangbaika.validate.enums.Check;
@@ -50,7 +51,7 @@ public class FinanceClaim extends BaseEntity {
     /**
      * 认领时日
      */
-    private LocalDateTime claimDatetime;
+    private Date claimDatetime;
 
     /**
      * 认领金额

+ 3 - 1
domain/src/main/java/com/dayou/enums/MainBusinessEnum.java

@@ -37,7 +37,9 @@ public enum MainBusinessEnum implements CodeMsgEnumInterface<String,String> {
 
     REAL_AMOUNT("REAL_AMOUNT","实收款"),
 
-    REAL_AMOUNT_CLAIM("REAL_AMOUNT_CLAIM","实收款认领")
+    REAL_AMOUNT_CLAIM("REAL_AMOUNT_CLAIM","实收款认领"),
+
+    ASSETS_ORDER("ASSETS_ORDER","资产订单")
     ;
 
    MainBusinessEnum(String code, String name) {

+ 268 - 65
service/src/main/java/com/dayou/dyoa/DyoaHistoryServiceImpl.java

@@ -14,11 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.common.BaseEntity;
-import com.dayou.dto.PriceFeedbackDTO;
-import com.dayou.dto.history.HisAssetsOrder;
-import com.dayou.dto.history.HisMajorOrder;
-import com.dayou.dto.history.HisMajorTarget;
-import com.dayou.dto.history.HisOrderParam;
+import com.dayou.dto.history.*;
 import com.dayou.entity.*;
 import com.dayou.enums.MainBusinessEnum;
 import com.dayou.enums.ProductionEnum;
@@ -27,6 +23,7 @@ import com.dayou.mapper.DyoaHistoryMapper;
 import com.dayou.mapper.DyoaRecordMapper;
 import com.dayou.mapper.FinanceClaimMapper;
 import com.dayou.service.*;
+import com.dayou.service.impl.AssetsServiceImpl;
 import com.dayou.utils.DateUtils;
 import com.dayou.utils.HttpKit;
 import lombok.extern.slf4j.Slf4j;
@@ -82,6 +79,10 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     private static final Map<String,String> REAL_AMOUNT_CLAIM_COLUM = new HashMap<>();
 
+    private static final Map<String,String> ASSETS_ORDER_COLUM = new HashMap<>();
+
+    private static final Map<String,String> ASSETS_PRODUCTION_COLUM = new HashMap<>();
+
 
 
     @Autowired
@@ -122,10 +123,16 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     private ICustomerLinkmanService customerLinkmanService;
 
     @Autowired
-    private FinanceClaimMapper financeClaimMapper;
+    private IAssetsService assetsService;
 
     @Autowired
     private IFinanceClaimService financeClaimService;
+
+    @Autowired
+    private IAssetsService assetsServiceImpl;
+
+    @Autowired
+    private IAssetsProductionService assetsProductionService;
     static {
 //        MAJOR_ORDER_COLUM.put("id","id");
         MAJOR_ORDER_COLUM.put("name","name");
@@ -239,10 +246,47 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         REAL_AMOUNT_CLAIM_COLUM.put("takeEmpName","claimUserId");
         REAL_AMOUNT_CLAIM_COLUM.put("createdDatetime","claimDatetime");
 
+        //资产订单字段
+        ASSETS_ORDER_COLUM.put("masterName","clientManagerId");
+        ASSETS_ORDER_COLUM.put("assign","allotType");
+        ASSETS_ORDER_COLUM.put("masterOrgName","departmentId");
+        ASSETS_ORDER_COLUM.put("code","orderId");
+        ASSETS_ORDER_COLUM.put("name","name");
+        ASSETS_ORDER_COLUM.put("businessType","assetsBusinessGener");
+        ASSETS_ORDER_COLUM.put("managerName","principalId");
+        ASSETS_ORDER_COLUM.put("companyName","clienteleSubId");
+        ASSETS_ORDER_COLUM.put("principal","bailor");
+        ASSETS_ORDER_COLUM.put("principalName","bailorContactName");
+        ASSETS_ORDER_COLUM.put("principalMobile","bailorContactTel");
+        ASSETS_ORDER_COLUM.put("description","remark");
+        ASSETS_ORDER_COLUM.put("customerType","clienteleType");
+        ASSETS_ORDER_COLUM.put("customerName","clienteleId");
+        ASSETS_ORDER_COLUM.put("bankContactName","clienteleContactId");
+        ASSETS_ORDER_COLUM.put("terminalType","terminalClienteleType");
+        ASSETS_ORDER_COLUM.put("terminalName","terminalClienteleId");
+        ASSETS_ORDER_COLUM.put("terminalContactName","terminalClienteleContactId");
+        ASSETS_ORDER_COLUM.put("importantAsset","significantAssetsReorganization");
+        ASSETS_ORDER_COLUM.put("stateOwned","stateAssets");
+        ASSETS_ORDER_COLUM.put("abroadAsset","foreignAssetsInvolved");
+        ASSETS_ORDER_COLUM.put("cz","dispenseBenefit");
+        ASSETS_ORDER_COLUM.put("stock","security");
+        ASSETS_ORDER_COLUM.put("repeatOrder","entrustAgain");
+
+        //资产产品字段
+        ASSETS_PRODUCTION_COLUM.put("principal","clientName");
+        ASSETS_PRODUCTION_COLUM.put("principalMobile","clientTel");
+        ASSETS_PRODUCTION_COLUM.put("money","evaluateAmount");
+        ASSETS_PRODUCTION_COLUM.put("area","evaluateAcreage");
+        ASSETS_PRODUCTION_COLUM.put("price","evaluatePrice");
+        ASSETS_PRODUCTION_COLUM.put("printQuantity","printCount");
+        ASSETS_PRODUCTION_COLUM.put("archiveTime","saveFileDate");
+        ASSETS_PRODUCTION_COLUM.put("finished","delivery");
+        ASSETS_PRODUCTION_COLUM.put("type","productionType");
+
     }
 
-    @Autowired
-    private DyoaRecordMapper dyoaRecordMapper;
+
+
 
     @Override
     public Page<HisMajorOrder> hisMajorPage(HisOrderParam param) {
@@ -385,6 +429,24 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         });
     }
 
+    @Override
+    public void 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");
+            String code = (String) dyoaMajorOrder.get("code");
+            String name = (String) dyoaMajorOrder.get("name");
+            this.doCreateMajorProduction(shouldAmount,id, mbsId,code,name);
+        } catch (NoSuchFieldException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     @DSTransactional
     @Override
     public void fetchDyoaPersonalOrder(){
@@ -404,7 +466,7 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
             fetchClaimRecord(x);
         });
         //更新订单实收款金额
-        List<OrderFund> orderTotalAmount = financeClaimMapper.queryOrderTotalAmount();
+        List<OrderFund> orderTotalAmount = financeClaimService.queryOrderTotalAmount();
         orderFundService.updateBatchById(orderTotalAmount);
 
         //分配认领金额到产品收款表
@@ -464,20 +526,22 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
                             field.set(financeClaim,getMbsUserId((String) columValue));break;
                         case "claimAmount":
                             field.set(financeClaim, BigDecimal.valueOf((Double) columValue));break;
-                        case "claimDatetime":
-                            field.set(financeClaim, DateUtils.dateToLocalDate((Date) columValue));break;
+//                        case "claimDatetime":
+//                            LocalDate value = DateUtils.parseLocalDateTime((Date) columValue);
+//                            field.set(financeClaim, (Date) columValue);break;
                         default:
                             field.set(financeClaim,columValue);
                     }
 
                 }
-                Date createdDatetime = (Date) resultMap.get("createdDatetime");
-                financeClaim.setCreated(createdDatetime);
-                financeClaimService.save(financeClaim);
-                //插入同步记录表
-                Long mbsId = financeClaim.getId();
-                dyoaRecordService.insert(MainBusinessEnum.REAL_AMOUNT_CLAIM, mbsId, dyoaId,createdDatetime);
+
             }
+            Date createdDatetime = (Date) resultMap.get("createdDatetime");
+            financeClaim.setCreated(createdDatetime);
+            financeClaimService.save(financeClaim);
+            //插入同步记录表
+            Long mbsId = financeClaim.getId();
+            dyoaRecordService.insert(MainBusinessEnum.REAL_AMOUNT_CLAIM, mbsId, dyoaId,createdDatetime);
         }catch (NoSuchFieldException e) {
             throw new RuntimeException(e);
         } catch (IllegalAccessException e) {
@@ -486,14 +550,7 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     }
 
 
-    private Long findRealAmountMbsId(String columValue) {
-        if (CollectionUtil.isEmpty(realAmounts)){
-            realAmounts = dyoaRecordService.list(new LambdaQueryWrapper<DyoaRecord>().select(DyoaRecord::getMbsId, DyoaRecord::getDyoaId)
-                    .eq(DyoaRecord::getMbsType, REAL_AMOUNT.name())).stream().collect(Collectors.toMap(DyoaRecord::getDyoaId, DyoaRecord::getMbsId));
-        }
-        return realAmounts.get(columValue);
-    }
-
+    @DSTransactional
     @Override
     public void fetchRealAmount() {
         Date max = dyoaRecordService.getMaxRealAmountCreatedTime();
@@ -503,6 +560,157 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         });
     }
 
+    @DSTransactional
+    @Override
+    public void fetchAssetsOrderProduction() {
+        List<String> assetsOrderIds = dyoaHistoryMapper.selectDyoaAssetsOrderIds();
+        assetsOrderIds.stream().forEach(x->{
+            fetchAboutAssets(x);
+        });
+    }
+
+    private void fetchAboutAssets(String id) {
+        try {
+            //1. 获取订单信息,插入assets表。
+            Map<String, Object> dyoaAssetsOrder = dyoaHistoryMapper.queryAssetsOrder(id);
+            Long mbsId = this.doCreateAssetsOrder(dyoaAssetsOrder);
+            //2. 同步产品
+            Double shouldAmount = (Double) dyoaAssetsOrder.get("needPay");
+            String code = (String) dyoaAssetsOrder.get("code");
+            String name = (String) dyoaAssetsOrder.get("name");
+            this.doCreateAssetsProduction(shouldAmount,id, mbsId,code,name);
+        } catch (NoSuchFieldException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private Long doCreateAssetsOrder(Map<String, Object> dyoaAssetsOrder) throws NoSuchFieldException, IllegalAccessException {
+        String dyoaId = (String) dyoaAssetsOrder.get("id");
+        String managerName = (String) dyoaAssetsOrder.get("managerName");
+
+        DyoaRecord record = dyoaRecordService.getOne(new LambdaQueryWrapper<DyoaRecord>().eq(DyoaRecord::getMbsType, ASSETS_ORDER.name()).eq(DyoaRecord::getDyoaId, dyoaId));
+        if (record != null){
+            //更新项目负责人
+            Long mbsOrderId = record.getMbsId();
+            if (StrUtil.isNotEmpty(managerName)){
+                Assets assets = assetsService.getOne(new LambdaQueryWrapper<Assets>().eq(BaseEntity::getId, mbsOrderId).select(BaseEntity::getId, Assets::getPrincipalId));
+                if (assets.getPrincipalId()==null){
+                    assetsService.update(new LambdaUpdateWrapper<Assets>().set(Assets::getPrincipalId,getMbsUserId(managerName)).eq(BaseEntity::getId, mbsOrderId));
+                    log.info("项目负责人被更新 mbsId: {}",mbsOrderId);
+                }
+            }
+            return mbsOrderId;
+        }
+        Assets assets = new Assets();
+        Class<Assets> aClass = Assets.class;
+        for (Map.Entry<String, String> entry : ASSETS_ORDER_COLUM.entrySet()){
+            Object columValue = dyoaAssetsOrder.get(entry.getKey());
+            if (columValue!=null){
+                String mbsColum = entry.getValue();
+                Field field = aClass.getDeclaredField(mbsColum);
+                field.setAccessible(true);
+                switch (mbsColum){
+                    case "allotType":
+                        field.set(assets,(Boolean) columValue?ASSIGN:BY_TURNS);break;
+                    case "clientManagerId":
+                    case "principalId":
+                        field.set(assets,getMbsUserId((String) columValue));break;
+                    case "departmentId":
+                        field.set(assets,getMbsDepartmentId((String) columValue));break;
+                    case "clienteleSubId":
+                    case "clienteleId":
+                    case "terminalClienteleId":
+                        field.set(assets, getCompanyId((String) columValue));break;
+                    case "terminalClienteleContactId":
+                    case "clienteleContactId":
+                        field.set(assets, getCompanyLinkmanId((String) columValue));break;
+                    default:
+                        field.set(assets,columValue);
+                }
+
+            }
+        }
+        assets.setCreated((Date) dyoaAssetsOrder.get("orderTime"));
+        assetsServiceImpl.save(assets);
+        //插入同步记录表
+        Long mbsId = assets.getId();
+        dyoaRecordService.insert(MainBusinessEnum.ASSETS_ORDER, mbsId, dyoaId,null);
+        return mbsId;
+    }
+
+    private void doCreateAssetsProduction(Double shouldAmount, String id, Long mbsId, String code, String name) throws NoSuchFieldException, IllegalAccessException {
+        //创建订单收款记录
+        OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>().eq(OrderFund::getBusinessType, ASSET_BUSINESS.name())
+                .eq(OrderFund::getBusinessId, mbsId).eq(OrderFund::getOrderId, code));
+        if (orderFund==null){
+            orderFund = new OrderFund();
+            orderFund.setBusinessId(mbsId);
+            orderFund.setBusinessType(ASSET_BUSINESS.name());
+            orderFund.setOrderId(code);
+            orderFund.setOrderName(name);
+            orderFund.setShouldAmount(BigDecimal.valueOf(shouldAmount==null?0d:shouldAmount));
+            orderFundService.save(orderFund);
+        }
+        List<HisAssetsProduction> assetsProductions = dyoaHistoryMapper.queryAssetsProduction(id);
+        //创建产品收款记录
+        if (CollectionUtil.isNotEmpty(assetsProductions)){
+            for (HisAssetsProduction production :assetsProductions){
+                if (StrUtil.isNotBlank(production.getPId())){
+                    AssetsProduction assetsProduction = new AssetsProduction();
+                    assetsProduction.setBusinessId(mbsId);
+                    for (Map.Entry<String, String> entry : ASSETS_PRODUCTION_COLUM.entrySet()){
+                        Field field = HisAssetsProduction.class.getDeclaredField(entry.getKey());
+                        field.setAccessible(true);
+                        Object value = field.get(production);
+                        if (value!=null){
+                            String mbsColum = entry.getValue();
+                            Field xFiled = AssetsProduction.class.getDeclaredField(mbsColum);
+                            xFiled.setAccessible(true);
+                            switch (mbsColum){
+                                case "productionType":
+                                    String productionType = getProductionType((String) value);
+                                    xFiled.set(assetsProduction, productionType);
+                                    break;
+                                default:
+                                    xFiled.set(assetsProduction,value);
+                                    break;
+                            }
+                        }
+
+                    }
+                    if (assetsProduction.getProductionType().equals(ProductionEnum.STATEMENT.name())){
+                        assetsProduction.setProductionNo(production.getYjsReportNo());
+                    }else{
+                        assetsProduction.setProductionNo(production.getReportNo());
+                    }
+                    AssetsProduction mp = assetsProductionService.getOne(new LambdaQueryWrapper<AssetsProduction>().eq(AssetsProduction::getBusinessId, mbsId)
+                            .eq(AssetsProduction::getProductionNo, assetsProduction.getProductionNo()).eq(AssetsProduction::getProductionType, assetsProduction.getProductionType()));
+                    //插入产品记录
+                    if (mp==null){
+                        //查询有没有产品号,如果没有就不创建产品和产品收款
+                        if (StrUtil.isNotBlank(assetsProduction.getProductionNo())){
+                            assetsProductionService.save(assetsProduction);
+                            //创建产品收款记录
+                            ProductionFund productionFund = new ProductionFund();
+                            productionFund.setBusinessId(mbsId);
+                            productionFund.setBusinessType(ASSET_BUSINESS.name());
+                            productionFund.setProductionNo(assetsProduction.getProductionNo());
+                            productionFund.setProductionType(assetsProduction.getProductionType());
+                            productionFund.setOrderFundId(orderFund.getId());
+                            productionFund.setStandardAmount(production.getStandardPrice());
+                            productionFund.setProductionShouldAmount(orderFund.getShouldAmount());
+                            productionFundService.save(productionFund);
+                        }
+
+                    }
+                }
+            }
+        }
+
+    }
+
 
     private void fetchReamAmountDetail(String id){
         try{
@@ -542,6 +750,7 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         }
 
     }
+
     private void fetchAboutPersonal(String dyoaId) {
         Map<String, Object> dyoaPersonalOrder = dyoaHistoryMapper.queryPersonalOrder(dyoaId);
         try {
@@ -650,12 +859,6 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         return JSON.toJSONString(ret);
     }
 
-    public static void main(String[] args) {
-        String credentials = covertData("房产证,国土证,不动产权证,租赁合同", "credentials");
-        System.out.println(credentials);
-    }
-
-
     private Long getCompanyId(String columValue) {
         List<CustomerCompany> list = customerCompanyService.list(new LambdaQueryWrapper<CustomerCompany>().eq(CustomerCompany::getName, columValue)
                 .select(BaseEntity::getId));
@@ -679,46 +882,31 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         return JSON.toJSONString(list);
     }
 
+    private void doCreateMajorProduction(Double shouldAmount ,String id,Long majorId,String code,String name) throws NoSuchFieldException, IllegalAccessException {
 
-    //多数据源切换,主方法用@DSTransactional注解解决事务失效问题
-    @Override
-    public void 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);
-        } catch (NoSuchFieldException e) {
-            throw new RuntimeException(e);
-        } catch (IllegalAccessException e) {
-            throw new RuntimeException(e);
+        //创建订单收款记录
+        OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>().eq(OrderFund::getBusinessType, MAJOR_BUSINESS.name())
+                .eq(OrderFund::getBusinessId, majorId).eq(OrderFund::getOrderId, code));
+        if (orderFund==null){
+            orderFund = new OrderFund();
+            orderFund.setBusinessId(majorId);
+            orderFund.setBusinessType(MAJOR_BUSINESS.name());
+            orderFund.setOrderId(code);
+            orderFund.setOrderName(name);
+            orderFund.setShouldAmount(BigDecimal.valueOf(shouldAmount==null?0d:shouldAmount));
+            orderFundService.save(orderFund);
         }
-    }
 
-    public void doCreateMajorProduction(Double shouldAmount ,String id,Long majorId) throws NoSuchFieldException, IllegalAccessException {
-        List<HisMajorTarget> majorProductions = dyoaHistoryMapper.queryMajorProduction(id);
+        List<HisMajorProduction> 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){
+
+            for (HisMajorProduction 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 field = HisMajorProduction.class.getDeclaredField(entry.getKey());
                         field.setAccessible(true);
                         Object value = field.get(production);
                         if (value!=null){
@@ -777,7 +965,13 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     }
 
-
+    private Long findRealAmountMbsId(String columValue) {
+        if (CollectionUtil.isEmpty(realAmounts)){
+            realAmounts = dyoaRecordService.list(new LambdaQueryWrapper<DyoaRecord>().select(DyoaRecord::getMbsId, DyoaRecord::getDyoaId)
+                    .eq(DyoaRecord::getMbsType, REAL_AMOUNT.name())).stream().collect(Collectors.toMap(DyoaRecord::getDyoaId, DyoaRecord::getMbsId));
+        }
+        return realAmounts.get(columValue);
+    }
 
     private String getProductionType(String value) {
         if (value.contains(ProductionEnum.REPORT.getMsg())){
@@ -874,9 +1068,18 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         if (departmentName.equals("土地综合部")){
             departmentName = "土地规划与评估事业部";
         }
-        if (departmentName.equals("资产事业部")){
+        if (departmentName.equals("资产事业部") ||departmentName.equals("事业部")  ){
             departmentName = "资产评估事业部";
         }
+        if (departmentName.equals("资产评估1组")){
+            departmentName = "资产评估一组";
+        }
+        if (departmentName.equals("资产评估2组")){
+            departmentName = "资产评估二组";
+        }
+        if (departmentName.equals("资产评估3组")){
+            departmentName = "资产评估三组";
+        }
         return departments.get(departmentName);
     }
 
@@ -891,7 +1094,7 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     private Long findOrderFundId(String columValue){
         if (CollectionUtil.isEmpty(orderFundIds)){
-            orderFundIds = dyoaRecordMapper.selectOrderFundIdByDyoaOrderId().stream().collect(Collectors.toMap(DyoaRecord::getDyoaId,DyoaRecord::getMbsId));
+            orderFundIds = dyoaRecordService.selectOrderFundIdByDyoaOrderId().stream().collect(Collectors.toMap(DyoaRecord::getDyoaId,DyoaRecord::getMbsId));
         }
         return orderFundIds.get(columValue);
     }

+ 2 - 0
service/src/main/java/com/dayou/dyoa/IDyoaHistoryService.java

@@ -31,4 +31,6 @@ public interface IDyoaHistoryService {
     void fetchRealAmountClaimData();
 
     void fetchRealAmount();
+
+     void fetchAssetsOrderProduction();
 }

+ 4 - 0
service/src/main/java/com/dayou/service/IDyoaRecordService.java

@@ -7,7 +7,9 @@ import com.dayou.enums.MainBusinessEnum;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -30,5 +32,7 @@ public interface IDyoaRecordService extends IService<DyoaRecord> {
         Date getMaxRealAmountCreatedTime();
 
         Date getMaxClaimDate();
+
+        List<DyoaRecord> selectOrderFundIdByDyoaOrderId();
 }
 

+ 3 - 0
service/src/main/java/com/dayou/service/IFinanceClaimService.java

@@ -4,6 +4,7 @@ import com.dayou.dto.RealFundAssetsStatDTO;
 import com.dayou.entity.FinanceClaim;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.entity.OrderFund;
 import com.dayou.vo.FinanceClaimVO;
 import com.dayou.vo.RealFundAssetsStatVO;
 import com.dayou.vo.RealFundMajorStatVO;
@@ -82,4 +83,6 @@ public interface IFinanceClaimService extends IService<FinanceClaim> {
     Page<RealFundPersonalVO> personalStat(Page page, RealFundPersonalVO personalVO);
 
     List<RealFundPersonalVO> personalStatExport(RealFundPersonalVO personalVO);
+
+    List<OrderFund> queryOrderTotalAmount();
 }

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

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.*;
 import com.dayou.entity.*;
@@ -40,6 +41,7 @@ import static com.dayou.enums.ProductionEnum.STATEMENT;
  * @author GouGengquan
  * @since 2024-03-28
  */
+@DS("mbs")
 @Service
 public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMapper, AssetsProduction> implements IAssetsProductionService {
 
@@ -413,7 +415,7 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderReportDTO.getOrderFundId());
                 financeClaim.setClaimAmount(thisTimeAmount);
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaim.setProductionFundId(orderReportDTO.getProductionFundId());
                 financeClaimService.add(financeClaim);
             }

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

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.bo.SimpleParentModel;
 import com.dayou.entity.*;
@@ -48,6 +49,7 @@ import static com.dayou.enums.ProductionEnum.*;
  * @author GouGengquan
  * @since 2024-03-28
  */
+@DS("mbs")
 @Service
 public class AssetsServiceImpl extends ServiceImpl<AssetsMapper, Assets> implements IAssetsService {
 
@@ -626,7 +628,7 @@ public class AssetsServiceImpl extends ServiceImpl<AssetsMapper, Assets> impleme
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderFundId);
                 financeClaim.setClaimAmount(thisTimeAmount);
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaimService.add(financeClaim);
             }
             return Boolean.TRUE;

+ 7 - 0
service/src/main/java/com/dayou/service/impl/DyoaRecordServiceImpl.java

@@ -14,7 +14,9 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 
+import java.util.Collections;
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -75,4 +77,9 @@ public class DyoaRecordServiceImpl extends ServiceImpl<DyoaRecordMapper, DyoaRec
         return dyoaRecordMapper.getMaxClaimDate();
     }
 
+    @Override
+    public List<DyoaRecord> selectOrderFundIdByDyoaOrderId() {
+        return dyoaRecordMapper.selectOrderFundIdByDyoaOrderId();
+    }
+
 }

+ 9 - 1
service/src/main/java/com/dayou/service/impl/FinanceClaimServiceImpl.java

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.OrderReportDTO;
@@ -31,6 +32,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -46,6 +48,7 @@ import org.springframework.web.multipart.MultipartFile;
  * @author wucl
  * @since 2023-12-08
  */
+@DS("mbs")
 @Service
 public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, FinanceClaim> implements IFinanceClaimService {
 
@@ -215,6 +218,11 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
         return financeClaimMapper.personalStatExport(personalVO);
     }
 
+    @Override
+    public List<OrderFund> queryOrderTotalAmount() {
+        return financeClaimMapper.queryOrderTotalAmount();
+    }
+
 
     @Override
     public synchronized BigDecimal checkFinanceFound(Long financeFundId) {
@@ -259,7 +267,7 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
             financeClaim.setRealFundId(financeFundId);
             financeClaim.setOrderFundId(orderFund.getId());
             financeClaim.setClaimUserId(LoginContext.getCurrentUserId());
-            financeClaim.setClaimDatetime(LocalDateTime.now());
+            financeClaim.setClaimDatetime(new Date());
             financeClaim.setClaimAmount(x.getAmount());
             this.save(financeClaim);
         });

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

@@ -413,7 +413,7 @@ public class MajorProductionServiceImpl extends ServiceImpl<MajorProductionMappe
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderFundId);
                 financeClaim.setClaimAmount(thisTimeAmount);
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaim.setProductionFundId(productionFundId);
                 financeClaimService.save(financeClaim);
             }
@@ -458,7 +458,7 @@ public class MajorProductionServiceImpl extends ServiceImpl<MajorProductionMappe
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderFundId);
                 financeClaim.setClaimAmount(thisTimeAmount);
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaimService.save(financeClaim);
             }
             return Boolean.TRUE;

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

@@ -347,7 +347,7 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderFund.getId());
                 financeClaim.setClaimUserId(LoginContext.getCurrentUserId());
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaim.setClaimAmount(x.getThisTimeAmount());
                 financeClaimService.save(financeClaim);
                 //更新订单认领总金额

+ 33 - 16
sql/update_sql.sql

@@ -577,22 +577,22 @@ 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 personal MODIFY COLUMN clientele_type varchar(255) NULL;
-ALTER TABLE personal MODIFY COLUMN inward_staff bigint(32) NULL;
-ALTER TABLE personal MODIFY COLUMN evaluate_aim varchar(255) NULL;
-ALTER TABLE personal MODIFY COLUMN bailorA varchar(255) NULL;
-ALTER TABLE personal MODIFY COLUMN bailorB varchar(255) NULL;
-ALTER TABLE personal MODIFY COLUMN bailorA_tel varchar(255) NULL;
-ALTER TABLE personal MODIFY COLUMN bailorB_tel varchar(255) NULL;
-ALTER TABLE personal MODIFY COLUMN clientele_contact_id bigint(32) NULL;
-ALTER TABLE personal MODIFY COLUMN loan_limit decimal(16,4) NULL;
-ALTER TABLE personal MODIFY COLUMN location varchar(400) NULL;
-ALTER TABLE order_fund MODIFY COLUMN order_name varchar(400) NULL;
+ALTER TABLE major MODIFY COLUMN clientele_contact_id bigint(20) NULL COMMENT '客户联系人id';
+ALTER TABLE major MODIFY COLUMN bailor varchar(255) NULL COMMENT '委托人';
+ALTER TABLE major MODIFY COLUMN bailor_contact_name varchar(255) NULL COMMENT '委托联系人姓名';
+ALTER TABLE major MODIFY COLUMN bailor_contact_tel varchar(255) NULL COMMENT '委托人联系人电话';
+ALTER TABLE major MODIFY COLUMN owner varchar(255) NULL COMMENT '产权人';
+ALTER TABLE personal MODIFY COLUMN clientele_type varchar(255) NULL COMMENT '客户类型(企业,个人)';
+ALTER TABLE personal MODIFY COLUMN inward_staff bigint(32) NULL COMMENT '内业人员';
+ALTER TABLE personal MODIFY COLUMN evaluate_aim varchar(255) NULL COMMENT '评估目的';
+ALTER TABLE personal MODIFY COLUMN bailorA varchar(255) NULL COMMENT '委托人1';
+ALTER TABLE personal MODIFY COLUMN bailorB varchar(255) NULL COMMENT '委托人2';
+ALTER TABLE personal MODIFY COLUMN bailorA_tel varchar(255) NULL COMMENT '委托人1电话';
+ALTER TABLE personal MODIFY COLUMN bailorB_tel varchar(255) NULL COMMENT '委托人2电话';
+ALTER TABLE personal MODIFY COLUMN clientele_contact_id bigint(32) NULL COMMENT '客户联系人id';
+ALTER TABLE personal MODIFY COLUMN loan_limit decimal(16,4) NULL COMMENT '贷款额度';
+ALTER TABLE personal MODIFY COLUMN location varchar(400) NULL COMMENT '坐落';
+ALTER TABLE order_fund MODIFY COLUMN order_name varchar(400) NULL COMMENT '订单名称';
 
 DROP TABLE IF EXISTS `dyoa_record`;
 CREATE TABLE `dyoa_record` (
@@ -610,3 +610,20 @@ CREATE TABLE `dyoa_record` (
 
 SET FOREIGN_KEY_CHECKS = 1;
 
+ALTER TABLE assets MODIFY COLUMN name varchar(400) NOT NULL COMMENT '项目名称';
+ALTER TABLE assets MODIFY COLUMN bailor varchar(400) NULL COMMENT '委托人';
+ALTER TABLE assets MODIFY COLUMN clientele_type varchar(32) NULL COMMENT '客户类型(企业,个人)';
+ALTER TABLE assets MODIFY COLUMN clientele_contact_id bigint(32) NULL COMMENT '客户联系人id';
+ALTER TABLE assets MODIFY COLUMN security bit(1) NULL COMMENT '是否证券项目(0:Y 1:N)';
+ALTER TABLE assets MODIFY COLUMN significant_assets_reorganization bit(1) NULL COMMENT '是否资产重组项目(0:Y 1:N)';
+ALTER TABLE assets MODIFY COLUMN state_assets bit(1) NULL COMMENT '是否国资项目(0:Y 1:N)';
+ALTER TABLE assets MODIFY COLUMN foreign_assets_involved bit(1) NULL COMMENT '是否涉及境外资产(0:Y 1:N)';
+ALTER TABLE assets MODIFY COLUMN dispense_benefit bit(1) NULL COMMENT '是否分配产值';
+ALTER TABLE assets MODIFY COLUMN terminal_clientele_type varchar(32) NULL COMMENT '终端客户类型(企业,个人)';
+
+
+
+
+
+
+