Browse Source

个贷定价内业逻辑修改

wucl 11 months ago
parent
commit
fdf23a023a

+ 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();
+//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(){
+//
 //        try {
-//            JSONObject jsonObject = JSON.parseObject("<!DOCTYPE html>\n" +"<html>");
-//        } catch (JSONException e) {
-//            log.error("JSONException");
+//            // 创建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();
 //        }
-    }
-
-    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.fetchRealAmount();
-    }
-}
+//        return null;
+//    }
+//
+//    @Test
+//    public void getLandTargetMajorTest() throws NoSuchFieldException, IllegalAccessException {
+//       dyoaHistoryService.fetchRealAmount();
+//    }
+//}

+ 2 - 0
dao/src/main/java/com/dayou/mapper/DictDataMapper.java

@@ -2,6 +2,7 @@ package com.dayou.mapper;
 
 import com.dayou.entity.DictData;
 import com.dayou.dao.CustomBaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +14,5 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface DictDataMapper extends CustomBaseMapper<DictData> {
 
+    DictData findByDataTypeAndName(@Param("dataType") String dataType, @Param("remark") String remark);
 }

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

@@ -39,4 +39,6 @@ public interface DyoaHistoryMapper {
     Map<String, Object> queryAssetsOrder(@Param("id")String id);
 
     List<HisAssetsProduction> queryAssetsProduction(@Param("id") String id);
+
+    List<String> getNewFinanceInvoice(@Param("max") Date max);
 }

+ 1 - 0
dao/src/main/java/com/dayou/mapper/DyoaRecordMapper.java

@@ -27,4 +27,5 @@ public interface DyoaRecordMapper extends CustomBaseMapper<DyoaRecord> {
 
     List<DyoaRecord> selectOrderFundIdByDyoaOrderId();
 
+    Date getMaxFinanceInvoiceCreatedTime();
 }

+ 1 - 1
dao/src/main/java/com/dayou/mapper/PersonalMapper.java

@@ -34,5 +34,5 @@ public interface PersonalMapper extends CustomBaseMapper<Personal> {
 
     Page<PersonalVO> waitingAllotOrderPage(Page page,@Param("keyword") String keyword);
 
-    void batchUpdateOutWardStaffId(@Param("userId") Long userId, @Param("list") List<Long> orderIds);
+    void batchUpdateOutWardStaffId(@Param("userId") Long userId, @Param("priceStaffId") Long priceStaffId,@Param("list") List<Long> orderIds);
 }

+ 18 - 0
dao/src/main/resources/mapper/DictDataMapper.xml

@@ -24,4 +24,22 @@
         dict_type_id, dict_sort, name, remark, enabled
     </sql>
 
+    <select id="findByDataTypeAndName" resultType="com.dayou.entity.DictData">
+
+        SELECT
+            dd.id,
+            dd.dict_type_id,
+            dd.NAME,
+            dd.remark,
+            dd.enabled
+        FROM
+            dict_type dt
+                LEFT JOIN dict_data dd ON dd.dict_type_id = dt.id
+        WHERE
+            dt.`code` = #{dataType}
+          AND dd.remark = #{remark}
+          AND dd.enabled = 1
+          AND dd.deleted = 0
+    </select>
+
 </mapper>

+ 13 - 1
dao/src/main/resources/mapper/DyoaHistoryMapper.xml

@@ -343,4 +343,16 @@
         WHERE
             da.deleted = 0 and da.id = #{id}
     </select>
- </mapper>
+
+    <select id="getNewFinanceInvoice" parameterType="java.util.Date" resultType="java.lang.String">
+        SELECT
+        id
+        FROM
+        dy_finance_invoice
+        <where>
+            <if test="max!=null">
+                and createdDatetime &gt; #{max}
+            </if>
+        </where>
+    </select>
+</mapper>

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

@@ -57,4 +57,7 @@
     </select>
 
 
+    <select id="getMaxFinanceInvoiceCreatedTime" resultType="java.util.Date">
+        select max(order_datetime) from dyoa_record where mbs_type = 'FINANCE_INVOICE'
+    </select>
 </mapper>

+ 1 - 1
dao/src/main/resources/mapper/PersonalMapper.xml

@@ -417,7 +417,7 @@
     </select>
 
     <update id="batchUpdateOutWardStaffId">
-        update personal set outward_staff = #{userId} where id in (
+        update personal set outward_staff = #{userId} ,pricing_staff = #{priceStaffId} where id in (
             <foreach collection="list" item="item" separator="," index="index">
                 #{item}
             </foreach>

+ 2 - 0
domain/src/main/java/com/dayou/common/Constants.java

@@ -147,4 +147,6 @@ public interface Constants {
 
     String PROD_VALIDATE_URI= "/#/prod/validate";
 
+    String OUTWARD_TO_PRICE = "OUTWARD_TO_PRICE";
+
 }

