diff --git a/chushang-common/chushang-common-core/src/main/java/com/chushang/common/core/constant/ServiceConstant.java b/chushang-common/chushang-common-core/src/main/java/com/chushang/common/core/constant/ServiceConstant.java
index 1e9302e..324aec2 100644
--- a/chushang-common/chushang-common-core/src/main/java/com/chushang/common/core/constant/ServiceConstant.java
+++ b/chushang-common/chushang-common-core/src/main/java/com/chushang/common/core/constant/ServiceConstant.java
@@ -23,7 +23,7 @@ public interface ServiceConstant {
* 工单 相关
* 项目-工单
*/
- String INSPECTION = "inspection-service";
+ String INSPECTION = "inspection-service-2";
/**
* 工单模块消费者组
@@ -49,7 +49,7 @@ public interface ServiceConstant {
/**
* 后台任务
*/
- String TASK = "task-service";
+ String TASK = "task-service-1";
/**
* 后台任务模块消费者组
*/
diff --git a/chushang-common/chushang-common-security/src/main/java/com/chushang/security/entity/po/SysDept.java b/chushang-common/chushang-common-security/src/main/java/com/chushang/security/entity/po/SysDept.java
index 1f9a32f..a2d6acd 100644
--- a/chushang-common/chushang-common-security/src/main/java/com/chushang/security/entity/po/SysDept.java
+++ b/chushang-common/chushang-common-security/src/main/java/com/chushang/security/entity/po/SysDept.java
@@ -47,6 +47,12 @@ public class SysDept extends BaseEntity
/** 部门状态:0停用,1正常 */
private Boolean status;
+ private String email;
+
+ private String leader;
+
+ private String phone;
+
/** 父部门名称 */
@TableField(exist = false)
private String parentName;
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/po/Store.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/po/Store.java
index 7ed0f5a..f323240 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/po/Store.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/po/Store.java
@@ -11,6 +11,7 @@ import java.time.LocalDateTime;
import com.chushang.inspection.terminal.enums.MerTypeOperation;
import com.chushang.inspection.work.dto.WrkIcbcJsReceive;
import com.chushang.inspection.work.enums.BankBranchesEnum;
+import com.chushang.inspection.work.po.WrkIcbcJs;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -176,16 +177,30 @@ public class Store extends BaseEntity {
this.storePhone = dto.getContactWay();
this.storeAddress = dto.getMerAddress();
this.storeType = MerTypeOperation.valueOfCode(dto.getMerType());
- // todo 所属 任务id
- this.taskId = 1L;
- // todo 所属部门id
- this.deptId = 1L;
+ this.taskId = 1701151817643495425L;
+ this.deptId = 218L;
this.createBy = "zhuguihua";
this.isEnter = 2;
Long lowerTaskId = BankBranchesEnum.getByCode(dto.getArea());
this.lowerTaskId = lowerTaskId == null ? this.taskId : lowerTaskId;
- // todo 此处需要获取对应的项目id
this.projectId = BankBranchesEnum.getProjectByCode(dto.getArea());
return this;
}
+
+ public Store saveJcIcbc(WrkIcbcJs w) {
+ this.storeNo = w.getMerId();
+ this.storeName = w.getMerName();
+ this.storeContact = w.getLinkName();
+ this.storePhone = w.getContactWay();
+ this.storeAddress = w.getMerAddress();
+ this.storeType = MerTypeOperation.valueOfCode(w.getMerType());
+ this.taskId = 1701151817643495425L;
+ this.deptId = 218L;
+ this.createBy = "zhuguihua";
+ this.isEnter = 2;
+ Long lowerTaskId = BankBranchesEnum.getByCode(w.getArea());
+ this.lowerTaskId = lowerTaskId == null ? this.taskId : lowerTaskId;
+ this.projectId = BankBranchesEnum.getProjectByCode(w.getArea());
+ return this;
+ }
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/po/Terminal.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/po/Terminal.java
index 78b16df..57da534 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/po/Terminal.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/po/Terminal.java
@@ -8,6 +8,7 @@ import com.chushang.common.mybatis.base.BaseEntity;
import com.chushang.inspection.work.dto.WrkIcbcJsReceive;
import com.chushang.inspection.work.enums.TerminalTypeOperation;
+import com.chushang.inspection.work.po.WrkIcbcJs;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -146,4 +147,20 @@ public class Terminal extends BaseEntity {
this.projectId = store.getProjectId();
return this;
}
+
+ public Terminal save(Store store, WrkIcbcJs w) {
+ this.storeId = store.getStoreId();
+ this.storeNo = store.getStoreNo();
+ this.taskId = store.getTaskId();
+ this.lowerTaskId = store.getLowerTaskId();
+ this.deptId = store.getDeptId();
+ this.createBy = store.getCreateBy();
+ this.terminalNo = w.getTermId();
+ this.terminalSn = w.getDeviceNo();
+ this.terminalType = TerminalTypeOperation.valueOfCode(w.getDeviceType());
+ this.remark = w.getNoteMsg();
+ this.occupy = 0;
+ this.projectId = store.getProjectId();
+ return this;
+ }
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/enums/BankBranchesEnum.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/enums/BankBranchesEnum.java
index b563f1c..563c7f5 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/enums/BankBranchesEnum.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/enums/BankBranchesEnum.java
@@ -10,19 +10,19 @@ import lombok.Getter;
@AllArgsConstructor
public enum BankBranchesEnum {
- NANJING_BRANCH("4301", 82582240034336768L, 1L),
- SUZHOU_BRANCH("1102", 75464095280726016L, 1L),
- WUXI_BRANCH("1103", 1712316534449692673L, 1L),
- ZHENJIANG_BRANCH("1104", 130057876893859840L, 1L),
- CHANGZHOU_BRANCH("1105", 130058354490892288L, 1L),
- XUZHOU_BRANCH("1106", 130058663179059200L, 1L),
- LIANYUNGANG_BRANCH("1107", 104793956746788864L, 1L),
- YANGZHOU_BRANCH("1108", 130041300719325184L, 1L),
- YANCheng_BRANCH("1109", 130058775791927296L, 1L),
- HUAIAN_BRANCH("1110", 130058895585443840L, 1L),
- NANTONG_BRANCH("1111", 130058943010463744L, 1L),
- TAIZHOU_BRANCH("1115", 1706151311862829058L, 1L),
- SUQIAN_BRANCH("1116", 130059053442293760L, 1L);
+ NANJING_BRANCH("4301", 82582240034336768L, 1818103750965534722L),
+ SUZHOU_BRANCH("1102", 75464095280726016L, 1818103750965534722L),
+ WUXI_BRANCH("1103", 1712316534449692673L, 1818103750965534722L),
+ ZHENJIANG_BRANCH("1104", 130057876893859840L, 1818103750965534722L),
+ CHANGZHOU_BRANCH("1105", 130058354490892288L, 1818103750965534722L),
+ XUZHOU_BRANCH("1106", 130058663179059200L, 1818103750965534722L),
+ LIANYUNGANG_BRANCH("1107", 104793956746788864L, 1818103750965534722L),
+ YANGZHOU_BRANCH("1108", 130041300719325184L, 1818103750965534722L),
+ YANCheng_BRANCH("1109", 130058775791927296L, 1818103750965534722L),
+ HUAIAN_BRANCH("1110", 130058895585443840L, 1818103750965534722L),
+ NANTONG_BRANCH("1111", 130058943010463744L, 1818103750965534722L),
+ TAIZHOU_BRANCH("1115", 1706151311862829058L, 1818103750965534722L),
+ SUQIAN_BRANCH("1116", 130059053442293760L, 1818103750965534722L);
private final String code;
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkDispatchRecord.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkDispatchRecord.java
index 8d59247..b840210 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkDispatchRecord.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkDispatchRecord.java
@@ -84,7 +84,7 @@ public class WrkDispatchRecord extends BaseEntity {
private String userName;
@TableField(value = "work_no")
- private Long workNo;
+ private String workNo;
@TableField(value = "terminal_source")
private Integer terminalSource;
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkInfo.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkInfo.java
index 69dff2c..257c9e4 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkInfo.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkInfo.java
@@ -72,7 +72,7 @@ public class WrkInfo extends BaseEntity {
* 工单编号
*/
@TableField(value = "work_no")
- private Long workNo;
+ private String workNo;
/**
* 工单类型
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/pom.xml b/chushang-modules/chushang-module-inspection/inspection-service/pom.xml
index 5853762..3af04be 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/pom.xml
+++ b/chushang-modules/chushang-module-inspection/inspection-service/pom.xml
@@ -29,6 +29,10 @@
com.chushang
system-feign
+
+ org.mariadb.jdbc
+ mariadb-java-client
+
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/StoreService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/StoreService.java
index c114e3d..6756353 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/StoreService.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/StoreService.java
@@ -7,6 +7,7 @@ import com.chushang.inspection.project.vo.CountVO;
import com.chushang.inspection.terminal.po.Store;
import com.chushang.inspection.terminal.query.StoreQuery;
import com.chushang.inspection.work.dto.WrkIcbcJsReceive;
+import com.chushang.inspection.work.po.WrkIcbcJs;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -39,4 +40,6 @@ public interface StoreService extends IService{
}
return Map.of();
}
+
+ Store saveJcIcbc(WrkIcbcJs w);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/TerminalService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/TerminalService.java
index 70b6f14..71c1434 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/TerminalService.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/TerminalService.java
@@ -12,6 +12,7 @@ import com.chushang.inspection.terminal.query.TerminalAppQuery;
import com.chushang.inspection.terminal.query.TerminalQuery;
import com.chushang.inspection.work.dto.DispatchDTO;
import com.chushang.inspection.work.dto.WrkIcbcJsReceive;
+import com.chushang.inspection.work.po.WrkIcbcJs;
import com.chushang.inspection.work.query.DispatchQuery;
import java.util.Collection;
@@ -88,4 +89,6 @@ public interface TerminalService extends IService{
}
return Map.of();
}
+
+ JSONObject save(Store store, WrkIcbcJs w);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/StoreServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/StoreServiceImpl.java
index 9b094a3..acbac8c 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/StoreServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/StoreServiceImpl.java
@@ -1,6 +1,7 @@
package com.chushang.inspection.terminal.service.impl;
import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.csp.sentinel.util.StringUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chushang.common.core.constant.SecurityConstants;
@@ -13,6 +14,7 @@ import com.chushang.inspection.terminal.query.StoreQuery;
import com.chushang.inspection.terminal.service.StoreService;
import com.chushang.inspection.terminal.vo.StoreVO;
import com.chushang.inspection.work.dto.WrkIcbcJsReceive;
+import com.chushang.inspection.work.po.WrkIcbcJs;
import com.chushang.system.feign.RemoteDeptService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -63,14 +65,33 @@ public class StoreServiceImpl extends ServiceImpl implements
*/
@Override
public Store saveJcIcbc(WrkIcbcJsReceive dto) {
- Store store = getOne(new LambdaQueryWrapper()
- .eq(Store::getTaskId, "")
+ List stores = list(new LambdaQueryWrapper()
+ .eq(Store::getTaskId, 1701151817643495425L)
.eq(Store::getStoreNo, dto.getMerId())
);
- if (store == null) {
+ Store store;
+ if (CollectionUtil.isEmpty(stores)){
store = new Store().saveJcIcbc(dto);
save(store);
}
+ // 如果不为空, 不需要重新创建一条数据
+ else {
+ store = stores.stream()
+ .filter(s -> StringUtil.isNotEmpty(s.getStoreAddress())
+ && s.getStoreAddress().equals(dto.getMerAddress()))
+ .collect(Collectors.toSet()).stream().findFirst().orElse(null);
+ if (store != null){
+ store = new Store().saveJcIcbc(dto);
+ save(store);
+ }
+ // 判断两个地址是否相同, 不同的话, 重新入库一条商户id
+// String storeAddress = store.getStoreAddress();
+// String merAddress = dto.getMerAddress();
+// if (StringUtil.isNotEmpty(storeAddress) && StringUtil.isNotEmpty(merAddress) &&
+// storeAddress.equals(merAddress)){
+//
+// }
+ }
return store;
}
@@ -79,4 +100,35 @@ public class StoreServiceImpl extends ServiceImpl implements
return baseMapper.countByProjectIds(projectIds);
}
+ @Override
+ public Store saveJcIcbc(WrkIcbcJs w) {
+ List stores = list(new LambdaQueryWrapper()
+ .eq(Store::getTaskId, 1701151817643495425L)
+ .eq(Store::getStoreNo, w.getMerId())
+ );
+ Store store;
+ if (CollectionUtil.isEmpty(stores)){
+ store = new Store().saveJcIcbc(w);
+ save(store);
+ }
+ // 如果不为空, 不需要重新创建一条数据
+ else {
+ store = stores.stream()
+ .filter(s -> s.getStoreAddress().equals(w.getMerAddress()))
+ .collect(Collectors.toSet()).stream().findFirst().orElse(null);
+ if (store == null){
+ store = new Store().saveJcIcbc(w);
+ save(store);
+ }
+ // 判断两个地址是否相同, 不同的话, 重新入库一条商户id
+// String storeAddress = store.getStoreAddress();
+// String merAddress = dto.getMerAddress();
+// if (StringUtil.isNotEmpty(storeAddress) && StringUtil.isNotEmpty(merAddress) &&
+// storeAddress.equals(merAddress)){
+//
+// }
+ }
+ return store;
+ }
+
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/TerminalServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/TerminalServiceImpl.java
index ba9c482..7f82326 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/TerminalServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/TerminalServiceImpl.java
@@ -37,6 +37,7 @@ import com.chushang.inspection.utils.TaskConfigUtils;
import com.chushang.inspection.work.dto.DispatchDTO;
import com.chushang.inspection.work.dto.WrkIcbcJsReceive;
import com.chushang.inspection.work.po.WrkDispatchRecord;
+import com.chushang.inspection.work.po.WrkIcbcJs;
import com.chushang.inspection.work.po.WrkInfo;
import com.chushang.inspection.work.query.DispatchQuery;
import com.chushang.system.feign.RemoteDeptService;
@@ -168,6 +169,28 @@ public class TerminalServiceImpl extends ServiceImpl i
return baseMapper.countByProjectIds(projectIds);
}
+ @Override
+ public JSONObject save(Store store, WrkIcbcJs w) {
+ Terminal terminal = getOne(new LambdaQueryWrapper()
+ .eq(Terminal::getStoreId, store.getStoreId())
+ .eq(Terminal::getTerminalNo, w.getTermId())
+ );
+ TerminalIns terminalIns;
+ if (terminal == null){
+ terminal = new Terminal().save(store, w);
+ save(terminal);
+ terminalIns = new TerminalIns();
+ terminalIns.setTerminalId(terminal.getTerminalId());
+ terminalIns.setIsEnter(2);
+ terminalIns.setCreateBy(store.getCreateBy());
+ terminalInsService.save(terminalIns);
+ return JSONObject.of("terminal", terminal, "terminalIns", terminalIns);
+ }else {
+ terminalIns = terminalInsService.getById(terminal.getTerminalId());
+ }
+ return JSONObject.of("terminal", terminal, "terminalIns", terminalIns);
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
public long updateTerminalAndStore(TerminalQuery query) {
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkIcbcJsService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkIcbcJsService.java
index e6b19c4..188e9a4 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkIcbcJsService.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkIcbcJsService.java
@@ -26,4 +26,5 @@ public interface WrkIcbcJsService extends IService {
void manualPush(Long id);
void push(WrkInfoDetailsVO infoDetail);
+
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkIcbcJsServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkIcbcJsServiceImpl.java
index 7cdbe25..5da9236 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkIcbcJsServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkIcbcJsServiceImpl.java
@@ -44,8 +44,10 @@ import com.chushang.inspection.work.vo.WrkInfoDetailsVO;
import com.chushang.inspection.work.vo.WrkInfoVO;
import com.chushang.security.entity.po.SysUser;
import com.chushang.system.feign.RemoteUserService;
+import com.mysql.cj.jdbc.JdbcConnection;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chushang.inspection.work.mapper.WrkIcbcJsMapper;
@@ -189,7 +191,7 @@ public class WrkIcbcJsServiceImpl extends ServiceImpl impl
wrkInfo.setAccountPhone(store.getAccountPhone());
wrkInfo.setAccountManager(store.getAccountManager());
wrkInfo.setUserName(userInfoData.getNickName());
- wrkInfo.setWorkNo(IdUtil.getSnowflake().nextId());
+ wrkInfo.setWorkNo(String.valueOf(IdUtil.getSnowflake().nextId()));
wrkInfo.setWorkType(query.getWorkType());
wrkInfo.setWorkMethod(method);
wrkInfo.setWorkSort(query.getWorkSort());
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/GenInsTest.java b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/GenInsTest.java
index e54903a..e7ea70a 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/GenInsTest.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/GenInsTest.java
@@ -46,7 +46,7 @@ public class GenInsTest {
wrkInfo.setTaskId(200L);
wrkInfo.setUserId(1L);
wrkInfo.setUserName("admin");
- wrkInfo.setWorkNo(IdUtil.getSnowflakeNextId());
+ wrkInfo.setWorkNo(String.valueOf(IdUtil.getSnowflakeNextId()));
wrkInfo.setWorkSort(1);
// wrkInfo.setWrkId(1814239505998278658L);
wrkInfoService.save(wrkInfo);
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/JsIcbcTest.java b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/JsIcbcTest.java
new file mode 100644
index 0000000..710b797
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/JsIcbcTest.java
@@ -0,0 +1,310 @@
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson2.JSONObject;
+import com.chushang.InspectionApplication;
+import com.chushang.inspection.terminal.po.Store;
+import com.chushang.inspection.terminal.po.Terminal;
+import com.chushang.inspection.terminal.po.TerminalIns;
+import com.chushang.inspection.terminal.service.StoreService;
+import com.chushang.inspection.terminal.service.TerminalInsService;
+import com.chushang.inspection.terminal.service.TerminalService;
+import com.chushang.inspection.work.po.*;
+import com.chushang.inspection.work.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import po.Column;
+import po.WrkInfoEntity;
+
+import javax.annotation.Resource;
+import java.lang.reflect.Field;
+import java.sql.*;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+@Slf4j
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = InspectionApplication.class)
+public class JsIcbcTest {
+ @Resource
+ private WrkIcbcJsService wrkIcbcJsService;
+ @Resource
+ TerminalService terminalService;
+ @Resource
+ StoreService storeService;
+ @Resource
+ TerminalInsService terminalInsService;
+
+ @Resource
+ WrkInfoService wrkInfoService;
+ @Resource
+ WrkInfoStoreRecordService storeRecordService;
+ @Resource
+ WrkInfoTerminalRecordService terminalRecordService;
+ @Resource
+ WrkInfoTerminalInsRecordService terminalInsRecordService;
+
+ private WrkIcbcJs update(WrkIcbcJs w, JSONObject terJson, Store store) {
+ Terminal terminal = terJson.getObject("terminal", Terminal.class);
+ // 江苏工行实体类信息
+ WrkIcbcJs wrkIcbcJs = new WrkIcbcJs();
+ wrkIcbcJs.setStoreId(store.getStoreId());
+ wrkIcbcJs.setTerminalId(terminal.getTerminalId());
+ wrkIcbcJs.setId(w.getId());
+ wrkIcbcJsService.updateById(wrkIcbcJs);
+ return wrkIcbcJs;
+ }
+
+ @Test
+ public void jsWrkTest() {
+ // JDBC连接URL
+ String url = "jdbc:mariadb://119.97.184.98:3306/work_inspection?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false&autoReconnect=true&failOverReadOnly=false&rewriteBatchedStatements=true";
+ String username = "inspection";
+ String password = "qq630638001";
+ List list = wrkIcbcJsService.list();
+ mergeJsIcbc(list);
+
+ Map wrkInfos = new HashMap<>();
+ Map storeRecords = new HashMap<>();
+ Map terminalRecords = new HashMap<>();
+ Map terminalInsRecords = new HashMap<>();
+ try {
+ // 创建数据库连接
+ Connection conn = DriverManager.getConnection(url, username, password);
+ String collect = list.stream()
+ .filter(w -> null != w.getWrkId()).map(w -> String.valueOf(w.getWrkId()))
+ .collect(Collectors.joining(","));
+
+ Map jsMap = list.stream()
+ .filter(w -> null != w.getWrkId()).collect(Collectors.toMap(
+ WrkIcbcJs::getWrkId,
+ w -> w,
+ (o, n) -> n
+ ));
+
+
+ String selectSql = "SELECT * FROM wrk_info WHERE id in ( " + collect + ")";
+ PreparedStatement pstmt = conn.prepareStatement(selectSql);
+ List wrkInfoEntitys = convertToList(pstmt.executeQuery(), WrkInfoEntity.class);
+ for (WrkInfoEntity wrkInfoEntity : wrkInfoEntitys) {
+ Long wrkId = wrkInfoEntity.getId();
+ if (null == wrkId) continue;
+ WrkIcbcJs wrkIcbcJs = jsMap.get(wrkId);
+ Store store = storeService.getById(wrkIcbcJs.getStoreId());
+ Terminal terminal = terminalService.getById(wrkIcbcJs.getTerminalId());
+ TerminalIns terminalIns = terminalInsService.getById(terminal.getTerminalId());
+ terminal.setTerminalId(wrkIcbcJs.getTerminalId());
+ terminal.setTerminalStatus(wrkInfoEntity.getTerminalStatus());
+ terminal.setOccupy(wrkInfoEntity.getState() == 1 ? 1 : 0);
+ terminal.setTerminalModel(wrkInfoEntity.getTerminalModel());
+ terminal.setTerminalAddress(wrkInfoEntity.getTerminalAddress());
+ terminal.setTerminalSource(wrkInfoEntity.getTerminalSource());
+ terminal.setTerminalVersion(wrkInfoEntity.getTerminalVersion());
+
+ store.setState(wrkInfoEntity.getStoreStatus());
+ store.setInsFre(wrkInfoEntity.getInsFre());
+ store.setSpecialNum(wrkInfoEntity.getSpecialNum());
+ store.setShopName(wrkInfoEntity.getShopName());
+ store.setStoreName(wrkInfoEntity.getName());
+ store.setStoreType(wrkInfoEntity.getType());
+ store.setProducts(wrkInfoEntity.getProducts());
+ store.setAccountManager(wrkInfoEntity.getAccountManager());
+ store.setAccountPhone(wrkInfoEntity.getAccountPhone());
+ store.setRegisterTime(null != wrkInfoEntity.getRegisterTime() ? wrkInfoEntity.getRegisterTime().atStartOfDay() : null);
+ store.setRegisterAddress(wrkInfoEntity.getRegisterAddress());
+
+ terminalIns.setTerminalId(wrkIcbcJs.getTerminalId());
+ terminalIns.setServiceResult(wrkInfoEntity.getServiceResult());
+ terminalIns.setIsEnter(2);
+ terminalIns.setDeviation(wrkInfoEntity.getDeviation());
+ terminalIns.setPreCodeEncoding(wrkInfoEntity.getPrecodeEncoding());
+ terminalIns.setInspectionStatus(1);
+ terminalIns.setInspectionTime(wrkInfoEntity.getDisposeTime());
+ terminalIns.setOperatorId(String.valueOf(wrkInfoEntity.getUserId()));
+ terminalIns.setWorkAddress(wrkInfoEntity.getWorkAdderss());
+ terminalIns.setWorkLocation(wrkInfoEntity.getWorkLocation());
+ terminalIns.setGeographicAddress(wrkInfoEntity.getLocationAddress());
+ terminalIns.setGeographicLocation(wrkInfoEntity.getGeographicLocation());
+
+ updateStoreAndTer(store, terminal, terminalIns);
+
+ WrkInfo wrkInfo = getWrkInfo(wrkInfoEntity);
+ wrkInfo.setProjectId(store.getProjectId());
+ wrkInfo.setDeptId(store.getDeptId());
+
+ WrkInfoStoreRecord wrkInfoStoreRecord = BeanUtil.copyProperties(store, WrkInfoStoreRecord.class);
+ wrkInfoStoreRecord.setWrkId(wrkInfoEntity.getId());
+ wrkInfoStoreRecord.setProjectId(store.getProjectId());
+
+ WrkInfoTerminalRecord wrkInfoTerminalRecord = BeanUtil.copyProperties(terminal, WrkInfoTerminalRecord.class);
+ wrkInfoTerminalRecord.setWrkId(wrkInfo.getWrkId());
+ wrkInfoTerminalRecord.setProjectId(store.getProjectId());
+ WrkInfoTerminalInsRecord wrkInfoTerminalInsRecord = BeanUtil.copyProperties(terminalIns, WrkInfoTerminalInsRecord.class);
+ wrkInfoTerminalInsRecord.setWrkId(wrkInfo.getWrkId());
+
+ saveWrk(wrkInfo, wrkInfoStoreRecord, wrkInfoTerminalRecord, wrkInfoTerminalInsRecord);
+
+ wrkInfos.put(wrkId, wrkInfo);
+ storeRecords.put(wrkId, wrkInfoStoreRecord);
+ terminalRecords.put(wrkId, wrkInfoTerminalRecord);
+ terminalInsRecords.put(wrkId, wrkInfoTerminalInsRecord);
+
+ }
+
+ conn.close();
+ // 关闭连接
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ log.info("wrk {}", wrkInfos.size());
+ log.info("storeRecords {}", storeRecords.size());
+ log.info("terminalRecords {}", terminalRecords.size());
+ log.info("terminalInsRecords {}", terminalInsRecords.size());
+
+
+ }
+
+ public void saveWrk(WrkInfo wrkInfo, WrkInfoStoreRecord wrkInfoStoreRecord, WrkInfoTerminalRecord wrkInfoTerminalRecord, WrkInfoTerminalInsRecord wrkInfoTerminalInsRecord) {
+ wrkInfoService.save(wrkInfo);
+ storeRecordService.save(wrkInfoStoreRecord);
+ terminalRecordService.save(wrkInfoTerminalRecord);
+ terminalInsRecordService.save(wrkInfoTerminalInsRecord);
+ }
+
+ public void mergeJsIcbc(List list) {
+ for (WrkIcbcJs w : list) {
+ Store store = storeService.saveJcIcbc(w);
+ JSONObject save = terminalService.save(store, w);
+ update(w, save, store);
+ }
+ }
+
+ public void updateStoreAndTer(Store store, Terminal terminal, TerminalIns terminalIns) {
+ storeService.updateById(store);
+ terminalService.updateById(terminal);
+ terminalInsService.updateById(terminalIns);
+ }
+
+ public WrkInfo getWrkInfo(WrkInfoEntity wrkInfoEntity) {
+ WrkInfo wrkInfo = new WrkInfo();
+ wrkInfo.setWrkId(wrkInfoEntity.getId());
+ wrkInfo.setWorkNo(wrkInfoEntity.getWorkNo());
+ wrkInfo.setWorkType(wrkInfoEntity.getWorkType());
+ wrkInfo.setWorkSource(wrkInfoEntity.getWorkSource());
+ wrkInfo.setWorkMethod(wrkInfoEntity.getWorkMethod());
+ wrkInfo.setWorkSort(wrkInfoEntity.getWorkSort());
+ wrkInfo.setDisposeTime(wrkInfoEntity.getDisposeTime());
+ wrkInfo.setAccountManager(wrkInfoEntity.getAccountManager());
+ wrkInfo.setAccountPhone(wrkInfoEntity.getAccountPhone());
+ wrkInfo.setServiceResult(wrkInfoEntity.getServiceResult());
+ wrkInfo.setRemark(wrkInfo.getRemark());
+ wrkInfo.setEndTime(wrkInfoEntity.getEndTime());
+ //
+ Integer state = wrkInfoEntity.getState();
+ wrkInfo.setWrkStatus(state == 3 ? 7 : state);
+ wrkInfo.setRegisterTime(wrkInfoEntity.getRegisterTime());
+ wrkInfo.setDisSchedule(wrkInfo.getDisSchedule());
+ wrkInfo.setUserId(wrkInfoEntity.getUserId());
+ wrkInfo.setUserName(wrkInfoEntity.getWorkName());
+ wrkInfo.setTaskId(wrkInfoEntity.getTaskId());
+ wrkInfo.setLowerTaskId(wrkInfoEntity.getLowerTaskId());
+ return wrkInfo;
+ }
+
+ private static final Pattern UNDERLINE_PATTERN = Pattern.compile("_([a-z])");
+
+ /**
+ * 字符串转换为驼峰命名
+ *
+ * @param str
+ * @return
+ */
+ public static String underlineToHump(String str) {
+ //正则匹配下划线及后一个字符,删除下划线并将匹配的字符转成大写
+ Matcher matcher = UNDERLINE_PATTERN.matcher(str);
+ StringBuilder sb = new StringBuilder(str);
+ if (matcher.find()) {
+ sb = new StringBuilder();
+ //将当前匹配的子串替换成指定字符串,并且将替换后的子串及之前到上次匹配的子串之后的字符串添加到StringBuffer对象中
+ //正则之前的字符和被替换的字符
+ matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
+ //把之后的字符串也添加到StringBuffer对象中
+ matcher.appendTail(sb);
+ } else {
+ //去除除字母之外的前面带的下划线
+ return sb.toString().replaceAll("_", "");
+ }
+ return underlineToHump(sb.toString());
+ }
+
+
+ public static T convertToTarget(ResultSet rs, Class clazz) throws SQLException, InstantiationException, IllegalAccessException {
+ //结果集的元素对象
+ ResultSetMetaData rsmd = rs.getMetaData();
+ //获取结果集的元素个数
+ int colCount = rsmd.getColumnCount();
+ //业务对象的属性数组
+ Field[] fields = clazz.getDeclaredFields();
+ T obj = (T) clazz.newInstance();//构造业务对象实体
+ //将每一个字段取出进行赋值
+ for (int i = 1; i <= colCount; i++) {
+ boolean match = false;
+ //寻找该列对应的对象属性
+ for (int j = 0; j < fields.length; j++) {
+ Field field = fields[j];
+ //查看是否有注解,有则根据注解中的名称来匹配
+ if (field.isAnnotationPresent(Column.class)) {
+ Column column = field.getAnnotation(Column.class);
+ if (column.ignore()) {
+ break;
+ }
+ String columnName = column.value();
+ String columnNameOfSql = rsmd.getColumnName(i);
+ if (columnName.equalsIgnoreCase(columnNameOfSql) && columnNameOfSql != null) {
+ match = true;
+ }
+ }
+ //如果匹配进行赋值,匹配时,将数据库的列名称转换为驼峰命名法再比较
+ else if (field.getName().equalsIgnoreCase(underlineToHump(rsmd.getColumnName(i)))) {
+ match = true;
+ }
+ if (match) {
+ boolean flag = field.isAccessible();
+ //通过类型获取属性值
+ Class> type = field.getType();
+ Object value = rs.getObject(i, type);
+ //直接获取会使jdbc将数据库中的int直接转化为Long类型,导致类型赋值错误
+ //Object value = rs.getObject(i);
+ field.setAccessible(true);
+ field.set(obj, value);
+ field.setAccessible(flag);
+ break;
+ }
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * 将rs结果转换成对象列表
+ *
+ * @param rs jdbc结果集
+ * @param clazz 对象的映射类
+ * return 封装了对象的结果列表
+ */
+ public static List convertToList(ResultSet rs, Class clazz) throws SQLException, InstantiationException, IllegalAccessException {
+ //返回结果的列表集合
+ List list = new ArrayList();
+ //对每一条记录进行操作
+ while (rs.next()) {
+ T obj = convertToTarget(rs, clazz);
+ list.add(obj);
+ }
+ return list;
+ }
+
+
+}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/po/Column.java b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/po/Column.java
new file mode 100644
index 0000000..087bb75
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/po/Column.java
@@ -0,0 +1,26 @@
+package po;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author wansheng
+ * @createDate 2023/6/26 16:30
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface Column {
+ /**
+ * 属性对应的数据库列名称
+ * @return
+ */
+ String value();
+
+ /**
+ * 是否忽视该属性的赋值
+ * @return
+ */
+ boolean ignore() default false;
+}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/po/WrkInfoEntity.java b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/po/WrkInfoEntity.java
new file mode 100644
index 0000000..732f03c
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/po/WrkInfoEntity.java
@@ -0,0 +1,334 @@
+package po;
+
+import lombok.*;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 工单信息 实体类。
+ *
+ * @author 单傲
+ * @since v1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class WrkInfoEntity {
+
+ /**
+ * 主键
+ */
+ protected Long id;
+
+ /**
+ * 创建者
+ */
+ @Column("create_by")
+ protected String createBy;
+
+ /**
+ * 更新者
+ */
+ @Column("update_by")
+ protected String updateBy;
+
+ /**
+ * 创建日期
+ */
+ @Column("create_time")
+ protected LocalDateTime createTime;
+
+ /**
+ * 更新时间
+ */
+ @Column("update_time")
+ protected LocalDateTime updateTime;
+
+ /**
+ * 租户id
+ */
+ @Column("tenant_id")
+ private Long tenantId;
+
+ /**
+ * 商户id
+ */
+ @Column("store_id")
+ private Long storeId;
+
+ /**
+ * 终端id
+ */
+ @Column("terminal_id")
+ private Long terminalId;
+
+ /**
+ * 总任务id
+ */
+ @Column("task_id")
+ private Long taskId;
+
+ /**
+ * 本级id
+ */
+ @Column("lower_task_id")
+ private Long lowerTaskId;
+
+ /**
+ * 业务员id
+ */
+ @Column("user_id")
+ private Long userId;
+
+ /**
+ * 业务员名字
+ */
+ @Column("work_name")
+ private String workName;
+
+ /**
+ * 工单编号
+ */
+ @Column("work_no")
+ private String workNo;
+
+ /**
+ * 工单类型
+ */
+ @Column("work_type")
+ private Integer workType;
+
+ /**
+ * 巡检方式
+ */
+ @Column("work_method")
+ private Integer workMethod;
+
+ /**
+ * 工单优先级
+ */
+ @Column("work_sort")
+ private Integer workSort;
+
+ /**
+ * 工单来源
+ */
+ @Column("work_source")
+ private Integer workSource;
+
+ /**
+ * 业务员处理时间
+ */
+ @Column("dispose_time")
+ private LocalDateTime disposeTime;
+
+ /**
+ * 终端状态
+ */
+ @Column("terminal_status")
+ private Integer terminalStatus;
+
+ /**
+ * 服务结果
+ */
+ @Column("service_result")
+ private Integer serviceResult;
+
+ /**
+ * 备注
+ */
+ @Column("remark")
+ private String remark;
+
+ /**
+ * 状态
+ */
+ @Column("state")
+ private Integer state;
+
+ /**
+ * 结束时间
+ */
+ @Column("end_time")
+ private LocalDateTime endTime;
+
+ /**
+ * 门店状态
+ */
+ @Column("store_status")
+ private Integer storeStatus;
+
+ /**
+ * 商户编号
+ */
+ private String no;
+
+ /**
+ * 商户名称
+ */
+ private String name;
+
+ /**
+ * 商户联系人
+ */
+ private String contact;
+
+ /**
+ * 商户联系电话
+ */
+ private String phone;
+
+ /**
+ * 商户地址
+ */
+ private String address;
+
+ /**
+ * 商户特殊编号
+ */
+ @Column("special_num")
+ private String specialNum;
+
+ /**
+ * 门店名称
+ */
+ @Column("shop_name")
+ private String shopName;
+
+ /**
+ * 终端sn号
+ */
+ @Column("terminal_sn")
+ private String terminalSn;
+
+ /**
+ * 终端类型
+ */
+ @Column("terminal_type")
+ private Integer terminalType;
+
+ /**
+ * 终端型号
+ */
+ @Column("terminal_model")
+ private String terminalModel;
+
+ /**
+ * 终端编号
+ */
+ @Column("terminal_no")
+ private String terminalNo;
+
+ /**
+ * 终端来源
+ */
+ @Column("terminal_source")
+ private Integer terminalSource;
+
+ /**
+ * 终端版地址
+ */
+ @Column("terminal_address")
+ private String terminalAddress;
+
+ /**
+ * 终端版本号
+ */
+ @Column("terminal_version")
+ private String terminalVersion;
+
+ /**
+ * 建档日期
+ */
+ @Column("register_time")
+ private LocalDate registerTime;
+
+ /**
+ * 商户类型
+ */
+ private Integer type;
+
+ /**
+ * 现有其他收单产品
+ */
+ private String products;
+
+ /**
+ * 商户提示工具
+ */
+ @Column("tip_tool")
+ private String tipTool;
+
+ /**
+ * 操作员编号
+ */
+ @Column("admin_id")
+ private String adminId;
+
+ /**
+ * 巡检频次
+ */
+ @Column("ins_fre")
+ private Integer insFre;
+
+ /**
+ * 客户经理
+ */
+ @Column("account_manager")
+ private String accountManager;
+
+ /**
+ * 经理电话
+ */
+ @Column("account_phone")
+ private String accountPhone;
+
+ /**
+ * 注册地址
+ */
+ @Column("register_address")
+ private String registerAddress;
+
+ /**
+ * 法人/负责人
+ */
+ @Column("legal_name")
+ private String legalName;
+
+ /**
+ * 地理位置信息
+ */
+ @Column("geographic_location")
+ private String geographicLocation;
+
+ /**
+ * 地理位置信息地址
+ */
+ @Column("location_address")
+ private String locationAddress;
+
+ /**
+ * 本次巡检位置经纬度
+ */
+ @Column("work_location")
+ private String workLocation;
+
+ /**
+ * 本次巡检位置信息(根据经纬度)
+ */
+ @Column("work_adderss")
+ private String workAdderss;
+
+ /**
+ * 偏差(直线距离 米)
+ */
+ private Long deviation;
+
+ /**
+ * 预制码编码
+ */
+ @Column("precode_encoding")
+ private String precodeEncoding;
+}