|
@@ -0,0 +1,425 @@
|
|
|
+package com.hb.proj.car.service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import com.hb.proj.car.quota.QuotaType;
|
|
|
+import com.hb.proj.input.controller.InputDateLimit;
|
|
|
+import com.hb.proj.utils.CodeConstant;
|
|
|
+import com.hb.proj.utils.RptMonthUtil;
|
|
|
+import com.hb.xframework.dao.core.SpringJdbcDAO;
|
|
|
+import com.hb.xframework.dao.util.FieldAttrConverter;
|
|
|
+import com.hb.xframework.dao.util.PageModel;
|
|
|
+import com.hb.xframework.dao.util.UUIDHexGenerator;
|
|
|
+import com.hb.xframework.util.DateUtil;
|
|
|
+import com.hb.xframework.util.MapUtils;
|
|
|
+/**
|
|
|
+ * loadCarObjMapping,loadCarForInput 两个方法分别用于导入数据车辆数据转换、通过界面上报 时,
|
|
|
+ * 加载车辆基本信息(oil_type,device_name,quota_rule_id,quota_alternator_id)这些信息是必要信息设计定额的相关计算
|
|
|
+ * 且已定额表的数据为准,车辆信息表中的对应数据不再使用
|
|
|
+ * @author hb
|
|
|
+ *
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class CarService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SpringJdbcDAO dao;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分类统计车辆数量:汽油车、柴油车、报废车
|
|
|
+ * @param orgAssistCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String,Object> rptCarCount(String orgAssistCode){
|
|
|
+ List<Object> sqlParams=new ArrayList<Object>();
|
|
|
+ StringBuilder sql=new StringBuilder(300);
|
|
|
+ sql.append("select type,count(1) car_count from ( ");
|
|
|
+ sql.append(" select (case when c.oil_type='汽油' and c.discard_if=0 then 'oil' when c.oil_type='柴油' and c.discard_if=0 then 'coil' ");
|
|
|
+ sql.append(" when c.discard_if=1 then 'discard' end) type ");
|
|
|
+ sql.append(" from t_car c ");
|
|
|
+ if(StringUtils.isNotEmpty(orgAssistCode)){
|
|
|
+ sql.append(" where exists (select org_id from t_org g2 where g2.org_id=c.belong_org and g2.assist_code like ?) ");
|
|
|
+ sqlParams.add(orgAssistCode+"%");
|
|
|
+ }
|
|
|
+ sql.append(" )tab group by type ");
|
|
|
+ return dao.queryForMapping(sql.toString(), "type", "car_count", sqlParams.size()>0?sqlParams.toArray():null);
|
|
|
+ }
|
|
|
+
|
|
|
+ public PageModel<Map<String,Object>> queryCar(Map<String,Object> args,Set<String> authAssistCodes,int pageNo,int pageSize){
|
|
|
+ boolean showAll=args!=null&&"1".equals(args.get("showAll")) ;//是否明确显示全部含报废车辆
|
|
|
+ List<Object> sqlParams=new ArrayList<Object>();
|
|
|
+ StringBuilder sql=new StringBuilder(100);
|
|
|
+ sql.append("select * from (");
|
|
|
+ sql.append("select g.assist_code,g.org_name belong_org_name,d1.code_name coil_car_type_name, DATE_FORMAT(work_start,'%Y-%m') wk_start,");
|
|
|
+ sql.append(" t.car_num,t.custom_num,t.car_id,t.discard_if,");
|
|
|
+ sql.append(" r.oil_type,r.device_name,r.device_model,r.quota_power,r2.device_model alternator_model_name");
|
|
|
+ sql.append(" from t_car t ");
|
|
|
+ sql.append(" left join t_org g on t.belong_org=g.org_id ");
|
|
|
+ sql.append(" left join t_sort_code d1 on t.coil_car_type=d1.code_id ");
|
|
|
+ //sql.append(" left join t_oil_box b on t.oil_box_id=b.record_id");
|
|
|
+ sql.append(" left join t_quota_rule r on t.quota_rule_id=r.record_id");
|
|
|
+ sql.append(" left join t_quota_rule r2 on t.quota_alternator_id=r2.record_id and r2.quota_type='车载发电机每小时耗油'");
|
|
|
+ sql.append(" ) tab where 1=1 ");
|
|
|
+ if(!showAll){ //并非显示全部,则去掉报废车
|
|
|
+ sql.append(" and discard_if=0 ");
|
|
|
+ }
|
|
|
+ if(args!=null&&StringUtils.isNotEmpty((String)args.get("deviceKey"))){
|
|
|
+ String[] dns=((String)args.get("deviceKey")).split("[,,;;\\-~\\|\\s]+");
|
|
|
+ if(dns.length>1){ //两个参数
|
|
|
+ sql.append(" and ((device_name like ? and device_model like ?) or (device_name like ? and device_model like ?))");
|
|
|
+ sqlParams.add("%"+dns[0]+"%");
|
|
|
+ sqlParams.add("%"+dns[1]+"%");
|
|
|
+ sqlParams.add("%"+dns[1]+"%");
|
|
|
+ sqlParams.add("%"+dns[0]+"%");
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ sql.append(" and (device_name like ? or device_model like ?)");
|
|
|
+ sqlParams.add("%"+dns[0]+"%");
|
|
|
+ sqlParams.add("%"+dns[0]+"%");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(args!=null&&StringUtils.isNotEmpty((String)args.get("carOrCustomNum"))){
|
|
|
+ sql.append(" and (car_num like ? or custom_num like ?)");
|
|
|
+ sqlParams.add("%"+args.get("carOrCustomNum")+"%");
|
|
|
+ sqlParams.add("%"+args.get("carOrCustomNum")+"%");
|
|
|
+ }
|
|
|
+ if(args!=null&&StringUtils.isNotEmpty((String)args.get("belongOrg"))){ //入参belongOrg为assistCode
|
|
|
+ sql.append(" and assist_code like ?");
|
|
|
+ sqlParams.add(args.get("belongOrg")+"%");
|
|
|
+ }
|
|
|
+ if(authAssistCodes!=null){ //权限过滤 单位assistCode
|
|
|
+ sql.append(getPartSQL(authAssistCodes,sqlParams));
|
|
|
+ }
|
|
|
+ //客户端指定排序规则
|
|
|
+ if(args!=null&&StringUtils.isNotEmpty((String)args.get("sortField"))){
|
|
|
+ String sortField=FieldAttrConverter.getFieldName((String)args.get("sortField"));
|
|
|
+ sql.append(" order by "+sortField+" "+(args.get("sortAction")==null?"asc":args.get("sortAction")));
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ sql.append(" order by custom_num,car_num");
|
|
|
+ }
|
|
|
+ Object[] sqlArgs=sqlParams.size()>0?sqlParams.toArray():null;
|
|
|
+ return dao.queryForPagedListMap(sql.toString(),pageNo, pageSize,sqlArgs);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取可以上报的车辆(上报月份内没有报废或报废时间在上报月份内或之后;
|
|
|
+ * 转入时间<inputMonth+1
|
|
|
+ * 转出时间>=inputMonth
|
|
|
+ * )
|
|
|
+ * 用于上报界面、上报模板生成
|
|
|
+ * 2020.11.2最新要求:当月报废当月就不再出现
|
|
|
+ * 2021.10.28 按统计月份的划分日期进行判断(默认16号,已实际配置为准)
|
|
|
+ * (定额计算设计到:quota_alternator_id,quota_rule_id,device_name,oil_type 这些信息以定额标准表中的为准)
|
|
|
+ *
|
|
|
+ * @param carOrCustomNum
|
|
|
+ * @param inputMonth
|
|
|
+ * @param authAssistCodes
|
|
|
+ * @param pageNo
|
|
|
+ * @param pageSize
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public PageModel<Map<String,Object>> loadCarForInput(String carOrCustomNum,String inputMonth,Set<String> authAssistCodes,int pageNo,int pageSize){
|
|
|
+
|
|
|
+ Date[] rst=InputDateLimit.getStartEndInRptMonth(inputMonth);
|
|
|
+
|
|
|
+ List<Object> sqlParams=new ArrayList<Object>();
|
|
|
+ StringBuilder sql=new StringBuilder(300);
|
|
|
+ sql.append("select DATE_FORMAT(work_start,'%Y-%m') wk_start,tab.custom_num,car.car_num,car.car_id,r.oil_type,r.device_name,r.device_model, "); //select 后的字段为必要内容不能删减
|
|
|
+ sql.append(" car.quota_alternator_id,car.quota_rule_id");
|
|
|
+ sql.append(" from(");
|
|
|
+ sql.append(" select distinct car_id,custom_num from t_car_transfer t1 ");
|
|
|
+ sql.append(" left join t_org g on t1.belong_org=g.org_id ");
|
|
|
+ sql.append(" where DATE_FORMAT(start_date,'%Y-%m-%d')<? and (end_date is null or DATE_FORMAT(end_date,'%Y-%m-%d')>=?) ");
|
|
|
+
|
|
|
+ sqlParams.add(DateUtil.format(rst[1], "yyyy-MM-dd"));
|
|
|
+ sqlParams.add(DateUtil.format(rst[0], "yyyy-MM-dd"));
|
|
|
+
|
|
|
+ sql.append(getPartSQL(authAssistCodes,sqlParams));
|
|
|
+ sql.append(" ) tab ");
|
|
|
+
|
|
|
+ sql.append(" inner join t_car car on tab.car_id=car.car_id");
|
|
|
+ sql.append(" left join t_quota_rule r on car.quota_rule_id=r.record_id");
|
|
|
+ sql.append(" where (discard_if=0 or (discard_if=1 and DATE_FORMAT(discard_time,'%Y-%m')>?)) ") ; //在上报月份内非报废或者报废时间在上报月份之后
|
|
|
+
|
|
|
+ sqlParams.add(inputMonth);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if(StringUtils.isNotEmpty(carOrCustomNum)){
|
|
|
+ sql.append(" and (car_num like ? or tab.custom_num like ?)");
|
|
|
+ sqlParams.add("%"+carOrCustomNum+"%");
|
|
|
+ sqlParams.add("%"+carOrCustomNum+"%");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ sql.append(" order by custom_num,car_num");
|
|
|
+ Object[] sqlArgs=sqlParams.size()>0?sqlParams.toArray():null;
|
|
|
+ return dao.queryForPagedListMap(sql.toString(),pageNo, pageSize,sqlArgs);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getPartSQL(Set<String> authAssistCodes,List<Object> sqlParams){
|
|
|
+ StringBuilder sql=new StringBuilder();
|
|
|
+ for(String c : authAssistCodes){
|
|
|
+ sql.append("or assist_code like ?");
|
|
|
+ sqlParams.add(c+"%");
|
|
|
+ }
|
|
|
+ return "and ("+sql.substring(2)+")";
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Object> getCar(String carId) {
|
|
|
+ StringBuilder sql=new StringBuilder();
|
|
|
+ sql.append("select t.*,g.org_name belong_org_name,");
|
|
|
+ sql.append(" t.car_num,t.custom_num,t.oil_type,t.car_id,");
|
|
|
+ sql.append(" r.device_name,r.device_model,r.quota_power");
|
|
|
+ sql.append(" from t_car t");
|
|
|
+ sql.append(" left join t_org g on t.belong_org=g.org_id");
|
|
|
+ sql.append(" left join t_quota_rule r on t.quota_rule_id=r.record_id");
|
|
|
+ sql.append(" where t.car_id=?");
|
|
|
+ return dao.queryForSingleMap(sql.toString(), carId);
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean addCar(Map<String, Object> car) {
|
|
|
+ UUIDHexGenerator uuid=UUIDHexGenerator.getInstance();
|
|
|
+ car.put("carId", uuid.generate());
|
|
|
+ car.put("createTime", new Date());
|
|
|
+ car.put("modifyTime", new Date());
|
|
|
+ dao.insert(car,"t_car");
|
|
|
+
|
|
|
+ addCarTransfer(car,true);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean updateCar(Map<String, Object> car) {
|
|
|
+ car.put("modifyTime", new Date());
|
|
|
+ dao.update(car,"t_car","car_id");
|
|
|
+ addCarTransfer(car,false);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean deleteCar(String carId) {
|
|
|
+ String sql="delete from t_car where car_id=?";
|
|
|
+ dao.getJdbcTemplate().update(sql,carId);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean updateForDiscard(String carId,String discard) {
|
|
|
+ String sql=null;
|
|
|
+ if("1".equals(discard)){ //报废标记
|
|
|
+ sql="update t_car set discard_if=?,discard_time=?,modify_time=? where car_id=?";
|
|
|
+ dao.getJdbcTemplate().update(sql,discard,new Date(),new Date(),carId);
|
|
|
+ }
|
|
|
+ else if("0".equals(discard)){ //恢复使用
|
|
|
+ sql="update t_car set discard_if=?,discard_time=?,modify_time=? where car_id=?";
|
|
|
+ dao.getJdbcTemplate().update(sql,discard,null,new Date(),carId);
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public boolean existsCar(String carNum,String carId){
|
|
|
+ Map<String,Object> rst=null;
|
|
|
+ String sql="select t.* from t_car t where car_num=? and car_id!=?";
|
|
|
+ if(StringUtils.isEmpty(carId)){
|
|
|
+ sql="select t.* from t_car t where car_num=?";
|
|
|
+ rst=dao.queryForSingleMap(sql, carNum);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ rst=dao.queryForSingleMap(sql, carNum,carId);
|
|
|
+ }
|
|
|
+ return rst!=null&&rst.size()>0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检测自编号是否已占用(报废车辆的自编号可以重复使用)
|
|
|
+ * @param customNum
|
|
|
+ * @param carNum
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean existsCustomNum(String customNum,String carNum){
|
|
|
+ String sql="select t.* from t_car t where custom_num=? and car_num!=? and discard_if=0";
|
|
|
+ Map<String,Object> rst=dao.queryForSingleMap(sql, customNum,carNum);
|
|
|
+ return rst!=null&&rst.size()>0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public Map<String,Object> loadCarDeviceNameMapping(){
|
|
|
+ String sql="select device_name,device_model from t_quota_standard where quota_type=?";
|
|
|
+ return dao.queryForMapping(sql, "device_name", "device_model",QuotaType.TRAVEL.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导入车辆数据
|
|
|
+ * @param newCars
|
|
|
+ * @param carNums 本次导入的车辆车牌号
|
|
|
+ * @param sameCover 是否覆盖同车记录
|
|
|
+ */
|
|
|
+ public String addCars(List<Map<String,Object>> newCars,String carNums,boolean sameCover){
|
|
|
+ if(newCars==null||newCars.size()==0){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ carNums="'"+carNums.replaceAll(",", "','")+"'";
|
|
|
+ StringBuilder sameIgnor=new StringBuilder();
|
|
|
+ if(sameCover){
|
|
|
+ dao.getJdbcTemplate().update("delete from t_car where car_num in("+carNums+")");
|
|
|
+ dao.batchInsert(newCars,"t_car");
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ Map<String,Object> dbCars=dao.queryForMapping("select car_num,car_id from t_car where car_num in("+carNums+")", "car_num", "car_id");
|
|
|
+ if(dbCars==null||dbCars.size()==0){
|
|
|
+ dao.batchInsert(newCars,"t_car");
|
|
|
+
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ String dbCarNums=StringUtils.join(dbCars.keySet(),",");
|
|
|
+ Iterator<Map<String,Object>> iterator=newCars.iterator();
|
|
|
+ String carNum=null;
|
|
|
+ while(iterator.hasNext()){
|
|
|
+ carNum=(String)iterator.next().get("carNum");
|
|
|
+ if(dbCarNums.indexOf(carNum)>=0){
|
|
|
+ sameIgnor.append(carNum+";");
|
|
|
+ iterator.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(newCars.size()>0){
|
|
|
+ dao.batchInsert(newCars,"t_car");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ if(newCars.size()>0){
|
|
|
+ for(Map<String,Object> car : newCars){
|
|
|
+ addCarTransfer(car,false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sameIgnor.length()>0?sameIgnor.toString():null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public Map<String,Object> loadCarMapping(){
|
|
|
+ String sql="select car_num,car_id from t_car";
|
|
|
+ return dao.queryForMapping(sql, "car_num", "car_id");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //导入时将车牌映射为系统内车辆信息(定额计算设计到:quota_alternator_id,quota_rule_id,device_name,oil_type)
|
|
|
+ //这些信息以定额标准表中的为准
|
|
|
+ public Map<String,Object> loadCarObjMapping(){
|
|
|
+ String sql="select t.car_num,t.car_id,t.work_start,t.quota_alternator_id,t.quota_rule_id,r.oil_type,r.device_model,r.device_name from t_car t left join t_quota_rule r on t.quota_rule_id=r.record_id";
|
|
|
+ List<Map<String,Object>> cars=dao.queryForListMap(sql);
|
|
|
+ if(cars==null||cars.size()==0){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ Map<String,Object> mapping=new HashMap<String,Object>();
|
|
|
+ for(Map<String,Object> itm : cars){
|
|
|
+ mapping.put((String)itm.get("carNum"), itm);
|
|
|
+ }
|
|
|
+ return mapping;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 记录车辆的流转日志
|
|
|
+ * @param car
|
|
|
+ */
|
|
|
+ public void addCarTransfer(Map<String, Object> car,boolean newCar){
|
|
|
+ UUIDHexGenerator uuid=UUIDHexGenerator.getInstance();
|
|
|
+ Map<String,Object> transfer=MapUtils.clone(car, "carId","modifier","modifyTime","belongOrg","customNum");
|
|
|
+ transfer.put("startDate", new Date());
|
|
|
+ transfer.put("recordId", uuid.generate());
|
|
|
+ transfer.put("transferDate", new Date()); //实际流转时间
|
|
|
+ if(newCar){ //新增车辆直接增加流转日志
|
|
|
+ dao.insert(transfer,"t_car_transfer");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //通过流转记录判断单位是否改变(因为数据可能来源于导入数据,无法提前判断)
|
|
|
+ String sql="select record_id,car_id,belong_org,custom_num from t_car_transfer where car_id=? and end_date is null order by modify_time desc limit 1";
|
|
|
+ Map<String,Object> rst=dao.queryForSingleMap(sql, transfer.get("carId"));
|
|
|
+
|
|
|
+ if(rst==null||rst.size()==0){ //不是新车却找不到历史流转,当作新车直接增加流转日志
|
|
|
+ dao.insert(transfer,"t_car_transfer");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!(transfer.get("belongOrg").equals(rst.get("belongOrg")))){ //车辆最新所属单位发生改变,才记录(同时也会记录当前的customNum)
|
|
|
+ //部门间流转,为使流转当月车辆在前后两个部门可见,人为指定流转生效时间为当月15号,2021-11-25
|
|
|
+ //统计月划分日改为可配置的,不能再固定为15号,而是配置日期-1 提前一天 2022-4-6;
|
|
|
+ int mthday=RptMonthUtil.getMonthSplitDay();
|
|
|
+ Calendar ca=Calendar.getInstance();
|
|
|
+ ca.set(Calendar.DAY_OF_MONTH, mthday-1);
|
|
|
+ sql="update t_car_transfer set end_date=?,modifier=?,modify_time=sysdate(),transfer_date=sysdate() where record_id=?";
|
|
|
+ dao.getJdbcTemplate().update(sql,ca.getTime(),transfer.get("modifier"),rst.get("recordId"));
|
|
|
+
|
|
|
+
|
|
|
+ transfer.put("startDate", ca.getTime());
|
|
|
+ transfer.put("modifyTime", new Date());
|
|
|
+ dao.insert(transfer,"t_car_transfer");
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if(!(transfer.get("customNum").equals(rst.get("customNum")))){ //与历史记录中的最新自编号不一致时,更新历史记录
|
|
|
+ dao.getJdbcTemplate().update("update t_car_transfer set custom_num=?,modifier=?,modify_time=sysdate() where record_id=?",transfer.get("customNum"),transfer.get("modifier"),rst.get("recordId"));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询单车的流程记录
|
|
|
+ * @param carId
|
|
|
+ * @param startDate
|
|
|
+ * @param endDate
|
|
|
+ * @param pageNo
|
|
|
+ * @param pageSize
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public PageModel<Map<String,Object>> loadCarTransfer(String carId,Date startDate,Date endDate,int pageNo,int pageSize){
|
|
|
+ List<Object> sqlParams=new ArrayList<Object>();
|
|
|
+ StringBuilder sql=new StringBuilder(100);
|
|
|
+ sql.append("select g.org_name belong_org_name,c.car_num,ct.* from t_car_transfer ct inner join t_car c on ct.car_id=c.car_id");
|
|
|
+ sql.append(" left join t_org g on ct.belong_org=g.org_id");
|
|
|
+ sql.append(" where ct.car_id=?");
|
|
|
+ sqlParams.add(carId);
|
|
|
+ if(startDate!=null){
|
|
|
+ sql.append(" and start_date>=? ");
|
|
|
+ sqlParams.add(startDate);
|
|
|
+ }
|
|
|
+ if(endDate!=null){
|
|
|
+ sql.append(" and start_date<=? ");
|
|
|
+ sqlParams.add(endDate);
|
|
|
+ }
|
|
|
+ sql.append(" order by start_date desc");
|
|
|
+ return dao.queryForPagedListMap(sql.toString(),pageNo, pageSize,sqlParams.toArray());
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String,Object> loadWorkAreaMapping(){
|
|
|
+ String sql="select code_id,code_name from t_sort_code where father_code_id=?";
|
|
|
+ return dao.queryForMapping(sql, "code_name","code_id", CodeConstant.SORT_WORK_AREA);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新流转记录中的自编号快照(目前只需要,自编号快照)
|
|
|
+ * @param carId
|
|
|
+ * @param customNum
|
|
|
+ */
|
|
|
+ public void updateTransferSnapshot(String carId,String customNum){
|
|
|
+ String sql="update t_car_transfer set custom_num=?,modify_time=? where record_id=(select record_id from (select record_id from t_car_transfer where car_id=? order by start_date desc limit 1) tab)";
|
|
|
+ dao.getJdbcTemplate().update(sql,customNum,new Date(),carId);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|