package com.java110.common.dao.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.common.dao.ICarInoutServiceDao;
|
import com.java110.core.base.dao.BaseServiceDao;
|
import com.java110.po.car.CarInoutPo;
|
import com.java110.utils.constant.ResponseConstant;
|
import com.java110.utils.exception.DAOException;
|
import com.java110.utils.util.BeanConvertUtil;
|
import com.java110.utils.util.DateUtil;
|
import org.activiti.engine.impl.util.CollectionUtil;
|
import org.slf4j.Logger;
|
import com.java110.core.log.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 进出场服务 与数据库交互
|
* Created by wuxw on 2017/4/5.
|
*/
|
@Service("carInoutServiceDaoImpl")
|
//@Transactional
|
public class CarInoutServiceDaoImpl extends BaseServiceDao implements ICarInoutServiceDao {
|
|
private static Logger logger = LoggerFactory.getLogger(CarInoutServiceDaoImpl.class);
|
|
/**
|
* 进出场信息封装
|
*
|
* @param businessCarInoutInfo 进出场信息 封装
|
* @throws DAOException DAO异常
|
*/
|
@Override
|
public void saveBusinessCarInoutInfo(Map businessCarInoutInfo) throws DAOException {
|
businessCarInoutInfo.put("month", DateUtil.getCurrentMonth());
|
// 查询business_user 数据是否已经存在
|
logger.debug("保存进出场信息 入参 businessCarInoutInfo : {}", businessCarInoutInfo);
|
int saveFlag = sqlSessionTemplate.insert("carInoutServiceDaoImpl.saveBusinessCarInoutInfo", businessCarInoutInfo);
|
|
if (saveFlag < 1) {
|
throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "保存进出场数据失败:" + JSONObject.toJSONString(businessCarInoutInfo));
|
}
|
}
|
|
|
/**
|
* 查询进出场信息
|
*
|
* @param info bId 信息
|
* @return 进出场信息
|
* @throws DAOException DAO异常
|
*/
|
@Override
|
public List<Map> getBusinessCarInoutInfo(Map info) throws DAOException {
|
|
logger.debug("查询进出场信息 入参 info : {}", info);
|
|
List<Map> businessCarInoutInfos = sqlSessionTemplate.selectList("carInoutServiceDaoImpl.getBusinessCarInoutInfo", info);
|
|
return businessCarInoutInfos;
|
}
|
|
|
/**
|
* 保存进出场信息 到 instance
|
*
|
* @param info bId 信息
|
* @throws DAOException DAO异常
|
*/
|
@Override
|
public void saveCarInoutInfoInstance(Map info) throws DAOException {
|
logger.debug("保存进出场信息Instance 入参 info : {}", info);
|
|
int saveFlag = sqlSessionTemplate.insert("carInoutServiceDaoImpl.saveCarInoutInfoInstance", info);
|
|
if (saveFlag < 1) {
|
throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "保存进出场信息Instance数据失败:" + JSONObject.toJSONString(info));
|
}
|
}
|
|
|
/**
|
* 查询进出场信息(instance)
|
*
|
* @param info bId 信息
|
* @return List<Map>
|
* @throws DAOException DAO异常
|
*/
|
@Override
|
public List<Map> getCarInoutInfo(Map info) throws DAOException {
|
logger.debug("查询进出场信息 入参 info : {}", info);
|
|
List<Map> businessCarInoutInfos = sqlSessionTemplate.selectList("carInoutServiceDaoImpl.getCarInoutInfo", info);
|
|
return businessCarInoutInfos;
|
}
|
|
|
/**
|
* 修改进出场信息
|
*
|
* @param info 修改信息
|
* @throws DAOException DAO异常
|
*/
|
@Override
|
public void updateCarInoutInfoInstance(Map info) throws DAOException {
|
logger.debug("修改进出场信息Instance 入参 info : {}", info);
|
|
int saveFlag = sqlSessionTemplate.update("carInoutServiceDaoImpl.updateCarInoutInfoInstance", info);
|
|
if (saveFlag < 1) {
|
throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "修改进出场信息Instance数据失败:" + JSONObject.toJSONString(info));
|
}
|
}
|
|
/**
|
* 查询进出场数量
|
*
|
* @param info 进出场信息
|
* @return 进出场数量
|
*/
|
@Override
|
public int queryCarInoutsCount(Map info) {
|
logger.debug("查询进出场数据 入参 info : {}", info);
|
|
List<Map> businessCarInoutInfos = sqlSessionTemplate.selectList("carInoutServiceDaoImpl.queryCarInoutsCount", info);
|
if (businessCarInoutInfos.size() < 1) {
|
return 0;
|
}
|
|
return Integer.parseInt(businessCarInoutInfos.get(0).get("count").toString());
|
}
|
|
|
@Autowired
|
private CarInoutServiceDaoImpl carInoutServiceDaoImpl;
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int[] batchSaveCarInout(List<CarInoutPo> successRecords) {
|
if (CollectionUtil.isEmpty(successRecords)) {
|
return new int[0];
|
}
|
|
int totalSize = successRecords.size();
|
int[] result = new int[totalSize]; // 存储每条记录的插入结果(0表示失败,1表示成功)
|
|
for (int i = 0; i < totalSize; i++) {
|
CarInoutPo record = successRecords.get(i);
|
try {
|
CarInoutPo filter = new CarInoutPo();
|
filter.setCarNum(record.getCarNum());
|
filter.setInTime(record.getInTime());
|
filter.setOutTime(record.getOutTime());
|
filter.setDirection(record.getDirection());
|
int existCount = carInoutServiceDaoImpl.queryCarInoutsCount(BeanConvertUtil.beanCovertMap(filter));
|
|
if (existCount > 0) {
|
// 3. 记录已存在,标记为去重(可用2表示去重,与0/1区分)
|
record.setErrorTest("重复的内容");
|
continue;
|
}
|
|
// 逐条插入
|
int affectedRows = sqlSessionTemplate.insert(
|
"carInoutServiceDaoImpl.batchInsert", // 注意这里需要改为单条插入的statement ID
|
BeanConvertUtil.beanCovertMap(record)
|
);
|
|
// 单条插入成功
|
if (affectedRows > 0) {
|
result[i] = 1;
|
} else {
|
result[i] = 0;
|
}
|
} catch (Exception e) {
|
// 捕获SQL异常,标记为失败
|
result[i] = 0;
|
// 可以根据需要记录错误日志
|
record.setErrorTest("插入CarInoutPo失败,记录: "+e);
|
}
|
}
|
|
return result;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void batchSaveCarInout2(List<CarInoutPo> successRecords) {
|
for (CarInoutPo record : successRecords) {
|
int affectedRows = sqlSessionTemplate.insert(
|
"carInoutServiceDaoImpl.batchInsert", // 注意这里需要改为单条插入的statement ID
|
BeanConvertUtil.beanCovertMap(record)
|
);
|
if (affectedRows == 0) {
|
throw new IllegalArgumentException("添加失败"+record.getCarNum()+record.getInTime()+record.getOutTime());
|
}
|
}
|
}
|
|
}
|