+ 32 - 0
service/src/main/java/com/dayou/dyoa/DyoaHistoryServiceImpl.java

@@ -83,6 +83,8 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     private static final Map<String,String> ASSETS_PRODUCTION_COLUM = new HashMap<>();
 
+    private static final Map<String,String> FINANCE_CLAIM_COLUM = new HashMap<>();
+
 
 
     @Autowired
@@ -283,6 +285,26 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         ASSETS_PRODUCTION_COLUM.put("finished","delivery");
         ASSETS_PRODUCTION_COLUM.put("type","productionType");
 
+        //财务开票字段
+        FINANCE_CLAIM_COLUM.put("companyName","title");
+        FINANCE_CLAIM_COLUM.put("companyNO","taxNo");
+        FINANCE_CLAIM_COLUM.put("bankName","bankName");
+        FINANCE_CLAIM_COLUM.put("bankNO","bankAccount");
+        FINANCE_CLAIM_COLUM.put("address","bankAddress");
+        FINANCE_CLAIM_COLUM.put("invoiceType","type");
+        FINANCE_CLAIM_COLUM.put("project","makeItem");
+        FINANCE_CLAIM_COLUM.put("planMoney","planAmount");
+        FINANCE_CLAIM_COLUM.put("realMoney","realAmount");
+        FINANCE_CLAIM_COLUM.put("taxPoint","taxRate");
+        FINANCE_CLAIM_COLUM.put("planDate","planMakeDate");
+        FINANCE_CLAIM_COLUM.put("realDate","realMakeDate");
+        FINANCE_CLAIM_COLUM.put("unit","itemUnit");
+        FINANCE_CLAIM_COLUM.put("number","itemQuantity");
+        FINANCE_CLAIM_COLUM.put("taxAmount","taxAmount");
+        FINANCE_CLAIM_COLUM.put("status","state");
+        FINANCE_CLAIM_COLUM.put("reason","reason");
+        FINANCE_CLAIM_COLUM.put("description","remark");
+        FINANCE_CLAIM_COLUM.put("invoiceEmp","makerId");
     }
 
 
@@ -564,6 +586,16 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     @DSTransactional
     @Override
+    public void fetchFinanceInvoiceRecord(){
+        Date max = dyoaRecordService.getMaxFinanceInvoiceCreatedTime();
+        List<String> newInvoice = dyoaHistoryMapper.getNewFinanceInvoice(max);
+        newInvoice.stream().forEach(x-> {
+            //todo
+        });
+    }
+
+    @DSTransactional
+    @Override
     public void fetchAssetsOrderProduction() {
         List<String> assetsOrderIds = dyoaHistoryMapper.selectDyoaAssetsOrderIds();
         assetsOrderIds.stream().forEach(x->{

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

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

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

@@ -39,4 +39,6 @@ public interface IDictDataService extends IService<DictData> {
     List<PullDownModel> simpleType(String type);
 
         List<DictData> byCode(String code);
+
+        DictData findByDataTypeAndRemark(String dataType, String remark);
 }

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

@@ -34,5 +34,7 @@ public interface IDyoaRecordService extends IService<DyoaRecord> {
         Date getMaxClaimDate();
 
         List<DyoaRecord> selectOrderFundIdByDyoaOrderId();
+
+    Date getMaxFinanceInvoiceCreatedTime();
 }
 

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

@@ -63,5 +63,7 @@ public interface IPersonalService extends IService<Personal> {
 
     Long nextInwardStaff();
 
+    Long fixationPriceStaff(Long outwardStaffId);
+
     void fixationInwardStaff(Long personalId);
 }

+ 8 - 0
service/src/main/java/com/dayou/service/impl/DictDataServiceImpl.java

@@ -46,6 +46,9 @@ public class DictDataServiceImpl extends ServiceImpl<DictDataMapper, DictData> i
     @Autowired
     private IDictTypeService dictTypeService;
 
+    @Autowired
+    private DictDataMapper dictDataMapper;
+
     static{
             dictDataExcelTitles.add("字典排序");
             dictDataExcelTitles.add("字典值");
@@ -148,4 +151,9 @@ public class DictDataServiceImpl extends ServiceImpl<DictDataMapper, DictData> i
         return  this.list(lambdaQueryWrapper);
     }
 
+    @Override
+    public DictData findByDataTypeAndRemark(String dataType, String remark) {
+        return dictDataMapper.findByDataTypeAndName(dataType,remark);
+    }
+
 }

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

@@ -82,4 +82,9 @@ public class DyoaRecordServiceImpl extends ServiceImpl<DyoaRecordMapper, DyoaRec
         return dyoaRecordMapper.selectOrderFundIdByDyoaOrderId();
     }
 
+    @Override
+    public Date getMaxFinanceInvoiceCreatedTime() {
+        return dyoaRecordMapper.getMaxFinanceInvoiceCreatedTime();
+    }
+
 }

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

