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; +}