CustomerInterLowerServiceImpl.java 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. package com.jkcredit.invoice.credit.interserver;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.jkcredit.invoice.common.DataResult;
  4. import com.jkcredit.invoice.mapper.customer.CustomerMapper;
  5. import com.jkcredit.invoice.mapper.customer.CustomerRecMapper;
  6. import com.jkcredit.invoice.model.entity.customer.Customer;
  7. import com.jkcredit.invoice.model.entity.customer.CustomerCarRec;
  8. import com.jkcredit.invoice.model.entity.customer.CustomerRec;
  9. import com.jkcredit.invoice.service.customer.CustomerService;
  10. import com.jkcredit.invoice.service.lowerservice.CustomeLowerService;
  11. import com.jkcredit.invoice.util.DateUtil;
  12. import com.jkcredit.invoice.util.RespR;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.util.ArrayList;
  18. import java.util.Date;
  19. import java.util.List;
  20. import static com.jkcredit.invoice.common.CommonConst.COMPUTE;
  21. /**
  22. * 企业备案接口实现类
  23. * @author mumuxigua
  24. */
  25. @Service("customerInterLowerService")
  26. @Slf4j
  27. public class CustomerInterLowerServiceImpl implements CustomerInterLowerService {
  28. private static final String PDF = "pdf";
  29. @Autowired
  30. CustomeLowerService lowerService;
  31. @Autowired
  32. CustomerService customerService;
  33. @Autowired
  34. CustomerMapper customerMapper;
  35. @Autowired
  36. CustomerRecMapper customerRecMapper;
  37. /**
  38. * 无车 自有车 企业注册
  39. *
  40. * @param appKey
  41. * @param api
  42. * @param data
  43. * @return
  44. */
  45. @Override
  46. public DataResult customeInterRec(String appKey, String api, String data, String requestid) {
  47. long costtimestart = System.currentTimeMillis();
  48. DataResult result = new DataResult();
  49. result.setData(3);
  50. result.setCode(200);
  51. result.setRequestid(requestid);
  52. result.setMsg("无法认证");
  53. try {
  54. log.info("[-CustomerInterLowerServiceImpl.customeInterRec-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
  55. JSONObject jsonObject = JSONObject.parseObject(data);
  56. /**
  57. * 0-接口 1-平台 3.手工录入
  58. */
  59. Integer interType = 0;
  60. //公司名称 companyName
  61. String name = jsonObject.getString("name");
  62. //企业税号 companyReferencenum
  63. String taxpayerCode = jsonObject.getString("taxplayerCode");
  64. //客户名称
  65. String customerName = appKey;
  66. Customer cust = customerMapper.selectByCustomerName(customerName);
  67. /**
  68. * 所属类型:
  69. *1-行业用户 2-自营平台 3-合作商户
  70. */
  71. Integer companyType = jsonObject.getInteger("companyType");
  72. /**
  73. * 运用类型:
  74. * 1-快递
  75. 2-速运
  76. 3-货运代理
  77. 4-普通货运
  78. 5-专线运输
  79. 6-其他
  80. * 运营范围
  81. */
  82. Integer operatingRangeType = jsonObject.getInteger("operatingRangeType");
  83. //联系人
  84. String contact = jsonObject.getString("contact");
  85. //联系人电话
  86. String tel = jsonObject.getString("tel");
  87. //紧急联系人 companyLeader
  88. String emergencyContact = jsonObject.getString("emergencyContact");
  89. //紧急联系人电话 companyLeaderPhone
  90. String emergencyTel = jsonObject.getString("emergencyTel");
  91. //购方客户名称
  92. String buyerName = jsonObject.getString("buyerName");
  93. //购方税号
  94. String buyerTaxpayerCode = jsonObject.getString("buyerTaxpayerCode");
  95. //购方单位地址
  96. String buyerAddr = jsonObject.getString("buyerAddr");
  97. //购方电话
  98. String buyerTel = jsonObject.getString("buyerTel");
  99. String mail = jsonObject.getString("mail"); // 下游添加邮箱字段 非必传
  100. //购方开户行
  101. String buyerBank = jsonObject.getString("buyerBank");
  102. //购方银行账号
  103. String buyerBankAccount = jsonObject.getString("buyerBankAccount");
  104. if (StringUtils.isEmpty(data) || null == jsonObject
  105. || StringUtils.isEmpty(name)
  106. || StringUtils.isEmpty(taxpayerCode)
  107. || StringUtils.isEmpty(customerName)
  108. || null == companyType
  109. || null == operatingRangeType
  110. || StringUtils.isEmpty(emergencyContact)
  111. || StringUtils.isEmpty(emergencyTel)
  112. || StringUtils.isEmpty(contact)
  113. || StringUtils.isEmpty(tel)
  114. || StringUtils.isEmpty(buyerName)
  115. || StringUtils.isEmpty(buyerTaxpayerCode)
  116. || StringUtils.isEmpty(buyerAddr)
  117. || StringUtils.isEmpty(buyerTel)
  118. || StringUtils.isEmpty(buyerBank)
  119. || StringUtils.isEmpty(buyerBankAccount)
  120. ) {
  121. return result;
  122. }
  123. CustomerRec customerRec = getCustomerRec(interType, name, taxpayerCode, customerName, cust, companyType, operatingRangeType, contact, tel, buyerAddr, buyerTel, buyerBank, buyerBankAccount,mail);
  124. return getDataResult(data, costtimestart, result, customerRec);
  125. } catch (Exception e) {
  126. log.error("[-CustomerInterLowerServiceImpl.customeInterRec-] get httpclient exception is "
  127. + e + ", request is " + data);
  128. }
  129. return result;
  130. }
  131. private DataResult getDataResult(String data, long costtimestart, DataResult result, CustomerRec customerRec) {
  132. List<CustomerRec> customerRecs = new ArrayList<CustomerRec>();
  133. customerRecs.add(customerRec);
  134. RespR rs = lowerService.customeRec(customerRecs);
  135. long costtimeend = System.currentTimeMillis();
  136. log.info("[-CustomerInterLowerServiceImpl.customeInterRec-] result is "
  137. + rs.toString() + ", request is " + data + " ,costtime="
  138. + (costtimeend - costtimestart));
  139. //返回成功
  140. if (null != rs && rs.getCode() == 0) {
  141. RespR rs1 = customerService.customeRec(customerRec);
  142. log.info("[-CustomerInterLowerServiceImpl.customeInterRecRc1-] result is "
  143. + rs1.toString() + ", request is " + data + " ,costtime="
  144. + (System.currentTimeMillis() - costtimestart));
  145. if (null != rs1 && rs1.getCode() == 0) {
  146. result.setData(1);
  147. result.setCode(200);
  148. result.setMsg(rs1.getMsg());
  149. return result;
  150. } else {
  151. result.setData(3);
  152. result.setCode(200);
  153. result.setMsg(rs1.getMsg());
  154. return result;
  155. }
  156. } else {
  157. result.setData(3);
  158. result.setCode(200);
  159. result.setMsg("无法认证");
  160. return result;
  161. }
  162. }
  163. private CustomerRec getCustomerRec(Integer interType, String name, String taxpayerCode, String customerName, Customer cust, Integer companyType, Integer operatingRangeType, String contact, String tel, String buyerAddr, String buyerTel, String buyerBank, String buyerBankAccount,String mail) {
  164. CustomerRec customerRec = new CustomerRec();
  165. //客户名称
  166. customerRec.setCustomerName(customerName);
  167. //紧急联系人
  168. customerRec.setCompanyLeader(contact);
  169. //紧急联系人电话
  170. customerRec.setCompanyLeaderPhone(tel);
  171. //企业名称
  172. customerRec.setCompanyName(name);
  173. //企业税号
  174. customerRec.setCompanyReferencenum(taxpayerCode);
  175. //公司开户行
  176. customerRec.setCompanyOpenbank(buyerBank);
  177. //公司开户行电话
  178. customerRec.setCompanyOpenbankAcc(buyerBankAccount);
  179. //公司地址
  180. customerRec.setCompanyAdress(buyerAddr);
  181. //公司电话
  182. customerRec.setCompanyPhone(buyerTel);
  183. customerRec.setInvoiceMail(mail);
  184. //0-接口 1-平台
  185. customerRec.setInterType(interType);
  186. //业务类型 0 -自有车 1-外协车 2-无车
  187. customerRec.setBussinessType(String.valueOf(cust.getBussinessType()));
  188. //运用类型
  189. customerRec.setOperatingRangeType(operatingRangeType);
  190. //所属类型
  191. customerRec.setCompanyType(companyType);
  192. return customerRec;
  193. }
  194. /**
  195. * 无车 自有车企业查询
  196. *
  197. * @param appKey
  198. * @param api
  199. * @param data
  200. * @return
  201. */
  202. @Override
  203. public DataResult customeInterRecQuery(String appKey, String api, String data, String requestid) {
  204. long costtimestart = System.currentTimeMillis();
  205. DataResult result = new DataResult();
  206. result.setData(3);
  207. result.setCode(200);
  208. result.setRequestid(requestid);
  209. result.setMsg("无法认证");
  210. try {
  211. log.info("[-CustomerInterLowerServiceImpl.customeInterRecQuery-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
  212. JSONObject jsonObject = JSONObject.parseObject(data);
  213. //企业名称
  214. String companyName = jsonObject.getString("companyName");
  215. //企业税号
  216. String taxpayerCode = "";
  217. if (StringUtils.isEmpty(data) || null == jsonObject) {
  218. return result;
  219. }
  220. CustomerCarRec customerCarRec = new CustomerCarRec();
  221. customerCarRec.setCustomerName(appKey);
  222. Customer cust = customerMapper.selectByCustomerName(appKey);
  223. if(null == cust){
  224. result.setMsg("查询错误");
  225. result.setCode(9998);
  226. return result;
  227. }
  228. if( 0 == cust.getBussinessType()){
  229. taxpayerCode = jsonObject.getString("taxpayerCode");
  230. }else if(2 == cust.getBussinessType()){
  231. taxpayerCode = jsonObject.getString("taxplayerCode");
  232. }
  233. if (StringUtils.isEmpty(companyName) || StringUtils.isEmpty(taxpayerCode)) {
  234. result.setMsg("查询错误");
  235. result.setCode(9998);
  236. return result;
  237. }
  238. CustomerRec customerRec = new CustomerRec();
  239. customerRec.setCompanyName(companyName);
  240. customerRec.setCompanyReferencenum(taxpayerCode);
  241. RespR rs = customerService.customerRecQuery(customerRec);
  242. long costtimeend = System.currentTimeMillis();
  243. log.info("[-CustomerInterLowerServiceImpl.customeInterRecQuery-] result is "
  244. + rs.toString() + ", request is " + data + " ,costtime="
  245. + (costtimeend - costtimestart));
  246. if (null != rs && rs.getCode() == 0) {
  247. result.setData(1);
  248. result.setCode(200);
  249. result.setMsg(rs.getData().toString());
  250. return result;
  251. } else {
  252. result.setData(3);
  253. result.setCode(200);
  254. result.setMsg(rs.getMsg());
  255. return result;
  256. }
  257. } catch (Exception e) {
  258. log.error("[-CustomerInterLowerServiceImpl.customeInterRecQuery-] get httpclient exception is "
  259. + e + ", request is " + data);
  260. }
  261. return result;
  262. }
  263. /**
  264. * @Description 协议上传接口
  265. * @Author mashengyi
  266. * @Date 2022/3/27 22:51
  267. * @Param
  268. * @Return
  269. * @Exception
  270. */
  271. @Override
  272. public DataResult customeProtocolUpLoad(String appKey, String api, String data, String requestid) {
  273. long costtimestart = System.currentTimeMillis();
  274. DataResult result = new DataResult();
  275. result.setData(3);
  276. result.setCode(200);
  277. result.setRequestid(requestid);
  278. result.setMsg("无法认证");
  279. try {
  280. log.info("[-CustomerInterLowerServiceImpl.customeProtocolUpLoad-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
  281. JSONObject jsonObject = JSONObject.parseObject(data);
  282. //公司编号
  283. String companyNum = jsonObject.getString("companyNum");
  284. //服务开始时间
  285. String serviceStartTime = jsonObject.getString("serviceStartTime");
  286. //服务结束时间
  287. String serviceEndTime = jsonObject.getString("serviceEndTime");
  288. //协议文件名
  289. String contractFileName = jsonObject.getString("contractFileName");
  290. //上传文件转换的base64
  291. String base64Str = jsonObject.getString("base64Str");
  292. //协议类型
  293. Integer serviceType = jsonObject.getInteger("serviceType");
  294. if (StringUtils.isEmpty(data) || null == jsonObject) {
  295. return result;
  296. }
  297. if (StringUtils.isEmpty(companyNum) || StringUtils.isEmpty(serviceStartTime)
  298. || StringUtils.isEmpty(serviceEndTime)
  299. || StringUtils.isEmpty(contractFileName)
  300. || StringUtils.isEmpty(base64Str)
  301. || null == serviceType) {
  302. return result;
  303. }
  304. if (!DateUtil.isValidDate(serviceStartTime)) {
  305. result.setMsg("日期格式有误");
  306. return result;
  307. }
  308. if (!DateUtil.isValidDate(serviceEndTime)) {
  309. result.setMsg("日期格式有误");
  310. return result;
  311. }
  312. CustomerRec customerRec2 = new CustomerRec();
  313. customerRec2.setCustomerName(appKey);
  314. customerRec2.setCompanyNum(companyNum);
  315. CustomerRec customerRec1 = customerRecMapper.selectByCustomerNameAndCompanyNum(customerRec2);
  316. if (null == customerRec1) {
  317. result.setMsg("企业还未备案成功!");
  318. return result;
  319. }
  320. if (null != customerRec1 && customerRec1.getRecStatus() != 1) {
  321. result.setMsg("企业还未备案成功!");
  322. return result;
  323. }
  324. if (null != customerRec1
  325. && StringUtils.isNotBlank(customerRec1.getServiceEndTime())
  326. //如果协议到期时间超过60天,协议上传成功不允许重新上传协议
  327. && DateUtil.daysBetween(customerRec1.getServiceEndTime(), new Date()) > 60
  328. && customerRec1.getContractSuc() == 1) {
  329. result.setMsg("协议已上传成功,审批中,请勿重复上传协议!");
  330. return result;
  331. }
  332. String fileType = contractFileName.substring(contractFileName.lastIndexOf(".") + 1).toLowerCase();
  333. if (!PDF.equals(fileType)) {
  334. result.setMsg("必须是pdf文件!");
  335. return result;
  336. }
  337. int base64StrLength = base64Str.length();
  338. if (COMPUTE < base64StrLength) {
  339. result.setMsg("pdf不可超过10M!");
  340. return result;
  341. }
  342. return getDataResult(appKey, data, costtimestart, result, companyNum, serviceStartTime, serviceEndTime, contractFileName, base64Str, serviceType);
  343. } catch (Exception e) {
  344. log.error("[-CustomerInterLowerServiceImpl.customeProtocolUpLoad-] get httpclient exception is "
  345. + e + ", request is " + data);
  346. }
  347. return result;
  348. }
  349. private DataResult getDataResult(String appKey, String data, long costtimestart, DataResult result, String companyNum, String serviceStartTime, String serviceEndTime, String contractFileName, String base64Str, Integer serviceType) {
  350. CustomerRec customerRec = new CustomerRec();
  351. //服务开始时间
  352. customerRec.setServiceStartTime(DateUtil.getDistanceHoursFormat(serviceStartTime));
  353. //服务结束时间
  354. customerRec.setServiceEndTime(DateUtil.getDistanceHoursFormat(serviceEndTime));
  355. //协议类型
  356. customerRec.setServiceType(serviceType);
  357. //协议名称
  358. customerRec.setLowerFileName(contractFileName);
  359. //协议base64编码
  360. customerRec.setLowerBase64Str(base64Str);
  361. //客户名称
  362. customerRec.setCustomerName(appKey);
  363. customerRec.setCompanyNum(companyNum);
  364. //接口
  365. customerRec.setInterType(0);
  366. List<CustomerRec> customerRecs = new ArrayList<CustomerRec>();
  367. customerRecs.add(customerRec);
  368. RespR rs = lowerService.customeRecUpload(customerRecs);
  369. long costtimeend = System.currentTimeMillis();
  370. log.info("[-CustomerInterLowerServiceImpl.customeProtocolUpLoad-] result is "
  371. + rs.toString() + ", request is " + data + " ,costtime="
  372. + (costtimeend - costtimestart));
  373. if (null != rs && rs.getCode() == 0) {
  374. result.setData(1);
  375. result.setCode(200);
  376. result.setMsg(rs.getMsg());
  377. return result;
  378. } else {
  379. result.setData(3);
  380. result.setCode(200);
  381. result.setMsg(rs.getMsg());
  382. return result;
  383. }
  384. }
  385. /**
  386. * @Description 自有车 无车、协议上传状态查询
  387. * @Author mashengyi
  388. * @Date 2022/3/27 22:51
  389. * @Param
  390. * @Return
  391. * @Exception
  392. */
  393. @Override
  394. public DataResult customeProtocolStatus(String appKey, String api, String data, String requestid) {
  395. long costtimestart = System.currentTimeMillis();
  396. DataResult result = new DataResult();
  397. result.setData(3);
  398. result.setCode(200);
  399. result.setRequestid(requestid);
  400. result.setMsg("无法认证");
  401. try {
  402. log.info("[-CustomerInterLowerServiceImpl.customeProtocolStatus-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
  403. JSONObject jsonObject = JSONObject.parseObject(data);
  404. //公司编号
  405. String companyNum = jsonObject.getString("companyNum");
  406. if (StringUtils.isEmpty(data) || null == jsonObject) {
  407. return result;
  408. }
  409. if (StringUtils.isEmpty(companyNum)) {
  410. return result;
  411. }
  412. CustomerRec customerRec2 = new CustomerRec();
  413. customerRec2.setCustomerName(appKey);
  414. customerRec2.setCompanyNum(companyNum);
  415. CustomerRec customerRec1 = customerRecMapper.selectByCustomerNameAndCompanyNum(customerRec2);
  416. if (null == customerRec1) {
  417. result.setMsg("企业还未备案成功!");
  418. return result;
  419. }
  420. if (null != customerRec1 && customerRec1.getRecStatus() != 1) {
  421. result.setMsg("企业还未备案成功!");
  422. return result;
  423. }
  424. CustomerRec customerRec = new CustomerRec();
  425. //客户名称
  426. customerRec.setCustomerName(appKey);
  427. customerRec.setCompanyNum(companyNum);
  428. //接口
  429. customerRec.setInterType(0);
  430. RespR rs = lowerService.customeRecUploadStatus(customerRec);
  431. long costtimeend = System.currentTimeMillis();
  432. log.info("[-CustomerInterLowerServiceImpl.customeProtocolStatus-] result is "
  433. + rs.toString() + ", request is " + data + " ,costtime="
  434. + (costtimeend - costtimestart));
  435. if (null != rs && rs.getCode() == 0 && 0 == Integer.parseInt(rs.getData().toString())) {
  436. result.setData(3);
  437. result.setCode(200);
  438. result.setMsg("协议上传状态查询失败,请联系管理员处理");
  439. return result;
  440. } else if (null != rs && rs.getCode() == 0 && 0 != Integer.parseInt(rs.getData().toString())) {
  441. result.setData(1);
  442. result.setCode(200);
  443. JSONObject jb = new JSONObject();
  444. jb.put("status", rs.getData().toString());
  445. result.setMsg(jb.toString());
  446. return result;
  447. } else {
  448. result.setData(3);
  449. result.setCode(200);
  450. result.setMsg("无法认证");
  451. return result;
  452. }
  453. } catch (Exception e) {
  454. log.error("[-CustomerInterLowerServiceImpl.customeProtocolStatus-] get httpclient exception is "
  455. + e + ", request is " + data);
  456. }
  457. return result;
  458. }
  459. }