|
|
package com.nmgs.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.nmgs.mapperset.oraclemapper.*;
|
|
|
import com.nmgs.mapperset.mysqlmapper.UserVehicleMyMapper;
|
|
|
import com.nmgs.mapperset.oraclemapper.UserVehicleMapper;
|
|
|
import com.nmgs.service.UserVehicleService;
|
|
|
import com.nmgs.util.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@Service
|
|
|
public class UserVehicleServiceImpl implements UserVehicleService {
|
|
|
|
|
|
@Autowired
|
|
|
public Mapper mapperI;
|
|
|
public UserVehicleMapper userVehicleMapper;
|
|
|
@Autowired
|
|
|
public void setUserVehicleMapper(UserVehicleMapper userVehicleMapper) {
|
|
|
this.userVehicleMapper = userVehicleMapper;
|
|
|
}
|
|
|
public UserVehicleMyMapper userVehicleMyMapper;
|
|
|
@Autowired
|
|
|
public void setUserVehicleMyMapper(UserVehicleMyMapper userVehicleMyMapper) {
|
|
|
this.userVehicleMyMapper = userVehicleMyMapper;
|
|
|
}
|
|
|
|
|
|
private static String DBType= PropertiesUtil.getValue("DBType");
|
|
|
private static String sql="select " +
|
|
|
" uvt.USERID ,CONCAT(substr( uvt.ACARNO, 1,instr(uvt.ACARNO,'_')-1) || '_',(select text from PLATECOLOR_TEXT where value=substr( uvt.ACARNO, instr(uvt.ACARNO,'_')+1))) AS ACARNONAME ,uvt.CHECKUSERNAME ,uvt.CHECKUSERNUMBER ," +
|
|
|
" uvt.ACARNO," +
|
|
|
" uvt.UNPASSINFO," +
|
|
|
" uvt.CERTIFICATION," +
|
|
|
" to_char(uvt.CREATETIME,'YYYY-MM-DD HH24:MI:SS') AS CREATETIME,to_char(uvt.CANCELTIME,'YYYY-MM-DD HH24:MI:SS') AS CANCELTIME," +
|
|
|
" uvt.BAK1,uvt.BAK2,uvt.BAK3,COALESCE(uvt.REFERRERCODE,'') AS REFERRERCODE," +
|
|
|
" cst.VALUE as CERTIFICATIONNAME" +
|
|
|
" from user_vehicle_table uvt " +
|
|
|
" left join certification_status_text cst on(uvt.CERTIFICATION = cst.ID)" +
|
|
|
" left join WEIXN_USER_TABLE ut on(uvt.USERID = ut.ID)" +
|
|
|
" where 1=1 ";
|
|
|
static{
|
|
|
if("4".equals(DBType)){
|
|
|
sql="select " +
|
|
|
" uvt.USERID ,CONCAT(substr( uvt.ACARNO, 1,instr(uvt.ACARNO,'_')-1) , '_',(select text from PLATECOLOR_TEXT where value=substr( uvt.ACARNO, instr(uvt.ACARNO,'_')+1))) AS ACARNONAME ,uvt.CHECKUSERNAME ,uvt.CHECKUSERNUMBER ," +
|
|
|
" uvt.ACARNO," +
|
|
|
" uvt.UNPASSINFO," +
|
|
|
" uvt.CERTIFICATION," +
|
|
|
" date_format(uvt.CREATETIME,'%Y-%m-%d %H:%i:%s') AS CREATETIME," +
|
|
|
" date_format(uvt.CANCELTIME,'%Y-%m-%d %H:%i:%s') AS CANCELTIME," +
|
|
|
" uvt.BAK1,uvt.BAK2,uvt.BAK3,COALESCE(uvt.REFERRERCODE,'') AS REFERRERCODE," +
|
|
|
" cst.VALUE as CERTIFICATIONNAME" +
|
|
|
" from user_vehicle_table uvt " +
|
|
|
" left join certification_status_text cst on(uvt.CERTIFICATION = cst.ID)" +
|
|
|
" left join WEIXN_USER_TABLE ut on(uvt.USERID = ut.ID)" +
|
|
|
" where 1=1 ";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@Override
|
|
|
public List getUserVehicleByUserId(String userId, String certification) {
|
|
|
List list=null;
|
|
|
List retlist=new ArrayList();
|
|
|
String sqlTemp=sql;
|
|
|
try{
|
|
|
sqlTemp += " and ut.OPENID = '"+userId+"'";
|
|
|
if(!PubTools.isNull(certification)){
|
|
|
sqlTemp += " and uvt.CERTIFICATION in ("+certification+")";
|
|
|
}
|
|
|
retlist= this.mapperI.selectforlist(sqlTemp);
|
|
|
}catch (Exception e){
|
|
|
LogUtil.WriteLog_Error("根据用户id查询车牌失败===>"+e.getMessage(),"UserVehicleServiceImpl");
|
|
|
return retlist=null;
|
|
|
}
|
|
|
return retlist;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(value = "transactionManager")
|
|
|
public int addUserVehicle(JSONArray jsonArray) {
|
|
|
int ret=1;
|
|
|
String currentDate=PubTools.getCurrentDate();
|
|
|
if(jsonArray.size()>0){
|
|
|
String CREATETIME=PubTools.getCurrentDate() ;
|
|
|
JSONObject joTemp= (JSONObject)jsonArray.get(0);
|
|
|
//校验用户已经绑定几辆车
|
|
|
String userid = joTemp.get("USERID").toString();
|
|
|
String sqlTempO=sql;
|
|
|
|
|
|
sqlTempO += " and ut.OPENID = '"+userid+"' AND uvt.CERTIFICATION not in(4)";
|
|
|
List list0= this.mapperI.selectforlist(sqlTempO);
|
|
|
if(list0.size()>=3){
|
|
|
ret=4;//人员最多绑定三辆车
|
|
|
return ret;
|
|
|
}
|
|
|
for(Object obj:jsonArray){
|
|
|
JSONObject jo= (JSONObject)obj;
|
|
|
String userId=jo.get("USERID").toString();
|
|
|
String aCarNo=jo.get("ACARNO").toString() ;
|
|
|
//验证是否已经存在数据
|
|
|
String sqlTemp=sql;
|
|
|
sqlTemp=sql;//本月是否解绑过
|
|
|
// sqlTemp += " and ut.OPENID = '"+userId+"' AND ACARNO='"+aCarNo+"' AND uvt.CERTIFICATION in(4) AND to_char(uvt.CANCELTIME,'YYYY-MM') = substr('"+currentDate+"',1,7)";
|
|
|
if("2".equals(DBType)){
|
|
|
sqlTemp += " AND ACARNO='"+aCarNo+"' AND uvt.CERTIFICATION in(4) AND to_char(uvt.CANCELTIME,'YYYY-MM') = substr('"+currentDate+"',1,7)";
|
|
|
}
|
|
|
if("4".equals(DBType)){
|
|
|
sqlTemp += " AND ACARNO='"+aCarNo+"' AND uvt.CERTIFICATION in(4) AND date_format(uvt.CANCELTIME,'%Y-%m-%d') = substr('"+currentDate+"',1,7)";
|
|
|
}
|
|
|
List listNew= this.mapperI.selectforlist(sqlTemp);
|
|
|
if(listNew.size()>0){
|
|
|
ret=3;//车辆在本月进行解绑,下个月才可以继续绑定
|
|
|
break;
|
|
|
}
|
|
|
sqlTemp=sql;
|
|
|
//sqlTemp += " and ut.OPENID = '"+userId+"' AND ACARNO='"+aCarNo+"' AND uvt.CERTIFICATION not in(4)";
|
|
|
sqlTemp += " AND ACARNO='"+aCarNo+"' AND uvt.CERTIFICATION not in(4)";
|
|
|
List list= this.mapperI.selectforlist(sqlTemp);
|
|
|
if(list.size()>0){
|
|
|
ret=2;//车辆信息已经存在
|
|
|
break;
|
|
|
}
|
|
|
/* String sqlTemp2="insert into user_vehicle_table(USERID,ACARNO,CREATETIME,CERTIFICATION) " +
|
|
|
" values((SELECT ID FROM WEIXN_USER_TABLE WHERE OPENID='"+userId+"'),'"+aCarNo+"',to_date('"+CREATETIME+"','YYYY-MM-DD HH24:MI:SS'),0) ";
|
|
|
if("4".equals(DBType)){
|
|
|
sqlTemp2="insert into user_vehicle_table(USERID,ACARNO,CREATETIME,CERTIFICATION) " +
|
|
|
" values((SELECT ID FROM WEIXN_USER_TABLE WHERE OPENID='"+userId+"'),'"+aCarNo+"',str_to_date('"+CREATETIME+"','%Y-%m-%d %H:%i:%s'),0) ";
|
|
|
}*/
|
|
|
Map<String,Object> params=new HashMap<>();
|
|
|
params.put("DBTYPE",DBType);
|
|
|
params.put("openid",userId);
|
|
|
params.put("aCarNo",aCarNo);
|
|
|
params.put("createTime",CREATETIME);
|
|
|
params.put("certification",0);
|
|
|
// this.mapperI.insert(sqlTemp2);
|
|
|
ret=userVehicleMapper.addUserVehicle(params);
|
|
|
if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) {
|
|
|
String bakDBType = PropertiesUtil.getValue("BakDBType");
|
|
|
params.put("DBTYPEBAK",bakDBType);
|
|
|
userVehicleMyMapper.addUserVehicle(params);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(value = "transactionManager")
|
|
|
public int cancelUserVehicle(String userId, String aCarNo) {
|
|
|
int ret=1;
|
|
|
String CREATETIME=PubTools.getCurrentDate() ;
|
|
|
//20250801 用户冻结或者积分是负数,则不让解绑
|
|
|
String sqlQueryUser = "SELECT OPENID from weixn_user_table wut where wut.ID=" + userId + " and (wut.ENABLEINTEGRATION <0 or wut.OGENABLEINTEGRATION <0 or wut.CPENABLEINTEGRATION <0 or wut.CERTIFICATION =5)";
|
|
|
List selectforlistUser = this.mapperI.selectforlist(sqlQueryUser);
|
|
|
if (!selectforlistUser.isEmpty()) {
|
|
|
return -2;
|
|
|
|
|
|
}
|
|
|
String sqlQuery = "SELECT uvt.USERID,uvt.ACARNO,uvt.CERTIFICATION,uvt.PERMITPICNAME ,uvt.VEHICLEPICNAME ,uvt.LICENSEPICNAME from user_vehicle_table uvt where uvt.USERID=" + userId + " and uvt.ACARNO='" + aCarNo + "' AND uvt.CERTIFICATION not in(4)";
|
|
|
List selectforlist = this.mapperI.selectforlist(sqlQuery);
|
|
|
if(selectforlist.size()>0){
|
|
|
Map<String, Object> obj1 = (Map<String, Object>)selectforlist.get(0);
|
|
|
String certification = obj1.get("CERTIFICATION").toString();
|
|
|
if (Integer.parseInt(certification) != 1) {
|
|
|
Map<String,Object> params=new HashMap<>();
|
|
|
params.put("DBTYPE",DBType);
|
|
|
params.put("userId",userId);
|
|
|
params.put("aCarNo",aCarNo);
|
|
|
params.put("commonCondition","CERTIFICATION not in(1,4)");
|
|
|
ret=this.userVehicleMapper.delUserVehcile(params);
|
|
|
if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) {
|
|
|
String bakDBType = PropertiesUtil.getValue("BakDBType");
|
|
|
params.put("DBTYPEBAK",bakDBType);
|
|
|
ret=userVehicleMyMapper.delUserVehcile(params);
|
|
|
}
|
|
|
/* if (!PubTools.isEmpty(obj1.get("PERMITPICNAME"))) {
|
|
|
//需要删除附件
|
|
|
ImageUtils.delFile(obj1.get("PERMITPICNAME").toString(), true);
|
|
|
}
|
|
|
if (!PubTools.isEmpty(obj1.get("VEHICLEPICNAME"))) {
|
|
|
//需要删除附件
|
|
|
ImageUtils.delFile(obj1.get("VEHICLEPICNAME").toString(), true);
|
|
|
}
|
|
|
if (!PubTools.isEmpty(obj1.get("LICENSEPICNAME"))) {
|
|
|
//需要删除附件
|
|
|
ImageUtils.delFile(obj1.get("LICENSEPICNAME").toString(), true);
|
|
|
}*/
|
|
|
}else{
|
|
|
Map<String,Object> params=new HashMap<>();
|
|
|
params.put("DBTYPE",DBType);
|
|
|
params.put("certification",4);
|
|
|
params.put("cancelTime",PubTools.getCurrentDate());
|
|
|
params.put("userId",userId);
|
|
|
params.put("aCarNo",aCarNo);
|
|
|
params.put("commonCondition","CERTIFICATION=1");
|
|
|
ret=this.userVehicleMapper.updateUserVehicle(params);
|
|
|
if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) {
|
|
|
String bakDBType = PropertiesUtil.getValue("BakDBType");
|
|
|
params.put("DBTYPEBAK",bakDBType);
|
|
|
ret=userVehicleMyMapper.updateUserVehicle(params);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return ret;
|
|
|
}
|
|
|
@Override
|
|
|
public List getUserVehicle(String userId, String aCarNo) {
|
|
|
List ret=null;
|
|
|
List retlist=new ArrayList();
|
|
|
try{
|
|
|
String sqlTemp="select " +
|
|
|
" uvt.USERID ,CONCAT(substr( uvt.ACARNO, 1,instr(uvt.ACARNO,'_')-1) || '_',(select text from PLATECOLOR_TEXT where value=substr( uvt.ACARNO, instr(uvt.ACARNO,'_')+1))) AS ACARNONAME ,uvt.CHECKUSERNAME ,uvt.CHECKUSERNUMBER ," +
|
|
|
" uvt.ACARNO,uvt.LICENSEPIC AS LICENSEPIC," +
|
|
|
" uvt.PERMITPIC AS PERMITPIC," +
|
|
|
" uvt.VEHICLEPIC AS VEHICLEPIC," +
|
|
|
" uvt.PERMITPICNAME AS PERMITPICNAME," +
|
|
|
" uvt.VEHICLEPICNAME AS VEHICLEPICNAME," +
|
|
|
" uvt.LICENSEPICNAME AS LICENSEPICNAME," +
|
|
|
" (SELECT IPS.BAK1 FROM INTEGRAL_PUBLIC_SET ips WHERE IPS.PARAMCODE='PICURL') AS PICURL," +
|
|
|
" uvt.CERTIFICATION," +
|
|
|
" uvt.UNPASSINFO," +
|
|
|
" COALESCE(uvt.REFERRERCODE,'') AS REFERRERCODE," +
|
|
|
" to_char(uvt.CREATETIME,'YYYY-MM-DD HH24:MI:SS') AS CREATETIME,to_char(uvt.CANCELTIME,'YYYY-MM-DD HH24:MI:SS') AS CANCELTIME," +
|
|
|
" uvt.BAK1,uvt.BAK2,uvt.BAK3," +
|
|
|
" cst.VALUE as CERTIFICATIONNAME" +
|
|
|
" from user_vehicle_table uvt " +
|
|
|
" left join certification_status_text cst on(uvt.CERTIFICATION = cst.ID)" +
|
|
|
" left join WEIXN_USER_TABLE ut on(uvt.USERID = ut.ID)" +
|
|
|
" where 1=1 AND uvt.USERID="+userId+" and uvt.ACARNO='"+aCarNo+"'";
|
|
|
|
|
|
if("4".equals(DBType)){
|
|
|
sqlTemp="select " +
|
|
|
" uvt.USERID ,CONCAT(substr( uvt.ACARNO, 1,instr(uvt.ACARNO,'_')-1) , '_',(select text from PLATECOLOR_TEXT where value=substr( uvt.ACARNO, instr(uvt.ACARNO,'_')+1))) AS ACARNONAME ,uvt.CHECKUSERNAME ,uvt.CHECKUSERNUMBER ," +
|
|
|
" uvt.ACARNO,uvt.LICENSEPIC AS LICENSEPIC," +
|
|
|
" uvt.PERMITPIC AS PERMITPIC," +
|
|
|
" uvt.VEHICLEPIC AS VEHICLEPIC," +
|
|
|
" uvt.PERMITPICNAME AS PERMITPICNAME," +
|
|
|
" uvt.VEHICLEPICNAME AS VEHICLEPICNAME," +
|
|
|
" uvt.LICENSEPICNAME AS LICENSEPICNAME," +
|
|
|
" (SELECT IPS.BAK1 FROM INTEGRAL_PUBLIC_SET ips WHERE IPS.PARAMCODE='PICURL') AS PICURL," +
|
|
|
" uvt.CERTIFICATION," +
|
|
|
" uvt.UNPASSINFO," +
|
|
|
" COALESCE(uvt.REFERRERCODE,'') AS REFERRERCODE," +
|
|
|
" date_format(uvt.CREATETIME,'%Y-%m-%d %H:%i:%s') AS CREATETIME," +
|
|
|
" date_format(uvt.CANCELTIME,'%Y-%m-%d %H:%i:%s') AS CANCELTIME," +
|
|
|
" uvt.BAK1,uvt.BAK2,uvt.BAK3," +
|
|
|
" cst.VALUE as CERTIFICATIONNAME" +
|
|
|
" from user_vehicle_table uvt " +
|
|
|
" left join certification_status_text cst on(uvt.CERTIFICATION = cst.ID)" +
|
|
|
" left join WEIXN_USER_TABLE ut on(uvt.USERID = ut.ID)" +
|
|
|
" where 1=1 AND uvt.USERID="+userId+" and uvt.ACARNO='"+aCarNo+"'";
|
|
|
}
|
|
|
ret= this.mapperI.selectforlist(sqlTemp);
|
|
|
if(ret.size()>0){
|
|
|
for(Object obj:ret){
|
|
|
Map<String, Object> obj1 = (Map<String, Object>) obj;
|
|
|
Object o=obj1.get("LICENSEPIC");
|
|
|
Object oP=obj1.get("PERMITPIC");
|
|
|
Object oV=obj1.get("VEHICLEPIC");
|
|
|
String s = PubTools.ClobToString(o);
|
|
|
if(!PubTools.isNull(s)){
|
|
|
obj1.remove("LICENSEPIC");
|
|
|
obj1.put("LICENSEPIC", s);
|
|
|
}
|
|
|
String s2 = PubTools.ClobToString(oP);
|
|
|
if(!PubTools.isNull(s2)){
|
|
|
obj1.remove("PERMITPIC");
|
|
|
obj1.put("PERMITPIC",s2);
|
|
|
}
|
|
|
String s3 = PubTools.ClobToString(oV);
|
|
|
if(!PubTools.isNull(s3)){
|
|
|
obj1.remove("VEHICLEPIC");
|
|
|
obj1.put("VEHICLEPIC",s);
|
|
|
}
|
|
|
retlist.add(obj1);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}catch (Exception e){
|
|
|
LogUtil.WriteLog_Error("根据用户id和车牌号查询车辆信息失败===>"+e.getMessage(),"UserVehicleServiceImpl");
|
|
|
return retlist=new ArrayList();
|
|
|
}
|
|
|
return retlist;
|
|
|
}
|
|
|
@Override
|
|
|
@Transactional(value = "transactionManager")
|
|
|
public int updateUserVehicle(String userId,String aCarNo,String checkName,String checkUserNumber,String licensepic,
|
|
|
String permitpic,String vehiclePic,String certification,String referrerCode) {
|
|
|
int ret=1;
|
|
|
String fileNamePre = userId + "-" + aCarNo + "-";
|
|
|
String fileNameAfter = ".jpg";
|
|
|
/*//图片加水印
|
|
|
if (!PubTools.isNull(permitpic) && !permitpic.contains("PERPIC")) {
|
|
|
String permitpicPic = ImageUtils.addImageWaterMark(permitpic, "仅用于内蒙古交通货运车辆积分会员认证", fileNamePre + "PERPIC" + fileNameAfter);
|
|
|
if(!PubTools.isNull(permitpicPic)){
|
|
|
permitpic=permitpicPic;
|
|
|
}
|
|
|
}*/
|
|
|
//20250324 修改审批状态,根据OCR自动识别,姓名
|
|
|
if (PubTools.getEnabledOcr() == 1) {
|
|
|
String picUrl = PubTools.HTTPS + PubTools.getCurrentDateYMD() + "/" + fileNamePre + "PERPIC" + fileNameAfter;
|
|
|
JSONObject idCard = OcrUtil.getAllText(picUrl, "VehicleLicense");
|
|
|
String status = idCard.get("status").toString();
|
|
|
if ("error".equals(status)) {
|
|
|
ret = -98;
|
|
|
return ret;
|
|
|
}
|
|
|
JSONObject data = (JSONObject) idCard.get("data");
|
|
|
String name = data.get("name").toString();
|
|
|
if (!PubTools.isNull(checkName) && name.equals(checkName)) {
|
|
|
certification = "1";
|
|
|
ret = 100;
|
|
|
}
|
|
|
}
|
|
|
Map<String,Object> params=new HashMap<>();
|
|
|
params.put("DBTYPE",DBType);
|
|
|
params.put("certification",certification);
|
|
|
params.put("createTime",PubTools.getCurrentDate());
|
|
|
params.put("licensepic",PubTools.getCurrentDateYMD() + "/" + fileNamePre + "LICPIC" + fileNameAfter);
|
|
|
params.put("permitpic",PubTools.getCurrentDateYMD() + "/" + fileNamePre + "PERPIC" + fileNameAfter);
|
|
|
params.put("vehiclePic",PubTools.getCurrentDateYMD() + "/" + fileNamePre + "VEHPIC" + fileNameAfter);
|
|
|
params.put("referrerCode",referrerCode);
|
|
|
params.put("checkName",referrerCode);
|
|
|
params.put("userId",userId);
|
|
|
params.put("aCarNo",aCarNo);
|
|
|
if (!PubTools.isNull(checkUserNumber) && !checkUserNumber.contains("*")) {
|
|
|
params.put("checkUserNumber",checkUserNumber);
|
|
|
}
|
|
|
params.put("commonCondition","CERTIFICATION not in(4)");
|
|
|
//this.mapperI.insert(sql);
|
|
|
ret = userVehicleMapper.updateUserVehicle(params);
|
|
|
if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) {
|
|
|
String bakDBType = PropertiesUtil.getValue("BakDBType");
|
|
|
params.put("DBTYPEBAK",bakDBType);
|
|
|
ret=userVehicleMyMapper.updateUserVehicle(params);
|
|
|
}
|
|
|
return ret;
|
|
|
}
|
|
|
}
|