Kaynağa Gözat

上传新jar

Administrator 7 ay önce
ebeveyn
işleme
121aaab36a

+ 0 - 1
src/main/java/com/jkcredit/invoice/controller/user/UserController.java

@@ -128,7 +128,6 @@ public class UserController {
      */
     @PutMapping("/restPassword")
     @ApiOperation(value = "重置密码", notes = "重置密码")
-    @LoginRequired(role = AuthenticationInterceptor.AUTH_ADMIN)
     public RespR updateUserInfoPassWord(@RequestBody @Validated({Update.class}) UserVo userVo) {
         User user = userVo.getUserFromUserVo();
         user.setPassword(Md5Util.encrypt(user.getPassword()));

+ 66 - 0
src/main/java/com/jkcredit/invoice/credit/InterfaceCheckServer.java

@@ -320,6 +320,72 @@ public class InterfaceCheckServer {
                     statisRequestIdTimeComp.removeReQuestIdAndTime(requestid);
                 }
                 break;
+            //无车  上传企业开票经办人
+            case "COMPANY_COMPANYDETAILADD":
+                if (StatisRequestIdTimeComp.isLimit) {
+                    log.info("InterfaceCheckServer.doJumpHandler,appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid + "=被拒绝");
+                    result = resultTimeOut;
+                } else {
+                    statisRequestIdTimeComp.putReQuestIdAndTime(requestid);
+                    result = noCarInterService.companyDetailAdd(appKey, api, data, requestid);
+                    statisRequestIdTimeComp.removeReQuestIdAndTime(requestid);
+                }
+                break;
+            //无车  变更企业开票经办人
+            case "COMPANY_COMPANYOPERATOREDIT":
+                if (StatisRequestIdTimeComp.isLimit) {
+                    log.info("InterfaceCheckServer.doJumpHandler,appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid + "=被拒绝");
+                    result = resultTimeOut;
+                } else {
+                    statisRequestIdTimeComp.putReQuestIdAndTime(requestid);
+                    result = noCarInterService.operatorEdit(appKey, api, data, requestid);
+                    statisRequestIdTimeComp.removeReQuestIdAndTime(requestid);
+                }
+                break;
+            //无车  确认变更企业开票经办人
+            case "COMPANY_COMPANYOPERATOREDITCONFIRM":
+                if (StatisRequestIdTimeComp.isLimit) {
+                    log.info("InterfaceCheckServer.doJumpHandler,appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid + "=被拒绝");
+                    result = resultTimeOut;
+                } else {
+                    statisRequestIdTimeComp.putReQuestIdAndTime(requestid);
+                    result = noCarInterService.operatorEditConfirm(appKey, api, data, requestid);
+                    statisRequestIdTimeComp.removeReQuestIdAndTime(requestid);
+                }
+                break;
+            //无车  上传企业开票经办人证明附件
+            case "COMPANY_UPLOADOPERATOREVIDENCE":
+                if (StatisRequestIdTimeComp.isLimit) {
+                    log.info("InterfaceCheckServer.doJumpHandler,appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid + "=被拒绝");
+                    result = resultTimeOut;
+                } else {
+                    statisRequestIdTimeComp.putReQuestIdAndTime(requestid);
+                    result = noCarInterService.operatorEvidence(appKey, api, data, requestid);
+                    statisRequestIdTimeComp.removeReQuestIdAndTime(requestid);
+                }
+                break;
+            //无车  运单开票前发送验证码
+            case "WAYBILL_OPERATORSENDCODE":
+                if (StatisRequestIdTimeComp.isLimit) {
+                    log.info("InterfaceCheckServer.doJumpHandler,appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid + "=被拒绝");
+                    result = resultTimeOut;
+                } else {
+                    statisRequestIdTimeComp.putReQuestIdAndTime(requestid);
+                    result = noCarInterService.operatorSendCode(appKey, api, data, requestid);
+                    statisRequestIdTimeComp.removeReQuestIdAndTime(requestid);
+                }
+                break;
+            //无车  运单开票前短信确认
+            case "WAYBILL_OPERATORVALIDCODE":
+                if (StatisRequestIdTimeComp.isLimit) {
+                    log.info("InterfaceCheckServer.doJumpHandler,appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid + "=被拒绝");
+                    result = resultTimeOut;
+                } else {
+                    statisRequestIdTimeComp.putReQuestIdAndTime(requestid);
+                    result = noCarInterService.operatorValidCode(appKey, api, data, requestid);
+                    statisRequestIdTimeComp.removeReQuestIdAndTime(requestid);
+                }
+                break;
             //无车  运单号查询发票数据 透传上游
             case "WAY_BILL_NUM_FIND_OWNER_INVOICE":
                 result = noCarInterService.noCarVoiceOwnerQuery(appKey, api, data, requestid);

+ 60 - 0
src/main/java/com/jkcredit/invoice/credit/interserver/NoCarInterService.java

@@ -117,4 +117,64 @@ public interface NoCarInterService {
      * @return
      */
     DataResult noCarVoiceOwnerQuery(String appKey, String api, String data, String requestid);
+
+    /**
+     * 无车  上传企业开票经办人
+     * @param appKey
+     * @param api
+     * @param data
+     * @param requestid
+     * @return
+     */
+    DataResult companyDetailAdd(String appKey, String api, String data, String requestid);
+
+    /**
+     * 无车  变更企业开票经办人
+     * @param appKey
+     * @param api
+     * @param data
+     * @param requestid
+     * @return
+     */
+    DataResult operatorEdit(String appKey, String api, String data, String requestid);
+
+    /**
+     * 无车  确认变更企业开票经办人
+     * @param appKey
+     * @param api
+     * @param data
+     * @param requestid
+     * @return
+     */
+    DataResult operatorEditConfirm(String appKey, String api, String data, String requestid);
+
+    /**
+     * 无车  上传企业开票经办人证明附件
+     * @param appKey
+     * @param api
+     * @param data
+     * @param requestid
+     * @return
+     */
+    DataResult operatorEvidence(String appKey, String api, String data, String requestid);
+
+    /**
+     * 无车  运单开票前发送验证码
+     * @param appKey
+     * @param api
+     * @param data
+     * @param requestid
+     * @return
+     */
+    DataResult operatorSendCode(String appKey, String api, String data, String requestid);
+
+    /**
+     * 无车  运单开票前短信确认
+     * @param appKey
+     * @param api
+     * @param data
+     * @param requestid
+     * @return
+     */
+    DataResult operatorValidCode(String appKey, String api, String data, String requestid);
 }

+ 371 - 0
src/main/java/com/jkcredit/invoice/credit/interserver/NoCarInterServiceImpl.java

@@ -13,13 +13,19 @@ import com.jkcredit.invoice.model.entity.customer.CustomerCarRec;
 import com.jkcredit.invoice.model.entity.customer.CustomerRec;
 import com.jkcredit.invoice.model.entity.invoice.BillInvoice;
 import com.jkcredit.invoice.model.entity.manager.Param;
+import com.jkcredit.invoice.model.entity.waybill.NoCarCompanyManger;
 import com.jkcredit.invoice.model.entity.waybill.NoCarWayBill;
 import com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo;
+import com.jkcredit.invoice.model.vo.OperatorEditConfirmVo;
+import com.jkcredit.invoice.model.vo.OperatorEditVo;
+import com.jkcredit.invoice.model.vo.OperatorEvidenceVo;
+import com.jkcredit.invoice.model.vo.OperatorSendCodeVo;
 import com.jkcredit.invoice.service.customer.CustomerRecService;
 import com.jkcredit.invoice.service.lowerservice.NoCarService;
 import com.jkcredit.invoice.service.lowerservice.vo.HcInvoiceQueryVo;
 import com.jkcredit.invoice.service.manager.ParamService;
 import com.jkcredit.invoice.service.nocar.NoCarBillWayImportService;
+import com.jkcredit.invoice.service.nocar.NoCarCompanyMangerOper;
 import com.jkcredit.invoice.service.nocar.WayBillFileService;
 import com.jkcredit.invoice.util.DateUtil;
 import com.jkcredit.invoice.util.RespR;
@@ -1154,6 +1160,371 @@ public class NoCarInterServiceImpl implements NoCarInterService {
         }
         return result;
     }
+    @Autowired
+    NoCarCompanyMangerOper noCarCompanyMangerOper;
+    @Override
+    public DataResult companyDetailAdd(String appKey, String api, String data, String requestid) {
+        long costtimestart = System.currentTimeMillis();
+
+        DataResult result = new DataResult();
+
+        result.setData(3);
+        result.setCode(200);
+        result.setRequestid(requestid);
+        result.setMsg("无法认证");
+        JSONObject jsonObject = JSONObject.parseObject(data);
+        if (StringUtils.isEmpty(data) || null == jsonObject) {
+            result.setMsg("有空的必填运单要素,请检查");
+            return result;
+        }
+        //税号 必输
+        String taxplayerCode = jsonObject.getString("taxplayerCode");
+        String operatorName = jsonObject.getString("operatorName");
+        String operatorMobile = jsonObject.getString("operatorMobile");
+        String identificationId = jsonObject.getString("identificationId");
+        String contractFileName = jsonObject.getString("contractFileName");
+        String base64Str = jsonObject.getString("base64Str");
+        if(StringUtils.isEmpty(taxplayerCode) || StringUtils.isEmpty(operatorName)
+                ||StringUtils.isEmpty(operatorMobile) ||StringUtils.isEmpty(contractFileName)
+                ||StringUtils.isEmpty(base64Str)  ){
+            result.setMsg("有空的必填运单要素,请检查");
+        }
+        CustomerRec customerRec = new CustomerRec();
+        customerRec.setCustomerName(appKey);
+        customerRec.setCompanyReferencenum(taxplayerCode);
+        customerRec = customerRecMapper.selectByCustomerNameAndCompanyReference(customerRec);
+        if (customerRec == null) {
+            result.setMsg("客户:" + appKey + ";税号" + taxplayerCode + "未在平台备案成功,请先做备案");
+            return result;
+        }
+        try {
+            log.info("[-NoCarInterServiceImpl.companyDetailAdd-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
+            NoCarCompanyManger noCarCompanyManger = new NoCarCompanyManger();
+            noCarCompanyManger.setCompanyNum(customerRec.getCompanyNum());
+            noCarCompanyManger.setOperatorName(operatorName);
+            noCarCompanyManger.setOperatorMobile(operatorMobile);
+            noCarCompanyManger.setIdentificationId(identificationId);
+            noCarCompanyManger.setContractFileName(contractFileName);
+            noCarCompanyManger.setBase64Str(base64Str);
+            RespR re = noCarCompanyMangerOper.companyDetailAdd(noCarCompanyManger);
+            long costtimeend = System.currentTimeMillis();
+            log.info("[-NoCarInterServiceImpl.companyDetailAdd-] result is "
+                    + re.toString() + ", request is " + data + " ,costtime="
+                    + (costtimeend - costtimestart));
+            if (null != re && re.getCode()==0) {
+                result.setData(1);
+                result.setCode(200);
+                result.setMsg("success");
+                return result;
+            } else {
+                result.setData(3);
+                result.setCode(200);
+                result.setMsg(re.getMsg());
+                return result;
+            }
+        } catch (Exception e) {
+            log.error("[-NoCarInterServiceImpl.companyDetailAdd-] get httpclient exception is "
+                    + e + ", request is " + data);
+        }
+        return result;
+    }
+
+    @Override
+    public DataResult operatorEdit(String appKey, String api, String data, String requestid) {
+        long costtimestart = System.currentTimeMillis();
+
+        DataResult result = new DataResult();
+
+        result.setData(3);
+        result.setCode(200);
+        result.setRequestid(requestid);
+        result.setMsg("无法认证");
+        JSONObject jsonObject = JSONObject.parseObject(data);
+        if (StringUtils.isEmpty(data) || null == jsonObject) {
+            result.setMsg("有空的必填运单要素,请检查");
+            return result;
+        }
+        //税号 必输
+        String taxplayerCode = jsonObject.getString("taxplayerCode");
+        String sourceOperatorMobile = jsonObject.getString("sourceOperatorMobile");
+        String targetOperatorName = jsonObject.getString("targetOperatorName");
+        String targetOperatorMobile = jsonObject.getString("targetOperatorMobile");
+        String targetIdentificationId = jsonObject.getString("targetIdentificationId");
+        if(StringUtils.isEmpty(taxplayerCode) || StringUtils.isEmpty(targetOperatorName)
+                ||StringUtils.isEmpty(targetOperatorMobile) ||StringUtils.isEmpty(sourceOperatorMobile)){
+            result.setMsg("有空的必填运单要素,请检查");
+        }
+        CustomerRec customerRec = new CustomerRec();
+        customerRec.setCustomerName(appKey);
+        customerRec.setCompanyReferencenum(taxplayerCode);
+        customerRec = customerRecMapper.selectByCustomerNameAndCompanyReference(customerRec);
+        if (customerRec == null) {
+            result.setMsg("客户:" + appKey + ";税号" + taxplayerCode + "未在平台备案成功,请先做备案");
+            return result;
+        }
+        try {
+            log.info("[-NoCarInterServiceImpl.operatorEdit-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
+            OperatorEditVo operatorEditVo = new OperatorEditVo();
+            operatorEditVo.setCompanyNum(customerRec.getCompanyNum());
+            operatorEditVo.setSourceOperatorMobile(sourceOperatorMobile);
+            operatorEditVo.setTargetOperatorName(targetOperatorName);
+            operatorEditVo.setTargetOperatorMobile(targetOperatorMobile);
+            operatorEditVo.setTargetIdentificationId(targetIdentificationId);
+            RespR re = noCarCompanyMangerOper.operatorEdit(operatorEditVo);
+            long costtimeend = System.currentTimeMillis();
+            log.info("[-NoCarInterServiceImpl.operatorEdit-] result is "
+                    + re.toString() + ", request is " + data + " ,costtime="
+                    + (costtimeend - costtimestart));
+            if (null != re && re.getCode()==0) {
+                result.setData(1);
+                result.setCode(200);
+                result.setMsg("success");
+                return result;
+            } else {
+                result.setData(3);
+                result.setCode(200);
+                result.setMsg(re.getMsg());
+                return result;
+            }
+        } catch (Exception e) {
+            log.error("[-NoCarInterServiceImpl.operatorEdit-] get httpclient exception is "
+                    + e + ", request is " + data);
+        }
+        return result;
+    }
+
+    @Override
+    public DataResult operatorEditConfirm(String appKey, String api, String data, String requestid) {
+        long costtimestart = System.currentTimeMillis();
+
+        DataResult result = new DataResult();
+
+        result.setData(3);
+        result.setCode(200);
+        result.setRequestid(requestid);
+        result.setMsg("无法认证");
+        JSONObject jsonObject = JSONObject.parseObject(data);
+        if (StringUtils.isEmpty(data) || null == jsonObject) {
+            result.setMsg("有空的必填运单要素,请检查");
+            return result;
+        }
+        //税号 必输
+        String taxplayerCode = jsonObject.getString("taxplayerCode");
+        String targetOperatorMobile = jsonObject.getString("targetOperatorMobile");
+        String validCode = jsonObject.getString("validCode");
+        if(StringUtils.isEmpty(taxplayerCode) || StringUtils.isEmpty(targetOperatorMobile)
+                ||StringUtils.isEmpty(validCode)){
+            result.setMsg("有空的必填运单要素,请检查");
+        }
+        CustomerRec customerRec = new CustomerRec();
+        customerRec.setCustomerName(appKey);
+        customerRec.setCompanyReferencenum(taxplayerCode);
+        customerRec = customerRecMapper.selectByCustomerNameAndCompanyReference(customerRec);
+        if (customerRec == null) {
+            result.setMsg("客户:" + appKey + ";税号" + taxplayerCode + "未在平台备案成功,请先做备案");
+            return result;
+        }
+        try {
+            log.info("[-NoCarInterServiceImpl.operatorEditConfirm-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
+            OperatorEditConfirmVo operatorEditConfirmVo = new OperatorEditConfirmVo();
+            operatorEditConfirmVo.setCompanyNum(customerRec.getCompanyNum());
+            operatorEditConfirmVo.setTargetOperatorMobile(targetOperatorMobile);
+            operatorEditConfirmVo.setValidCode(validCode);
+            RespR re = noCarCompanyMangerOper.operatorEditConfirm(operatorEditConfirmVo);
+            long costtimeend = System.currentTimeMillis();
+            log.info("[-NoCarInterServiceImpl.operatorEditConfirm-] result is "
+                    + re.toString() + ", request is " + data + " ,costtime="
+                    + (costtimeend - costtimestart));
+            if (null != re && re.getCode()==0) {
+                result.setData(1);
+                result.setCode(200);
+                result.setMsg("success");
+                return result;
+            } else {
+                result.setData(3);
+                result.setCode(200);
+                result.setMsg(re.getMsg());
+                return result;
+            }
+        } catch (Exception e) {
+            log.error("[-NoCarInterServiceImpl.operatorEditConfirm-] get httpclient exception is "
+                    + e + ", request is " + data);
+        }
+        return result;
+    }
+
+    @Override
+    public DataResult operatorEvidence(String appKey, String api, String data, String requestid) {
+        long costtimestart = System.currentTimeMillis();
+
+        DataResult result = new DataResult();
+
+        result.setData(3);
+        result.setCode(200);
+        result.setRequestid(requestid);
+        result.setMsg("无法认证");
+        JSONObject jsonObject = JSONObject.parseObject(data);
+        if (StringUtils.isEmpty(data) || null == jsonObject) {
+            result.setMsg("有空的必填运单要素,请检查");
+            return result;
+        }
+        //税号 必输
+        String taxplayerCode = jsonObject.getString("taxplayerCode");
+        String operatorMobile = jsonObject.getString("operatorMobile");
+        String contractFileName = jsonObject.getString("contractFileName");
+        String base64Str = jsonObject.getString("base64Str");
+        if(StringUtils.isEmpty(taxplayerCode)
+                ||StringUtils.isEmpty(operatorMobile) ||StringUtils.isEmpty(contractFileName)
+                ||StringUtils.isEmpty(base64Str)  ){
+            result.setMsg("有空的必填运单要素,请检查");
+        }
+        CustomerRec customerRec = new CustomerRec();
+        customerRec.setCustomerName(appKey);
+        customerRec.setCompanyReferencenum(taxplayerCode);
+        customerRec = customerRecMapper.selectByCustomerNameAndCompanyReference(customerRec);
+        if (customerRec == null) {
+            result.setMsg("客户:" + appKey + ";税号" + taxplayerCode + "未在平台备案成功,请先做备案");
+            return result;
+        }
+        try {
+            log.info("[-NoCarInterServiceImpl.operatorEvidence-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
+            OperatorEvidenceVo operatorEvidenceVo = new OperatorEvidenceVo();
+            operatorEvidenceVo.setCompanyNum(customerRec.getCompanyNum());
+            operatorEvidenceVo.setOperatorMobile(operatorMobile);
+            operatorEvidenceVo.setContractFileName(contractFileName);
+            operatorEvidenceVo.setBase64Str(base64Str);
+            RespR re = noCarCompanyMangerOper.operatorEvidence(operatorEvidenceVo);
+            long costtimeend = System.currentTimeMillis();
+            log.info("[-NoCarInterServiceImpl.operatorEvidence-] result is "
+                    + re.toString() + ", request is " + data + " ,costtime="
+                    + (costtimeend - costtimestart));
+            if (null != re && re.getCode()==0) {
+                result.setData(1);
+                result.setCode(200);
+                result.setMsg("success");
+                return result;
+            } else {
+                result.setData(3);
+                result.setCode(200);
+                result.setMsg(re.getMsg());
+                return result;
+            }
+        } catch (Exception e) {
+            log.error("[-NoCarInterServiceImpl.operatorEvidence-] get httpclient exception is "
+                    + e + ", request is " + data);
+        }
+        return result;
+    }
+
+    @Override
+    public DataResult operatorSendCode(String appKey, String api, String data, String requestid) {
+        long costtimestart = System.currentTimeMillis();
+
+        DataResult result = new DataResult();
+
+        result.setData(3);
+        result.setCode(200);
+        result.setRequestid(requestid);
+        result.setMsg("无法认证");
+        JSONObject jsonObject = JSONObject.parseObject(data);
+        if (StringUtils.isEmpty(data) || null == jsonObject) {
+            result.setMsg("有空的必填运单要素,请检查");
+            return result;
+        }
+        //税号 必输
+        String taxplayerCode = jsonObject.getString("taxplayerCode");
+        if(StringUtils.isEmpty(taxplayerCode)){
+            result.setMsg("有空的必填运单要素,请检查");
+        }
+        CustomerRec customerRec = new CustomerRec();
+        customerRec.setCustomerName(appKey);
+        customerRec.setCompanyReferencenum(taxplayerCode);
+        customerRec = customerRecMapper.selectByCustomerNameAndCompanyReference(customerRec);
+        if (customerRec == null) {
+            result.setMsg("客户:" + appKey + ";税号" + taxplayerCode + "未在平台备案成功,请先做备案");
+            return result;
+        }
+        try {
+            log.info("[-NoCarInterServiceImpl.operatorSendCode-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
+            OperatorSendCodeVo operatorSendCodeVo = new OperatorSendCodeVo();
+            operatorSendCodeVo.setBuyerCode(taxplayerCode);
+            RespR re = noCarCompanyMangerOper.operatorSendCode(operatorSendCodeVo);
+            long costtimeend = System.currentTimeMillis();
+            log.info("[-NoCarInterServiceImpl.operatorSendCode-] result is "
+                    + re.toString() + ", request is " + data + " ,costtime="
+                    + (costtimeend - costtimestart));
+            if (null != re && re.getCode()==0) {
+                result.setData(1);
+                result.setCode(200);
+                result.setMsg("success");
+                return result;
+            } else {
+                result.setData(3);
+                result.setCode(200);
+                result.setMsg(re.getMsg());
+                return result;
+            }
+        } catch (Exception e) {
+            log.error("[-NoCarInterServiceImpl.operatorSendCode-] get httpclient exception is "
+                    + e + ", request is " + data);
+        }
+        return result;
+    }
 
+    @Override
+    public DataResult operatorValidCode(String appKey, String api, String data, String requestid) {
+        long costtimestart = System.currentTimeMillis();
+
+        DataResult result = new DataResult();
 
+        result.setData(3);
+        result.setCode(200);
+        result.setRequestid(requestid);
+        result.setMsg("无法认证");
+        JSONObject jsonObject = JSONObject.parseObject(data);
+        if (StringUtils.isEmpty(data) || null == jsonObject) {
+            result.setMsg("有空的必填运单要素,请检查");
+            return result;
+        }
+        //税号 必输
+        String taxplayerCode = jsonObject.getString("taxplayerCode");
+        String validCode = jsonObject.getString("validCode");
+        if(StringUtils.isEmpty(taxplayerCode)||StringUtils.isEmpty(validCode)){
+            result.setMsg("有空的必填运单要素,请检查");
+        }
+        CustomerRec customerRec = new CustomerRec();
+        customerRec.setCustomerName(appKey);
+        customerRec.setCompanyReferencenum(taxplayerCode);
+        customerRec = customerRecMapper.selectByCustomerNameAndCompanyReference(customerRec);
+        if (customerRec == null) {
+            result.setMsg("客户:" + appKey + ";税号" + taxplayerCode + "未在平台备案成功,请先做备案");
+            return result;
+        }
+        try {
+            log.info("[-NoCarInterServiceImpl.operatorValidCode-] request appKey=" + appKey + " ,api=" + api + " ,data=" + data + " ,requestid=" + requestid);
+            OperatorSendCodeVo operatorSendCodeVo = new OperatorSendCodeVo();
+            operatorSendCodeVo.setBuyerCode(taxplayerCode);
+            operatorSendCodeVo.setValidCode(validCode);
+            RespR re = noCarCompanyMangerOper.operatorValidCode(operatorSendCodeVo);
+            long costtimeend = System.currentTimeMillis();
+            log.info("[-NoCarInterServiceImpl.operatorValidCode-] result is "
+                    + re.toString() + ", request is " + data + " ,costtime="
+                    + (costtimeend - costtimestart));
+            if (null != re && re.getCode()==0) {
+                result.setData(1);
+                result.setCode(200);
+                result.setMsg("success");
+                return result;
+            } else {
+                result.setData(3);
+                result.setCode(200);
+                result.setMsg(re.getMsg());
+                return result;
+            }
+        } catch (Exception e) {
+            log.error("[-NoCarInterServiceImpl.operatorValidCode-] get httpclient exception is "
+                    + e + ", request is " + data);
+        }
+        return result;
+    }
 }

+ 11 - 0
src/main/java/com/jkcredit/invoice/mapper/waybill/NoCarCompanyMangerMapper.java

@@ -0,0 +1,11 @@
+package com.jkcredit.invoice.mapper.waybill;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jkcredit.invoice.model.entity.waybill.NoCarCompanyManger;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface NoCarCompanyMangerMapper extends BaseMapper<NoCarCompanyManger>{
+
+
+}

+ 10 - 0
src/main/java/com/jkcredit/invoice/model/BaseMode.java

@@ -0,0 +1,10 @@
+package com.jkcredit.invoice.model;
+
+import com.alibaba.fastjson.JSON;
+
+public class BaseMode {
+    @Override
+    public String toString() {
+        return JSON.toJSONString(this);
+    }
+}

+ 63 - 0
src/main/java/com/jkcredit/invoice/model/entity/waybill/NoCarCompanyManger.java

@@ -0,0 +1,63 @@
+package com.jkcredit.invoice.model.entity.waybill;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jkcredit.invoice.model.BaseMode;
+import lombok.Data;
+
+/**
+ * 企业经办人信息
+ */
+@Data
+@TableName(value = "t_nocar_company_manger")
+public class NoCarCompanyManger extends BaseMode{
+
+    @TableId(type = IdType.INPUT)
+    private String companyNum;
+
+    /**
+     * 经办人姓名
+     */
+    private String operatorName;
+
+    /**
+     * 经办人手机号
+     */
+    private String operatorMobile;
+
+    /**
+     * 经办人身份证
+     */
+    private String identificationId;
+
+    /**
+     * 经办人姓名
+     */
+    private String operatorNameTemp;
+
+    /**
+     * 经办人手机号
+     */
+    private String operatorMobileTemp;
+
+    /**
+     * 经办人身份证
+     */
+    private String identificationIdTemp;
+
+    /**
+     * 附件名称
+     */
+    private String contractFileName;
+
+    /**
+     * 附件
+     */
+    private String base64Str;
+
+    /**
+     * 状态 1-成功 2- 待输入验证码
+     */
+    private String status;
+}

+ 11 - 0
src/main/java/com/jkcredit/invoice/model/vo/OperatorEditConfirmVo.java

@@ -0,0 +1,11 @@
+package com.jkcredit.invoice.model.vo;
+
+import com.jkcredit.invoice.model.BaseMode;
+import lombok.Data;
+
+@Data
+public class OperatorEditConfirmVo extends BaseMode{
+    private String companyNum;
+    private String targetOperatorMobile;
+    private String validCode;
+}

+ 13 - 0
src/main/java/com/jkcredit/invoice/model/vo/OperatorEditVo.java

@@ -0,0 +1,13 @@
+package com.jkcredit.invoice.model.vo;
+
+import com.jkcredit.invoice.model.BaseMode;
+import lombok.Data;
+
+@Data
+public class OperatorEditVo extends BaseMode{
+    private String companyNum;
+    private String sourceOperatorMobile;
+    private String targetOperatorName;
+    private String targetIdentificationId;
+    private String targetOperatorMobile;
+}

+ 12 - 0
src/main/java/com/jkcredit/invoice/model/vo/OperatorEvidenceVo.java

@@ -0,0 +1,12 @@
+package com.jkcredit.invoice.model.vo;
+
+import com.jkcredit.invoice.model.BaseMode;
+import lombok.Data;
+
+@Data
+public class OperatorEvidenceVo extends BaseMode{
+    private String companyNum;
+    private String operatorMobile;
+    private String contractFileName;
+    private String base64Str;
+}

+ 10 - 0
src/main/java/com/jkcredit/invoice/model/vo/OperatorSendCodeVo.java

@@ -0,0 +1,10 @@
+package com.jkcredit.invoice.model.vo;
+
+import com.jkcredit.invoice.model.BaseMode;
+import lombok.Data;
+
+@Data
+public class OperatorSendCodeVo extends BaseMode{
+    private String buyerCode;
+    private String validCode;
+}

+ 26 - 0
src/main/java/com/jkcredit/invoice/service/nocar/NoCarCompanyMangerOper.java

@@ -0,0 +1,26 @@
+package com.jkcredit.invoice.service.nocar;
+
+import com.jkcredit.invoice.model.entity.waybill.NoCarCompanyManger;
+import com.jkcredit.invoice.model.vo.OperatorEditConfirmVo;
+import com.jkcredit.invoice.model.vo.OperatorEditVo;
+import com.jkcredit.invoice.model.vo.OperatorEvidenceVo;
+import com.jkcredit.invoice.model.vo.OperatorSendCodeVo;
+import com.jkcredit.invoice.util.RespR;
+
+/**
+ * 无车企业开票人接口
+ */
+public interface NoCarCompanyMangerOper {
+
+   RespR companyDetailAdd(NoCarCompanyManger noCarCompanyManger);
+
+   RespR operatorEdit(OperatorEditVo operatorEditVo);
+
+    RespR operatorEditConfirm(OperatorEditConfirmVo operatorEditConfirmVo);
+
+    RespR operatorEvidence(OperatorEvidenceVo operatorEvidenceVo);
+
+    RespR operatorSendCode(OperatorSendCodeVo operatorSendCodeVo);
+
+    RespR operatorValidCode(OperatorSendCodeVo operatorSendCodeVo);
+}

+ 150 - 0
src/main/java/com/jkcredit/invoice/service/nocar/impl/NoCarCompanyMangerOperImpl.java

@@ -0,0 +1,150 @@
+package com.jkcredit.invoice.service.nocar.impl;
+
+import cn.com.taiji.sdk.model.comm.protocol.eoms.company.*;
+import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.OperatorSendCodeRequest;
+import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.OperatorValidCodeRequest;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jkcredit.invoice.mapper.waybill.NoCarCompanyMangerMapper;
+import com.jkcredit.invoice.model.entity.waybill.NoCarCompanyManger;
+import com.jkcredit.invoice.model.vo.OperatorEditConfirmVo;
+import com.jkcredit.invoice.model.vo.OperatorEditVo;
+import com.jkcredit.invoice.model.vo.OperatorEvidenceVo;
+import com.jkcredit.invoice.model.vo.OperatorSendCodeVo;
+import com.jkcredit.invoice.service.manager.ParamService;
+import com.jkcredit.invoice.service.nocar.NoCarCompanyMangerOper;
+import com.jkcredit.invoice.service.upservice.NoCarInterface;
+import com.jkcredit.invoice.util.RespR;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+public class NoCarCompanyMangerOperImpl extends ServiceImpl<NoCarCompanyMangerMapper,NoCarCompanyManger> implements NoCarCompanyMangerOper{
+    @Autowired
+    private NoCarCompanyMangerMapper noCarCompanyMangerMapper;
+
+    @Autowired
+    private NoCarInterface noCarInterface;
+
+    @Autowired
+    ParamService paramService;
+    @Override
+    public RespR companyDetailAdd(NoCarCompanyManger noCarCompanyManger) {
+        QueryWrapper<NoCarCompanyManger> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("operatorMobile").eq("companyNum",noCarCompanyManger.getCompanyNum());
+        NoCarCompanyManger noCarCompanyMangerDb = noCarCompanyMangerMapper.selectOne(queryWrapper);
+        if(noCarCompanyMangerDb !=null){
+            return new RespR(false,"已经上传企业开票人,无需重复上传");
+        }
+        CompanyDetailAddRequest companyDetailAddRequest = new CompanyDetailAddRequest();
+        BeanUtils.copyProperties(noCarCompanyManger,companyDetailAddRequest);
+        RespR<CompanyDetailAddResponse> respR = noCarInterface.companyDetailAdd(companyDetailAddRequest);
+        if(respR.getCode() == 1){
+            log.error("companyDetailAdd上传失败,失败原因:{}",respR.getMsg());
+            return new RespR(false,respR.getMsg());
+        }else{
+            noCarCompanyManger.setStatus("1");
+            noCarCompanyMangerMapper.insert(noCarCompanyManger);
+            return new RespR("success");
+        }
+    }
+
+    @Override
+    public RespR operatorEdit(OperatorEditVo operatorEditVo) {
+        OperatorEditRequest operatorEditRequest = new OperatorEditRequest();
+        BeanUtils.copyProperties(operatorEditVo,operatorEditRequest);
+        RespR respR = noCarInterface.operatorEdit(operatorEditRequest);
+        if(respR.getCode() == 1){
+            log.error("operatorEdit失败,失败原因:{}",respR.getMsg());
+            return new RespR(false,respR.getMsg());
+        }else{
+            UpdateWrapper<NoCarCompanyManger> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.set("operatorNameTemp",operatorEditVo.getTargetOperatorName());
+            updateWrapper.set("operatorMobileTemp",operatorEditVo.getSourceOperatorMobile());
+            updateWrapper.set("identificationIdTemp",operatorEditVo.getTargetIdentificationId());
+            updateWrapper.set("status","2");
+            updateWrapper.eq("companyNum",operatorEditVo.getCompanyNum());
+            NoCarCompanyManger noCarCompanyManger  = new NoCarCompanyManger();
+            noCarCompanyManger.setCompanyNum(operatorEditVo.getCompanyNum());
+            noCarCompanyMangerMapper.update(noCarCompanyManger,updateWrapper);
+            return new RespR("success");
+        }
+
+    }
+
+    @Override
+    public RespR operatorEditConfirm(OperatorEditConfirmVo operatorEditConfirmVo) {
+        OperatorEditConfirmRequest operatorEditConfirmRequest = new OperatorEditConfirmRequest();
+        BeanUtils.copyProperties(operatorEditConfirmVo,operatorEditConfirmRequest);
+        RespR respR = noCarInterface.operatorEditConfirm(operatorEditConfirmRequest);
+        if(respR.getCode() == 1){
+            log.error("operatorEditConfirm失败,失败原因:{}",respR.getMsg());
+            return new RespR(false,respR.getMsg());
+        }else{
+            QueryWrapper<NoCarCompanyManger> queryWrapper = new QueryWrapper<>();
+            queryWrapper.select("operatorNameTemp","operatorMobileTemp","identificationIdTemp").eq("companyNum",operatorEditConfirmVo.getCompanyNum());
+            NoCarCompanyManger noCarCompanyMangerDb = noCarCompanyMangerMapper.selectOne(queryWrapper);
+            UpdateWrapper<NoCarCompanyManger> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.set("operatorName",noCarCompanyMangerDb.getOperatorNameTemp());
+            updateWrapper.set("operatorMobile",noCarCompanyMangerDb.getOperatorMobileTemp());
+            updateWrapper.set("identificationId",noCarCompanyMangerDb.getIdentificationIdTemp());
+            updateWrapper.set("status","1");
+            updateWrapper.eq("companyNum",operatorEditConfirmVo.getCompanyNum());
+            noCarCompanyMangerMapper.update(noCarCompanyMangerDb,updateWrapper);
+            return new RespR("success");
+        }
+    }
+
+    @Override
+    public RespR operatorEvidence(OperatorEvidenceVo operatorEvidenceVo) {
+        OperatorEvidenceRequest operatorEvidenceRequest = new OperatorEvidenceRequest();
+        BeanUtils.copyProperties(operatorEvidenceVo,operatorEvidenceRequest);
+        RespR respR = noCarInterface.operatorEvidence(operatorEvidenceRequest);
+        if(respR.getCode() == 1){
+            log.error("operatorEvidence失败,失败原因:{}",respR.getMsg());
+            return new RespR(false,respR.getMsg());
+        }else{
+            UpdateWrapper<NoCarCompanyManger> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.set("contractFileName",operatorEvidenceVo.getContractFileName());
+            updateWrapper.set("base64Str",operatorEvidenceVo.getBase64Str());
+            updateWrapper.eq("companyNum",operatorEvidenceVo.getCompanyNum());
+            NoCarCompanyManger noCarCompanyManger  = new NoCarCompanyManger();
+            noCarCompanyManger.setCompanyNum(operatorEvidenceVo.getCompanyNum());
+            noCarCompanyMangerMapper.update(noCarCompanyManger,updateWrapper);
+            return new RespR("success");
+        }
+    }
+
+    @Override
+    public RespR operatorSendCode(OperatorSendCodeVo operatorSendCodeVo) {
+        OperatorSendCodeRequest operatorSendCodeRequest = new OperatorSendCodeRequest();
+        operatorSendCodeRequest.setBuyerCode(operatorSendCodeVo.getBuyerCode());
+        String companyNum = paramService.getParamsByParamName("REQUEST_COMPANY_NUM").getParamValue();
+        operatorSendCodeRequest.setCompanyNum(companyNum);
+        RespR respR = noCarInterface.operatorSendCode(operatorSendCodeRequest);
+        if(respR.getCode()==1){
+            return new RespR(false,respR.getMsg());
+        }else {
+            return new RespR("success");
+        }
+    }
+
+    @Override
+    public RespR operatorValidCode(OperatorSendCodeVo operatorSendCodeVo) {
+        OperatorValidCodeRequest operatorValidCodeRequest = new OperatorValidCodeRequest();
+        operatorValidCodeRequest.setBuyerCode(operatorSendCodeVo.getBuyerCode());
+        String companyNum = paramService.getParamsByParamName("REQUEST_COMPANY_NUM").getParamValue();
+        operatorValidCodeRequest.setCompanyNum(companyNum);
+        operatorValidCodeRequest.setValidCode(operatorSendCodeVo.getValidCode());
+        RespR respR = noCarInterface.operatorValidCode(operatorValidCodeRequest);
+        if(respR.getCode()==1){
+            return new RespR(false,respR.getMsg());
+        }else {
+            return new RespR("success");
+        }
+    }
+}

+ 12 - 0
src/main/java/com/jkcredit/invoice/service/upservice/NoCarInterface.java

@@ -1,5 +1,6 @@
 package com.jkcredit.invoice.service.upservice;
 
+import cn.com.taiji.sdk.model.comm.protocol.eoms.company.*;
 import cn.com.taiji.sdk.model.comm.protocol.tts.vehicle.VehicleQueryRequest;
 import cn.com.taiji.sdk.model.comm.protocol.tts.vehicle.VehicleQueryResponse;
 import cn.com.taiji.sdk.model.comm.protocol.tts.vehicle.VehicleRegisterRequest;
@@ -101,4 +102,15 @@ public interface NoCarInterface {
      */
     RespR<WaybillCountQueryResponse> waybillCountQuery(WaybillCountPageRequest waybillCountQueryRequest);
 
+    RespR<CompanyDetailAddResponse> companyDetailAdd(CompanyDetailAddRequest companyDetailAddRequest);
+
+    RespR<OperatorEditResponse> operatorEdit(OperatorEditRequest operatorEditRequest);
+
+    RespR<OperatorEditConfirmResponse> operatorEditConfirm(OperatorEditConfirmRequest operatorEditConfirmRequest);
+
+    RespR<OperatorEvidenceResponse> operatorEvidence(OperatorEvidenceRequest operatorEvidenceRequest);
+
+    RespR<OperatorSendCodeResponse> operatorSendCode(OperatorSendCodeRequest operatorSendCodeRequest);
+
+    RespR<OperatorValidCodeResponse> operatorValidCode(OperatorValidCodeRequest operatorValidCodeRequest);
 }

+ 140 - 17
src/main/java/com/jkcredit/invoice/service/upservice/impl/NoCarInterfaceImpl.java

@@ -2,27 +2,12 @@ package com.jkcredit.invoice.service.upservice.impl;
 
 import cn.com.taiji.common.manager.net.http.binclient.ApiRequestException;
 import cn.com.taiji.sdk.comm.ETCCommHelper;
+import cn.com.taiji.sdk.model.comm.protocol.eoms.company.*;
 import cn.com.taiji.sdk.model.comm.protocol.tts.vehicle.VehicleQueryRequest;
 import cn.com.taiji.sdk.model.comm.protocol.tts.vehicle.VehicleQueryResponse;
 import cn.com.taiji.sdk.model.comm.protocol.tts.vehicle.VehicleRegisterRequest;
 import cn.com.taiji.sdk.model.comm.protocol.tts.vehicle.VehicleRegisterResponse;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillCountPageRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillCountQueryRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillCountQueryResponse;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillEndRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillEndResponse;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillHistoryEndRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillHistoryEndResponse;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillHistoryStartRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillHistoryStartResponse;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillInvoiceRedQueryRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillInvoiceRedQueryResponse;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillNumFindInvoiceRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillNumFindInvoiceResponse;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillOriginEndRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillOriginEndResponse;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillStartRequest;
-import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.WaybillStartResponse;
+import cn.com.taiji.sdk.model.comm.protocol.tts.waybill.*;
 import com.jkcredit.invoice.service.upservice.NoCarInterface;
 import com.jkcredit.invoice.util.DateUtil;
 import com.jkcredit.invoice.util.RespR;
@@ -294,4 +279,142 @@ public class NoCarInterfaceImpl implements NoCarInterface {
             return new RespR(false, apie.getMessage());
         }
     }
+
+    @Override
+    public RespR<CompanyDetailAddResponse> companyDetailAdd(CompanyDetailAddRequest companyDetailAddRequest) {
+        String fileName = companyDetailAddRequest.getFilename();
+        long startTime = System.currentTimeMillis();
+
+        try {
+            log.info("NoCarInterfaceImpl.companyDetailAddRequest上游请求参数:{}", companyDetailAddRequest.toString());
+            //(4)指定协议的响应模型(IssuerUploadResponse),调用upload 发送数据
+            CompanyDetailAddResponse response = ETCCommHelper.upload(fileName, companyDetailAddRequest, CompanyDetailAddResponse.class);
+            log.info("NoCarInterfaceImpl.companyDetailAddRequest上游接口返回:{},请求参数:{},cost={}ms", response.toString(), companyDetailAddRequest.toString(), System.currentTimeMillis() - startTime);
+
+            return new RespR<>(response);
+        } catch (IOException e) {
+            log.error(e.getMessage() + " ,请求参数:" + companyDetailAddRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            e.printStackTrace();
+            return new RespR(false, "网络异常,请联系管理人员");
+        } catch (ApiRequestException apie) {
+            log.error(apie.getMessage().replaceAll("[\r\n]", "") + " ,请求参数:" + companyDetailAddRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            apie.printStackTrace();
+            return new RespR(false, apie.getMessage());
+        }
+    }
+
+    @Override
+    public RespR<OperatorEditResponse> operatorEdit(OperatorEditRequest operatorEditRequest) {
+        String fileName = operatorEditRequest.getFilename();
+        long startTime = System.currentTimeMillis();
+
+        try {
+            log.info("NoCarInterfaceImpl.operatorEditRequest上游请求参数:{}", operatorEditRequest.toString());
+            //(4)指定协议的响应模型(IssuerUploadResponse),调用upload 发送数据
+            OperatorEditResponse response = ETCCommHelper.upload(fileName, operatorEditRequest, OperatorEditResponse.class);
+            log.info("NoCarInterfaceImpl.operatorEditRequest上游接口返回:{},请求参数:{},cost={}ms", response.toString(), operatorEditRequest.toString(), System.currentTimeMillis() - startTime);
+
+            return new RespR<>(response);
+        } catch (IOException e) {
+            log.error(e.getMessage() + " ,请求参数:" + operatorEditRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            e.printStackTrace();
+            return new RespR(false, "网络异常,请联系管理人员");
+        } catch (ApiRequestException apie) {
+            log.error(apie.getMessage().replaceAll("[\r\n]", "") + " ,请求参数:" + operatorEditRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            apie.printStackTrace();
+            return new RespR(false, apie.getMessage());
+        }
+    }
+
+    @Override
+    public RespR<OperatorEditConfirmResponse> operatorEditConfirm(OperatorEditConfirmRequest operatorEditConfirmRequest) {
+        String fileName = operatorEditConfirmRequest.getFilename();
+        long startTime = System.currentTimeMillis();
+
+        try {
+            log.info("NoCarInterfaceImpl.operatorEditConfirmRequest上游请求参数:{}", operatorEditConfirmRequest.toString());
+            //(4)指定协议的响应模型(IssuerUploadResponse),调用upload 发送数据
+            OperatorEditConfirmResponse response = ETCCommHelper.upload(fileName, operatorEditConfirmRequest, OperatorEditConfirmResponse.class);
+            log.info("NoCarInterfaceImpl.operatorEditConfirmRequest上游接口返回:{},请求参数:{},cost={}ms", response.toString(), operatorEditConfirmRequest.toString(), System.currentTimeMillis() - startTime);
+
+            return new RespR<>(response);
+        } catch (IOException e) {
+            log.error(e.getMessage() + " ,请求参数:" + operatorEditConfirmRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            e.printStackTrace();
+            return new RespR(false, "网络异常,请联系管理人员");
+        } catch (ApiRequestException apie) {
+            log.error(apie.getMessage().replaceAll("[\r\n]", "") + " ,请求参数:" + operatorEditConfirmRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            apie.printStackTrace();
+            return new RespR(false, apie.getMessage());
+        }
+    }
+
+    @Override
+    public RespR<OperatorEvidenceResponse> operatorEvidence(OperatorEvidenceRequest operatorEvidenceRequest) {
+        String fileName = operatorEvidenceRequest.getFilename();
+        long startTime = System.currentTimeMillis();
+
+        try {
+            log.info("NoCarInterfaceImpl.operatorEvidenceRequest上游请求参数:{}", operatorEvidenceRequest.toString());
+            //(4)指定协议的响应模型(IssuerUploadResponse),调用upload 发送数据
+            OperatorEvidenceResponse response = ETCCommHelper.upload(fileName, operatorEvidenceRequest, OperatorEvidenceResponse.class);
+            log.info("NoCarInterfaceImpl.operatorEvidenceRequest上游接口返回:{},请求参数:{},cost={}ms", response.toString(), operatorEvidenceRequest.toString(), System.currentTimeMillis() - startTime);
+
+            return new RespR<>(response);
+        } catch (IOException e) {
+            log.error(e.getMessage() + " ,请求参数:" + operatorEvidenceRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            e.printStackTrace();
+            return new RespR(false, "网络异常,请联系管理人员");
+        } catch (ApiRequestException apie) {
+            log.error(apie.getMessage().replaceAll("[\r\n]", "") + " ,请求参数:" + operatorEvidenceRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            apie.printStackTrace();
+            return new RespR(false, apie.getMessage());
+        }
+    }
+
+    @Override
+    public RespR<OperatorSendCodeResponse> operatorSendCode(OperatorSendCodeRequest operatorSendCodeRequest) {
+        String fileName = operatorSendCodeRequest.getFilename();
+        long startTime = System.currentTimeMillis();
+
+        try {
+            log.info("NoCarInterfaceImpl.operatorSendCodeRequest上游请求参数:{}", operatorSendCodeRequest.toString());
+            //(4)指定协议的响应模型(IssuerUploadResponse),调用upload 发送数据
+            OperatorSendCodeResponse response = ETCCommHelper.upload(fileName, operatorSendCodeRequest, OperatorSendCodeResponse.class);
+            log.info("NoCarInterfaceImpl.operatorSendCodeRequest上游接口返回:{},请求参数:{},cost={}ms", response.toString(), operatorSendCodeRequest.toString(), System.currentTimeMillis() - startTime);
+
+            return new RespR<>(response);
+        } catch (IOException e) {
+            log.error(e.getMessage() + " ,请求参数:" + operatorSendCodeRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            e.printStackTrace();
+            return new RespR(false, "网络异常,请联系管理人员");
+        } catch (ApiRequestException apie) {
+            log.error(apie.getMessage().replaceAll("[\r\n]", "") + " ,请求参数:" + operatorSendCodeRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            apie.printStackTrace();
+            return new RespR(false, apie.getMessage());
+        }
+    }
+
+    @Override
+    public RespR<OperatorValidCodeResponse> operatorValidCode(OperatorValidCodeRequest operatorValidCodeRequest) {
+        String fileName = operatorValidCodeRequest.getFilename();
+        long startTime = System.currentTimeMillis();
+
+        try {
+            log.info("NoCarInterfaceImpl.operatorValidCodeRequest上游请求参数:{}", operatorValidCodeRequest.toString());
+            //(4)指定协议的响应模型(IssuerUploadResponse),调用upload 发送数据
+            OperatorValidCodeResponse response = ETCCommHelper.upload(fileName, operatorValidCodeRequest, OperatorValidCodeResponse.class);
+            log.info("NoCarInterfaceImpl.operatorValidCodeRequest上游接口返回:{},请求参数:{},cost={}ms", response.toString(), operatorValidCodeRequest.toString(), System.currentTimeMillis() - startTime);
+
+            return new RespR<>(response);
+        } catch (IOException e) {
+            log.error(e.getMessage() + " ,请求参数:" + operatorValidCodeRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            e.printStackTrace();
+            return new RespR(false, "网络异常,请联系管理人员");
+        } catch (ApiRequestException apie) {
+            log.error(apie.getMessage().replaceAll("[\r\n]", "") + " ,请求参数:" + operatorValidCodeRequest.toString() + " ,cost=" + (System.currentTimeMillis() - startTime) + "ms");
+            apie.printStackTrace();
+            return new RespR(false, apie.getMessage());
+        }
+    }
 }