|
@@ -44,8 +44,7 @@ import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.dayou.common.Constants.*;
|
|
|
-import static com.dayou.enums.MainBusinessEnum.MAJOR_BUSINESS;
|
|
|
-import static com.dayou.enums.MainBusinessEnum.MAJOR_ORDER;
|
|
|
+import static com.dayou.enums.MainBusinessEnum.*;
|
|
|
|
|
|
@DS("dyoa")
|
|
|
@Service
|
|
@@ -71,6 +70,10 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
|
|
|
private static final Map<String,String> MAJOR_PRODUCTION_COLUM = new HashMap<>();
|
|
|
|
|
|
+ private static final Map<String,String> PERSONAL_ORDER_COLUM = new HashMap<>();
|
|
|
+
|
|
|
+ private static final Map<String,String> REAL_AMOUNT_COLUM = new HashMap<>();
|
|
|
+
|
|
|
|
|
|
@Autowired
|
|
|
private IUserService userService;
|
|
@@ -85,13 +88,14 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
private IDyoaRecordService dyoaRecordService;
|
|
|
|
|
|
@Autowired
|
|
|
+ private IFinanceRealFundService financeRealFundService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private IOrderFundService orderFundService;
|
|
|
|
|
|
@Autowired
|
|
|
private IProductionFundService productionFundService;
|
|
|
|
|
|
-
|
|
|
-
|
|
|
@Autowired
|
|
|
private IMajorService majorServiceImpl;
|
|
|
|
|
@@ -99,6 +103,14 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
@Autowired
|
|
|
private IMajorProductionService majorProductionService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IPersonalService personalService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ICustomerCompanyService customerCompanyService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ICustomerLinkmanService customerLinkmanService;
|
|
|
static {
|
|
|
// MAJOR_ORDER_COLUM.put("id","id");
|
|
|
MAJOR_ORDER_COLUM.put("name","name");
|
|
@@ -134,6 +146,10 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
MAJOR_ORDER_COLUM.put("terminalType","terminalClienteleType");
|
|
|
MAJOR_ORDER_COLUM.put("members","members");
|
|
|
MAJOR_ORDER_COLUM.put("description","remark");
|
|
|
+ MAJOR_ORDER_COLUM.put("customerName","clienteleId");
|
|
|
+ MAJOR_ORDER_COLUM.put("customerName2","clienteleSubId");
|
|
|
+ MAJOR_ORDER_COLUM.put("terminalName","terminalClienteleId");
|
|
|
+ MAJOR_ORDER_COLUM.put("terminalContactName","terminalClienteleContactId");
|
|
|
|
|
|
//大中型产品字段
|
|
|
MAJOR_PRODUCTION_COLUM.put("pType","production");
|
|
@@ -160,6 +176,45 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
MAJOR_PRODUCTION_COLUM.put("deliveryState","delivery");
|
|
|
MAJOR_PRODUCTION_COLUM.put("printQuantity","printTimes");
|
|
|
|
|
|
+ //个贷订单字段
|
|
|
+ PERSONAL_ORDER_COLUM.put("orderNo","orderId");
|
|
|
+ PERSONAL_ORDER_COLUM.put("locations","location");
|
|
|
+ PERSONAL_ORDER_COLUM.put("target","evaluateAim");
|
|
|
+ PERSONAL_ORDER_COLUM.put("purpose","purpose");
|
|
|
+ PERSONAL_ORDER_COLUM.put("loanMaxMoney","loanLimit");
|
|
|
+ PERSONAL_ORDER_COLUM.put("loanMaxYear","loanPeriod");
|
|
|
+ PERSONAL_ORDER_COLUM.put("masterName","clientManagerId");
|
|
|
+ PERSONAL_ORDER_COLUM.put("principal1","bailorA");
|
|
|
+ PERSONAL_ORDER_COLUM.put("principal1Mobile","bailoraTel");
|
|
|
+ PERSONAL_ORDER_COLUM.put("principal2","bailorB");
|
|
|
+ PERSONAL_ORDER_COLUM.put("principal2Mobile","bailorbTel");
|
|
|
+ PERSONAL_ORDER_COLUM.put("description","remark");
|
|
|
+ PERSONAL_ORDER_COLUM.put("outerEmpName","outwardStaff");
|
|
|
+ PERSONAL_ORDER_COLUM.put("productEmpName","inwardStaff");
|
|
|
+ PERSONAL_ORDER_COLUM.put("priceEmpName","pricingStaff");
|
|
|
+ PERSONAL_ORDER_COLUM.put("agent","agent");
|
|
|
+ PERSONAL_ORDER_COLUM.put("loanProperty","loanNature");
|
|
|
+ PERSONAL_ORDER_COLUM.put("loanUsage","loanAim");
|
|
|
+ PERSONAL_ORDER_COLUM.put("loanExpired","loanExpire");
|
|
|
+ PERSONAL_ORDER_COLUM.put("customerType","clienteleType");
|
|
|
+ PERSONAL_ORDER_COLUM.put("customerName","clienteleId");
|
|
|
+ PERSONAL_ORDER_COLUM.put("customerName2","clienteleSubId");
|
|
|
+ PERSONAL_ORDER_COLUM.put("terminalType","terminalClienteleType");
|
|
|
+ PERSONAL_ORDER_COLUM.put("terminalName","terminalClienteleId");
|
|
|
+ PERSONAL_ORDER_COLUM.put("terminalContactName","terminalClienteleContactId");
|
|
|
+ PERSONAL_ORDER_COLUM.put("finished","ifSaveFile");
|
|
|
+ PERSONAL_ORDER_COLUM.put("finishTime","saveFileDate");
|
|
|
+ PERSONAL_ORDER_COLUM.put("files","credentials");
|
|
|
+
|
|
|
+ //实收款字段
|
|
|
+ REAL_AMOUNT_COLUM.put("incomeTime","payDatetime");
|
|
|
+ REAL_AMOUNT_COLUM.put("companyName","payer");
|
|
|
+ REAL_AMOUNT_COLUM.put("bankName","payerBank");
|
|
|
+ REAL_AMOUNT_COLUM.put("bankNo","payerAccount");
|
|
|
+ REAL_AMOUNT_COLUM.put("money","amount");
|
|
|
+ REAL_AMOUNT_COLUM.put("description","remark");
|
|
|
+ REAL_AMOUNT_COLUM.put("creatorName","creatorId");
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -281,13 +336,14 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
if (CollectionUtil.isNotEmpty(dataArray)){
|
|
|
List<HisAssetsOrder> hisAssetsOrders = dataArray.toJavaList(HisAssetsOrder.class);
|
|
|
page.setRecords(hisAssetsOrders);
|
|
|
- page.setTotal(Long.parseLong(String.valueOf(data.get("total"))));
|
|
|
+ page.setTotal(Long.valueOf(String.valueOf(data.get("total"))));
|
|
|
}
|
|
|
} catch (JSONException e) {
|
|
|
historySystemLogin();
|
|
|
ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"远程连接超时,请刷新页面。");
|
|
|
} catch (Exception e) {
|
|
|
log.error("远程调用失败.");
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
return page;
|
|
@@ -296,22 +352,171 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
@DSTransactional
|
|
|
@Override
|
|
|
public void fetchDyoaMajorOrderProduction() {
|
|
|
- List<String> dyoaIds = dyoaHistoryMapper.selectDyoaMajorOrderIds();
|
|
|
- dyoaIds.stream().forEach(x->{
|
|
|
+ List<String> majorOrderIds = dyoaHistoryMapper.selectDyoaMajorOrderIds();
|
|
|
+ majorOrderIds.stream().forEach(x->{
|
|
|
fetchAboutMajor(x);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ @DSTransactional
|
|
|
+ @Override
|
|
|
+ public void fetchDyoaPersonalOrder(){
|
|
|
+ Date max = dyoaRecordService.getMaxOrderTime();
|
|
|
+ List<String> personalOrderIds = dyoaHistoryMapper.getNewOrderIds(max);
|
|
|
+ personalOrderIds.stream().forEach(x->{
|
|
|
+ fetchAboutPersonal(x);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void fetchRealAmountClaimData() {
|
|
|
|
|
|
- public Map<String,Object> queryMajorOrder(String majorId){
|
|
|
- Map<String, Object> resultMap = dyoaHistoryMapper.queryMajorOrder(majorId);
|
|
|
- return resultMap;
|
|
|
}
|
|
|
|
|
|
- //多数据源切换,主方法用@DSTransactional注解解决事务失效问题
|
|
|
+ @Override
|
|
|
+ public void fetchRealAmount() {
|
|
|
+ Date max = dyoaRecordService.getMaxRealAmountCreatedTime();
|
|
|
+ List<String> newRealAmount = dyoaHistoryMapper.getNewRealAmount(max);
|
|
|
+ newRealAmount.stream().forEach(x-> {
|
|
|
+ fetchReamAmountDetail(x);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void fetchReamAmountDetail(String id){
|
|
|
+ try{
|
|
|
+ Map<String,Object> resultMap = dyoaHistoryMapper.getRealAmountInfo(id);
|
|
|
+ FinanceRealFund realFund = new FinanceRealFund();
|
|
|
+ Class<FinanceRealFund> fClass = FinanceRealFund.class;
|
|
|
+ String dyoaId = (String) resultMap.get("id");
|
|
|
+ for (Map.Entry<String, String> entry : REAL_AMOUNT_COLUM.entrySet()){
|
|
|
+ Object columValue = resultMap.get(entry.getKey());
|
|
|
+ if (columValue!=null){
|
|
|
+ String mbsColum = entry.getValue();
|
|
|
+ Field field = fClass.getDeclaredField(mbsColum);
|
|
|
+ field.setAccessible(true);
|
|
|
+ switch (mbsColum){
|
|
|
+ case "payDatetime":
|
|
|
+ field.set(realFund,DateUtils.dateToLocalDate((Date) columValue));break;
|
|
|
+ case "creatorId":
|
|
|
+ field.set(realFund,getMbsUserId((String) columValue));break;
|
|
|
+ case "amount":
|
|
|
+ field.set(realFund, BigDecimal.valueOf((Double) columValue));break;
|
|
|
+ default:
|
|
|
+ field.set(realFund,columValue);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Date createdDatetime = (Date) resultMap.get("createdDatetime");
|
|
|
+ realFund.setCreated(createdDatetime);
|
|
|
+ financeRealFundService.save(realFund);
|
|
|
+ //插入同步记录表
|
|
|
+ Long mbsId = realFund.getId();
|
|
|
+ dyoaRecordService.insert(MainBusinessEnum.REAL_AMOUNT, mbsId, dyoaId,createdDatetime);
|
|
|
+
|
|
|
+ }catch (NoSuchFieldException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ private void fetchAboutPersonal(String dyoaId) {
|
|
|
+ Map<String, Object> dyoaPersonalOrder = dyoaHistoryMapper.queryPersonalOrder(dyoaId);
|
|
|
+ try {
|
|
|
+ //1.插入personal表
|
|
|
+ Personal personal = this.doCreatePersonalOrder(dyoaPersonalOrder);
|
|
|
+ //2.创建订单收款记录
|
|
|
+ this.doCreatedOrderFund(personal);
|
|
|
+ } catch (NoSuchFieldException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void doCreatedOrderFund(Personal personal) {
|
|
|
+ //创建订单收款记录
|
|
|
+ OrderFund orderFund = new OrderFund();
|
|
|
+ orderFund.setBusinessId(personal.getId());
|
|
|
+ orderFund.setBusinessType(PERSONAL_BUSINESS.name());
|
|
|
+ orderFund.setOrderId(personal.getOrderId());
|
|
|
+ orderFund.setOrderName(personal.getLocation());
|
|
|
+ orderFundService.save(orderFund);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Personal doCreatePersonalOrder(Map<String, Object> dyoaPersonalOrder) throws NoSuchFieldException, IllegalAccessException {
|
|
|
+ Personal personal = new Personal();
|
|
|
+ Class<Personal> mClass = Personal.class;
|
|
|
+ String dyoaId = (String) dyoaPersonalOrder.get("id");
|
|
|
+ for (Map.Entry<String, String> entry : PERSONAL_ORDER_COLUM.entrySet()){
|
|
|
+ Object columValue = dyoaPersonalOrder.get(entry.getKey());
|
|
|
+ if (columValue!=null){
|
|
|
+ String mbsColum = entry.getValue();
|
|
|
+ Field field = mClass.getDeclaredField(mbsColum);
|
|
|
+ field.setAccessible(true);
|
|
|
+ switch (mbsColum){
|
|
|
+ case "purpose":
|
|
|
+ case "credentials":
|
|
|
+ field.set(personal,toJsonString((String) columValue));break;
|
|
|
+ case "clientManagerId":
|
|
|
+ case "outwardStaff":
|
|
|
+ case "inwardStaff":
|
|
|
+ case "pricingStaff":
|
|
|
+ field.set(personal,getMbsUserId((String) columValue));break;
|
|
|
+ case "loanLimit":
|
|
|
+ field.set(personal, BigDecimal.valueOf((Double) columValue));break;
|
|
|
+ case "loanPeriod":
|
|
|
+ field.set(personal, BigDecimal.valueOf((Integer) columValue));break;
|
|
|
+ case "clienteleSubId":
|
|
|
+ case "clienteleId":
|
|
|
+ case "terminalClienteleId":
|
|
|
+ field.set(personal, getCompanyId((String) columValue));break;
|
|
|
+ case "terminalClienteleContactId":
|
|
|
+ field.set(personal, getCompanyLinkmanId((String) columValue));break;
|
|
|
+ default:
|
|
|
+ field.set(personal,columValue);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Date createdDatetime = (Date) dyoaPersonalOrder.get("createdDatetime");
|
|
|
+ personal.setCreated(createdDatetime);
|
|
|
+ personalService.save(personal);
|
|
|
+ //插入同步记录表
|
|
|
+ Long mbsId = personal.getId();
|
|
|
+ dyoaRecordService.insert(MainBusinessEnum.PERSONAL_ORDER, mbsId, dyoaId,createdDatetime);
|
|
|
+ return personal;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Long getCompanyId(String columValue) {
|
|
|
+ List<CustomerCompany> list = customerCompanyService.list(new LambdaQueryWrapper<CustomerCompany>().eq(CustomerCompany::getName, columValue)
|
|
|
+ .select(BaseEntity::getId));
|
|
|
+ if (CollectionUtil.isNotEmpty(list)){
|
|
|
+ return list.get(0).getId();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
+ private Long getCompanyLinkmanId(String columValue) {
|
|
|
+ List<CustomerLinkman> list = customerLinkmanService.list(new LambdaQueryWrapper<CustomerLinkman>().eq(CustomerLinkman::getName, columValue)
|
|
|
+ .select(BaseEntity::getId));
|
|
|
+ if (CollectionUtil.isNotEmpty(list)){
|
|
|
+ return list.get(0).getId();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String toJsonString(String columValue) {
|
|
|
+ List<String> list = Arrays.asList(columValue.split(","));
|
|
|
+ return JSON.toJSONString(list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //多数据源切换,主方法用@DSTransactional注解解决事务失效问题
|
|
|
@Override
|
|
|
- public Boolean fetchAboutMajor(String id) {
|
|
|
+ public void fetchAboutMajor(String id) {
|
|
|
try {
|
|
|
//1. 获取订单信息,插入major表。
|
|
|
Map<String, Object> dyoaMajorOrder = dyoaHistoryMapper.queryMajorOrder(id);
|
|
@@ -319,7 +524,6 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
//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) {
|
|
@@ -463,6 +667,12 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
field.set(major, BigDecimal.valueOf((Double) columValue));break;
|
|
|
case "members":
|
|
|
field.set(major,getMbsUserIds((String) columValue));break;
|
|
|
+ case "clienteleSubId":
|
|
|
+ case "clienteleId":
|
|
|
+ case "terminalClienteleId":
|
|
|
+ field.set(major, getCompanyId((String) columValue));break;
|
|
|
+ case "terminalClienteleContactId":
|
|
|
+ field.set(major, getCompanyLinkmanId((String) columValue));break;
|
|
|
default:
|
|
|
field.set(major,columValue);
|
|
|
}
|
|
@@ -473,8 +683,7 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
|
|
|
majorServiceImpl.save(major);
|
|
|
//插入同步记录表
|
|
|
Long mbsId = major.getId();
|
|
|
-
|
|
|
- dyoaRecordService.insert(MainBusinessEnum.MAJOR_ORDER, mbsId, dyoaId);
|
|
|
+ dyoaRecordService.insert(MainBusinessEnum.MAJOR_ORDER, mbsId, dyoaId,null);
|
|
|
return mbsId;
|
|
|
|
|
|
}
|