@@ -10,8 +10,6 @@ import com.dayou.dto.*;
 import com.dayou.entity.*;
 import com.dayou.enums.CertificateEnum;
 import com.dayou.enums.GlobalConfigEnum;
-import com.dayou.enums.workflow.HandlerPermissionEnum;
-import com.dayou.enums.workflow.WorkflowNodeEnum;
 import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.*;
 import com.dayou.service.*;
@@ -37,6 +35,7 @@ import java.util.stream.Collectors;
 
 import org.springframework.transaction.annotation.Transactional;
 
+import static com.dayou.common.Constants.OUTWARD_TO_PRICE;
 import static com.dayou.common.Constants.PERSONAL_INWARD;
 import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
 import static com.dayou.enums.workflow.NodeLogEnum.PASS;
@@ -96,11 +95,6 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
     @Autowired
     private OrderFundMapper orderFundMapper;
 
-    @Autowired
-    private IWorkNodeTaskService workNodeTaskService;
-
-    @Autowired
-    private IWorkNodeService workNodeService;
 
     @Autowired
     private IBusinessProductionService businessProductionService;
@@ -108,6 +102,9 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
     @Autowired
     private PersonalNodeHandler personalNodeHandler;
 
+    @Autowired
+    private IDictDataService dictDataService;
+
 
     @Override
     @SuppressWarnings("unchecked")
@@ -130,7 +127,8 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
         //下单时暂不确定内业人员,客户经理报价反馈后再确定。否则会有内业轮空。
         //personal.setInwardStaff(nextInwardStaff());
         //确定定价内业人员
-        personal.setPricingStaff(aimPriceStaff());
+        //下单时暂不确定定价内业,需要分单完成,由外业人员确定定价内业
+        //personal.setPricingStaff(aimPriceStaff());
         this.save(personal);
         //创建估价对象
         PersonalTarget pt = new PersonalTarget();
@@ -159,7 +157,12 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
     @Override
     public Boolean allotOutwardStaff(TaskRecordDTO<Personal> taskRecordDTO) {
         Personal personal = taskRecordDTO.getTaskData();
-        return this.update(new LambdaUpdateWrapper<Personal>().set(Personal::getOutwardStaff,personal.getOutwardStaff()).eq(BaseEntity::getId,personal.getId()));
+        Long outwardStaff = personal.getOutwardStaff();
+        Long priceStaffId = this.fixationPriceStaff(outwardStaff);
+        return this.update(new LambdaUpdateWrapper<Personal>()
+                .set(Personal::getOutwardStaff, outwardStaff)
+                .set(Personal::getPricingStaff,priceStaffId)
+                .eq(BaseEntity::getId,personal.getId()));
     }
 
     @Override
@@ -308,21 +311,18 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
     }
 
     /**
-     * 确定定价内业
+     * 由外业人员确定定价内业
      * @return
      */
-    private Long aimPriceStaff(){
-        WorkNode workNode = workNodeService.getUniqueNodeByFlowNameAndNodeName(PERSONAL_BUSINESS, WorkflowNodeEnum.DETERMINE_PRICE);
-        if (workNode!=null){
-            WorkNodeTask latestNodeTask = workNodeTaskService.getLatestNodeTask(workNode.getId());
-            if (latestNodeTask!=null){
-                if (StrUtil.isNotBlank(latestNodeTask.getHandlerPermission())){
-                    HandlerPermissionDTO permission = JSON.parseObject(latestNodeTask.getHandlerPermission(), HandlerPermissionDTO.class);
-                    if (permission.getName().equals(HandlerPermissionEnum.EMPLOYEE)){
-                        return permission.getPowerId();
-                    }
-                }
+    @Override
+    public Long fixationPriceStaff(Long outwardStaffId){
+        try {
+            if (outwardStaffId != null){
+                DictData dictData = dictDataService.findByDataTypeAndRemark(OUTWARD_TO_PRICE, String.valueOf(outwardStaffId));
+                return Long.valueOf(dictData.getName());
             }
+        } catch (NumberFormatException e) {
+            throw new RuntimeException(e);
         }
         return null;
     }
@@ -386,8 +386,10 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
             List<Long> instanceIds = orders.stream().map(PersonalVO::getCurrentNodeId).collect(Collectors.toList());
 
             batchCheckNodeState(instanceIds);
-            //更新订单业务表的外业人员
-            personalMapper.batchUpdateOutWardStaffId(userId,orderIds);
+            //确定定价内业
+            Long priceStaffId = this.fixationPriceStaff(userId);
+            //更新订单业务表的外业人员内业定价人员
+            personalMapper.batchUpdateOutWardStaffId(userId,priceStaffId,orderIds);
             //任务状态更新为已完成
             workTaskRecordMapper.batchFinishTaskByInstanceId(instanceIds);
             orders.stream().forEach(x->{