You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

349 lines
18 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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