Commit 77d09e5d by 高晓磊

司机用户绑定了多次同一个车牌号的问题. 派单列表数据量大的问题

parent c36c1c2a
...@@ -22,4 +22,6 @@ public interface VehicleDriverUserDao extends BaseDao { ...@@ -22,4 +22,6 @@ public interface VehicleDriverUserDao extends BaseDao {
List<KObject> vehicleListByDriverUserId(UUID id); List<KObject> vehicleListByDriverUserId(UUID id);
Page<KObject> transportRecordPage(Integer pageNo, Integer pageSize, UUID vehicleId, Date startDate, Date endDate, UUID id); Page<KObject> transportRecordPage(Integer pageNo, Integer pageSize, UUID vehicleId, Date startDate, Date endDate, UUID id);
List<KObject> selectIdByDriverAndVehicle(UUID driverUserId, UUID uuid);
} }
...@@ -101,6 +101,9 @@ public class VehicleDispatchDaoImpl extends AbstractBaseDao implements VehicleDi ...@@ -101,6 +101,9 @@ public class VehicleDispatchDaoImpl extends AbstractBaseDao implements VehicleDi
collect = new ArrayList<>(); collect = new ArrayList<>();
collect.add(vehicleId); collect.add(vehicleId);
} }
if(collect.isEmpty()){
return null;
}
Page<KObject> kObjectPage = new Page<>(); Page<KObject> kObjectPage = new Page<>();
KClass bean = Amino.getStaticMetadataContext().getBean(ENTITY, KClass.class); KClass bean = Amino.getStaticMetadataContext().getBean(ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName()); DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
...@@ -114,9 +117,9 @@ public class VehicleDispatchDaoImpl extends AbstractBaseDao implements VehicleDi ...@@ -114,9 +117,9 @@ public class VehicleDispatchDaoImpl extends AbstractBaseDao implements VehicleDi
detachedCriteria.add(Restrictions.le(PLANNING_CYCLE + ".startTime", DateTimeUtils.getEndDateTimeOfDay(endDate))); detachedCriteria.add(Restrictions.le(PLANNING_CYCLE + ".startTime", DateTimeUtils.getEndDateTimeOfDay(endDate)));
} }
if (isOrderByPlanCycleType) { if (isOrderByPlanCycleType) {
detachedCriteria.addOrder(Order.desc(PLANNING_CYCLE + "cycleType")); detachedCriteria.addOrder(Order.desc(PLANNING_CYCLE + ".cycleType"));
} }
detachedCriteria.addOrder(Order.desc(PLANNING_CYCLE + "startTime")); detachedCriteria.addOrder(Order.desc(PLANNING_CYCLE + ".startTime"));
int offset = pageSize * (pageNo - 1); int offset = pageSize * (pageNo - 1);
List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, pageSize); List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, pageSize);
kObjectPage.setPageNo(pageNo); kObjectPage.setPageNo(pageNo);
...@@ -130,14 +133,13 @@ public class VehicleDispatchDaoImpl extends AbstractBaseDao implements VehicleDi ...@@ -130,14 +133,13 @@ public class VehicleDispatchDaoImpl extends AbstractBaseDao implements VehicleDi
@Override @Override
public void updateStatusToStart() { public void updateStatusToStart() {
//修改为已开始 //修改为已开始
String getIds = "";
template.execute(session -> template.execute(session ->
{ {
Query query1 = session.createQuery("select a.id from " + ENTITY + " as a inner join a." + PLANNING_CYCLE + " as p on a.planningCycle=p.id " + Query<UUID> query1 = session.createQuery("select a.id from " + ENTITY + " as a inner join a." + PLANNING_CYCLE + " as p on a.planningCycle=p.id " +
"where p." + PLANNING_CYCLE_START_TIME + " <= current_timestamp() " + "where p." + PLANNING_CYCLE_START_TIME + " <= current_timestamp() " +
" and a.dispatchStatus =" + PriceAdjustmentAdjustmentStatusEnum.NOT_STARTED.getValue(),UUID.class); " and a.dispatchStatus =" + PriceAdjustmentAdjustmentStatusEnum.NOT_STARTED.getValue(),UUID.class);
Optional optional = query1.uniqueResultOptional(); Optional<List<UUID>> optional = Optional.ofNullable(query1.getResultList());
if (optional.isPresent()) { if (optional.isPresent()&&optional.get().size()>0) {
Query query = session.createQuery("update " + ENTITY + " as b SET b.dispatchStatus = 1 where b.id in ( :ids)"); Query query = session.createQuery("update " + ENTITY + " as b SET b.dispatchStatus = 1 where b.id in ( :ids)");
query.setParameter("ids", optional.get()); query.setParameter("ids", optional.get());
return query.executeUpdate(); return query.executeUpdate();
......
...@@ -96,7 +96,7 @@ public class VehicleDriverUserDaoImpl extends AbstractBaseDao implements Vehicle ...@@ -96,7 +96,7 @@ public class VehicleDriverUserDaoImpl extends AbstractBaseDao implements Vehicle
KClass bean = Amino.getStaticMetadataContext().getBean(ENTITY, KClass.class); KClass bean = Amino.getStaticMetadataContext().getBean(ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName()); DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.add(Restrictions.eq("del", false)); detachedCriteria.add(Restrictions.eq("del", false));
detachedCriteria.add(Restrictions.eq("driver.id",id)); detachedCriteria.add(Restrictions.eq("driverUser.id",id));
return (List<KObject>)template.findByCriteria(detachedCriteria); return (List<KObject>)template.findByCriteria(detachedCriteria);
} }
@Override @Override
...@@ -133,4 +133,14 @@ public class VehicleDriverUserDaoImpl extends AbstractBaseDao implements Vehicle ...@@ -133,4 +133,14 @@ public class VehicleDriverUserDaoImpl extends AbstractBaseDao implements Vehicle
kObjectPage.setDatas(list); kObjectPage.setDatas(list);
return kObjectPage; return kObjectPage;
} }
@Override
public List<KObject> selectIdByDriverAndVehicle(UUID driverUserId, UUID uuid) {
KClass bean = Amino.getStaticMetadataContext().getBean(ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.add(Restrictions.eq("del", false));
detachedCriteria.add(Restrictions.eq("driverUser.id",driverUserId));
detachedCriteria.add(Restrictions.eq("transportVehicle.id",uuid));
return (List<KObject>)template.findByCriteria(detachedCriteria);
}
} }
package com.xyst.dinas.transport.internal.service; package com.xyst.dinas.transport.internal.service;
import com.beecode.amino.core.Amino;
import com.beecode.bap.attachment.common.Page; import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KClass;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.config.constants.DriverUserConstants; import com.beecode.inz.basis.config.constants.DriverUserConstants;
import com.beecode.inz.basis.dao.DriverUserDao; import com.beecode.inz.basis.dao.DriverUserDao;
...@@ -10,6 +12,7 @@ import com.xyst.dinas.transport.constant.VehicleDriverUserConstant; ...@@ -10,6 +12,7 @@ import com.xyst.dinas.transport.constant.VehicleDriverUserConstant;
import com.xyst.dinas.transport.dao.VehicleDriverUserDao; import com.xyst.dinas.transport.dao.VehicleDriverUserDao;
import com.xyst.dinas.transport.dao.VehicleDispatchDao; import com.xyst.dinas.transport.dao.VehicleDispatchDao;
import com.xyst.dinas.transport.service.VehicleDriverUserService; import com.xyst.dinas.transport.service.VehicleDriverUserService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import javax.transaction.Transactional; import javax.transaction.Transactional;
...@@ -37,16 +40,20 @@ public class VehicleDriverUserServiceImpl implements VehicleDriverUserService { ...@@ -37,16 +40,20 @@ public class VehicleDriverUserServiceImpl implements VehicleDriverUserService {
public UUID bindPlateNumber(String plateNumber, UUID driverUserId) { public UUID bindPlateNumber(String plateNumber, UUID driverUserId) {
KObject driver = driverUserDao.load(driverUserId.toString()); KObject driver = driverUserDao.load(driverUserId.toString());
UUID uuid = driver.getUuid(DriverUserConstants.TRANSPORT_COMPANY_ID); UUID uuid = driver.getUuid(DriverUserConstants.TRANSPORT_COMPANY_ID);
KObject transportCompanyEntity = vehicleDriverUserDao.load(VehicleDriverUserConstant.TRANSPORT_COMPANY_ENTITY, uuid); KObject transportCompanyEntity = vehicleDriverUserDao.load(VehicleDriverUserConstant.TRANSPORT_COMPANY_ENTITY, uuid);
KObject regionalCompany = transportCompanyEntity.get("regionalCompany"); KObject regionalCompany = transportCompanyEntity.get("regionalCompany");
UUID regionalCompanyUuid = regionalCompany.getUuid(BaseConstants.ID); UUID regionalCompanyUuid = regionalCompany.getUuid(BaseConstants.ID);
KObject vehicle = vehicleDriverUserDao.selectVehicleByPlateNumber(plateNumber,regionalCompanyUuid); KObject vehicle = vehicleDriverUserDao.selectVehicleByPlateNumber(plateNumber,regionalCompanyUuid);
if(vehicle==null){ if(vehicle==null){
return null; return null;
} }
UUID id = vehicleDriverUserDao.createBind(driver,regionalCompany,vehicle); List<KObject> kObjects= vehicleDriverUserDao.selectIdByDriverAndVehicle(driverUserId,vehicle.getUuid(BaseConstants.ID));
return id; if(CollectionUtils.isNotEmpty(kObjects)&&kObjects.size()>0){
return kObjects.get(0).getUuid(BaseConstants.ID);
}
return vehicleDriverUserDao.createBind(driver,regionalCompany,vehicle);
} }
@Override @Override
...@@ -61,7 +68,68 @@ public class VehicleDriverUserServiceImpl implements VehicleDriverUserService { ...@@ -61,7 +68,68 @@ public class VehicleDriverUserServiceImpl implements VehicleDriverUserService {
@Override @Override
public Page<KObject> pageByVehicleId(Integer pageNo, Integer pageSize, Integer status, UUID vehicleId, Date startDate, Date endDate, Boolean isOrderByPlanCycleType, UUID driverUserId) { public Page<KObject> pageByVehicleId(Integer pageNo, Integer pageSize, Integer status, UUID vehicleId, Date startDate, Date endDate, Boolean isOrderByPlanCycleType, UUID driverUserId) {
return vehicleDispatchDao.pageByVehicleId(pageNo,pageSize,status,vehicleId,startDate,endDate,isOrderByPlanCycleType,driverUserId); Page<KObject> kObjectPage = vehicleDispatchDao.pageByVehicleId(pageNo, pageSize, status, vehicleId, startDate, endDate, isOrderByPlanCycleType, driverUserId);
List<KObject> datas = kObjectPage.getDatas();
List<KObject> datas1 = removeFiled(datas);
kObjectPage.setDatas(datas1);
return kObjectPage;
}
private List<KObject> removeFiled(List<KObject> datas) {
ArrayList<KObject> kObjects = new ArrayList<>();
for (KObject data : datas) {
KObject base = data.clone();
KObject project = base.get("project");
if(null!=project&&!project.isNull()){
KObject projectCopy = Amino.getStaticMetadataContext().getBean(project.getType().getName(), KClass.class).newInstance();
projectCopy.set("projectName",project.getString("projectName"));
projectCopy.set("id",project.getUuid(BaseConstants.ID));
base.set("project",projectCopy);
}else{
base.setNull("project");
}
KObject contract = base.get("contract");
if(null!=contract&&!contract.isNull()){
KObject contractCopy = Amino.getStaticMetadataContext().getBean(contract.getType().getName(), KClass.class).newInstance();
contractCopy.set("contractName",contract.getString("contractName"));
contractCopy.set("addrReceive",contract.getString("addrReceive"));
contractCopy.set("id",contract.getUuid(BaseConstants.ID));
base.set("contract",contractCopy);
}else{
base.setNull("contract");
}
KObject dinasType = base.get("dinasType");
if(null!=dinasType&&!dinasType.isNull()){
KObject dinasTypeCopy = Amino.getStaticMetadataContext().getBean(dinasType.getType().getName(), KClass.class).newInstance();
dinasTypeCopy.set("dinasTypeName",dinasTypeCopy.getString("dinasTypeName"));
dinasTypeCopy.set("id",dinasTypeCopy.getUuid(BaseConstants.ID));
base.set("dinasType",dinasTypeCopy);
}else{
base.setNull("dinasType");
}
KObject station = base.get("station");
if(null!=station&&!station.isNull()){
KObject stationCopy = Amino.getStaticMetadataContext().getBean(station.getType().getName(), KClass.class).newInstance();
stationCopy.set("stationName",station.getString("stationName"));
stationCopy.set("stationAddress",station.getString("stationAddress"));
stationCopy.set("id",station.getUuid(BaseConstants.ID));
base.set("station",stationCopy);
}else{
base.setNull("station");
}
KObject purchaseSandUnit = base.get("purchaseSandUnit");
if(null!=purchaseSandUnit&&!purchaseSandUnit.isNull()){
KObject purchaseSandUnitCopy = Amino.getStaticMetadataContext().getBean(purchaseSandUnit.getType().getName(), KClass.class).newInstance();
purchaseSandUnitCopy.set("name",purchaseSandUnit.getString("name"));
purchaseSandUnitCopy.set("id",purchaseSandUnit.getUuid(BaseConstants.ID));
base.set("purchaseSandUnit",purchaseSandUnitCopy);
}else{
base.setNull("purchaseSandUnit");
}
kObjects.add(base);
}
return kObjects;
} }
@Override @Override
......
...@@ -11,6 +11,7 @@ import com.beecode.inz.basis.pojo.DriverUser; ...@@ -11,6 +11,7 @@ import com.beecode.inz.basis.pojo.DriverUser;
import com.beecode.inz.basis.pojo.SandUser; import com.beecode.inz.basis.pojo.SandUser;
import com.beecode.inz.basis.service.DriverUserService; import com.beecode.inz.basis.service.DriverUserService;
import com.beecode.inz.basis.team.pojo.ResponseObj; import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.fasterxml.jackson.databind.JsonNode;
import com.xyst.dinas.transport.service.VehicleDriverUserService; import com.xyst.dinas.transport.service.VehicleDriverUserService;
import com.xyst.dinas.transport.service.VehicleDispatchService; import com.xyst.dinas.transport.service.VehicleDispatchService;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
...@@ -65,9 +66,10 @@ public class VehicleDriverUserController { ...@@ -65,9 +66,10 @@ public class VehicleDriverUserController {
public ResponseObj driverUserInfoById() { public ResponseObj driverUserInfoById() {
DriverUser driverUser = DriverUserContextHolder.getContext().getDriverUser(); DriverUser driverUser = DriverUserContextHolder.getContext().getDriverUser();
DriverUser vehicle = driverUserService.getById(driverUser.getId()); DriverUser vehicle = driverUserService.getById(driverUser.getId());
JSONObject jsonObject = net.sf.json.JSONObject.fromObject(vehicle); JsonNode jsonNode = JSONObjectUtils.toJson(vehicle);
jsonObject.put("transportCompanyName", driverUserService.getTransportCompanyNameByDriverUser(driverUser)); Map<String, Object> stringObjectMap = JSONObjectUtils.toMap(jsonNode);
return ResponseObj.success("查询成功", jsonObject); stringObjectMap.put("transportCompanyName", driverUserService.getTransportCompanyNameByDriverUser(driverUser));
return ResponseObj.success("查询成功",stringObjectMap);
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment