Commit 0574f50d authored by hezhen's avatar hezhen

Merge branch 'dev' of http://113.105.137.151:22280/youjj/cloud-platform into dev

parents f63e0901 0c682738
...@@ -24,6 +24,7 @@ public class ResultCode { ...@@ -24,6 +24,7 @@ public class ResultCode {
// 预定时间不能小于当前时间 // 预定时间不能小于当前时间
public static int ONLY_BOOK_FROM_TODAY = Integer.valueOf(SystemProperty.getResultConfig("ONLY_BOOK_FROM_TODAY")); public static int ONLY_BOOK_FROM_TODAY = Integer.valueOf(SystemProperty.getResultConfig("ONLY_BOOK_FROM_TODAY"));
public static int END_TIME_FROM_TODAY = Integer.valueOf(SystemProperty.getResultConfig("END_TIME_FROM_TODAY"));
// 只能预定两个月内的车辆 // 只能预定两个月内的车辆
public static int ONLY_BOOK_TWO_MONTH = Integer.valueOf(SystemProperty.getResultConfig("ONLY_BOOK_TWO_MONTH")); public static int ONLY_BOOK_TWO_MONTH = Integer.valueOf(SystemProperty.getResultConfig("ONLY_BOOK_TWO_MONTH"));
......
...@@ -248,3 +248,6 @@ RET_COMPANY_CAN_NOT_BE_NULL = 4018 ...@@ -248,3 +248,6 @@ RET_COMPANY_CAN_NOT_BE_NULL = 4018
NUMBER_PLAT_CAN_NOT_BE_NULL = 4019 NUMBER_PLAT_CAN_NOT_BE_NULL = 4019
4019 = 车牌不能为空 4019 = 车牌不能为空
END_TIME_FROM_TODAY = 4020
4020 = 结束时间不能小于开始时间
\ No newline at end of file
...@@ -66,6 +66,8 @@ public class UserMemberDTO { ...@@ -66,6 +66,8 @@ public class UserMemberDTO {
@ApiModelProperty(value = "有效期;0代表永久") @ApiModelProperty(value = "有效期;0代表永久")
private Long validTime; private Long validTime;
@Column(name = "member_name") @Column(name = "member_name")
@ApiModelProperty("会员名") @ApiModelProperty("会员名")
private String memberName; private String memberName;
......
...@@ -21,6 +21,7 @@ import javax.annotation.Resource; ...@@ -21,6 +21,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Parameter; import java.lang.reflect.Parameter;
import java.util.Objects;
/** /**
* @author libin * @author libin
...@@ -72,7 +73,11 @@ public class TokenAop { ...@@ -72,7 +73,11 @@ public class TokenAop {
args[i]= new AppUserDTO(); args[i]= new AppUserDTO();
break; break;
} }
args[i]= userFeign.userDetailByToken(token).getData(); AppUserDTO userDTO = userFeign.userDetailByToken(token).getData();
if (Objects.isNull(userDTO)){
userDTO = new AppUserDTO();
}
args[i]= userDTO;
break; break;
} }
if (UserDTO.class.equals(parameter.getType())){ if (UserDTO.class.equals(parameter.getType())){
......
...@@ -73,7 +73,9 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -73,7 +73,9 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
return; return;
} }
Integer userId = userMemberDTO.getUserId(); Integer userId = userMemberDTO.getUserId();
UserMemberVo userMemberVo = getMemberInfoByUserId(userId); UserMemberVo userMemberVo = getMemberInfoByUserId(userId);
BaseUserMember baseUserMember = new BaseUserMember(); BaseUserMember baseUserMember = new BaseUserMember();
BeanUtils.copyProperties(baseUserMember, userMemberDTO); BeanUtils.copyProperties(baseUserMember, userMemberDTO);
Integer freeDays = baseUserMember.getRentFreeDays(); Integer freeDays = baseUserMember.getRentFreeDays();
...@@ -106,6 +108,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -106,6 +108,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
baseUserMember.setBuyCount(userMemberVo.getBuyCount() + buyCount); baseUserMember.setBuyCount(userMemberVo.getBuyCount() + buyCount);
baseUserMember.setTotalNumber(totalNumber); baseUserMember.setTotalNumber(totalNumber);
baseUserMember.setRentFreeDays(freeDays); baseUserMember.setRentFreeDays(freeDays);
getMyBiz().updateSelectiveById(baseUserMember); getMyBiz().updateSelectiveById(baseUserMember);
} }
AppUserVo userVo = detailBiz.getUserInfoById(userId); AppUserVo userVo = detailBiz.getUserInfoById(userId);
...@@ -212,42 +215,46 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -212,42 +215,46 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
/** /**
* 设置用户会员 * 设置用户会员
* *
* @param baseUserMemberVO * @param userMemberDTO
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void UpdateUserMember(BaseUserMemberVO baseUserMemberVO) throws InvocationTargetException, IllegalAccessException { public void UpdateUserMember(UserMemberDTO userMemberDTO) throws InvocationTargetException, IllegalAccessException {
Example exa = Example.builder(BaseUserMember.class).where( Integer userId = userMemberDTO.getUserId();
WeekendSqls.<BaseUserMember>custom()
.andEqualTo(BaseUserMember::getUserId, baseUserMemberVO.getUserId())
).build();
List<BaseUserMember> baseUserMembers = mapper.selectByExample(exa);
BaseUserMember baseUserMember = new BaseUserMember(); BaseUserMember baseUserMember = new BaseUserMember();
BeanUtilsBean.getInstance().copyProperties(baseUserMember, baseUserMemberVO); BeanUtils.copyProperties(baseUserMember, userMemberDTO);
Integer freeDays = baseUserMember.getRentFreeDays() == null ? 0 : baseUserMember.getRentFreeDays();
if (CollectionUtils.isEmpty(baseUserMembers)) { Integer totalNumber = baseUserMember.getTotalNumber() == null ? 0 : baseUserMember.getTotalNumber();
if (baseUserMemberVO.getMemberLevel() == null || baseUserMember.getValidTime() == null||baseUserMember.getValidTime()<0) { if (totalNumber < freeDays) {
throw new BaseException("设置无效!无会员等级、会员有效期或会员有效期为负数!"); freeDays = totalNumber;
} }
baseUserMember.setCrtTime(System.currentTimeMillis()); Integer buyCount = userMemberDTO.getBuyCount() == null ? 1:userMemberDTO.getBuyCount() ;
baseUserMember.setIsDel(0); UserMemberVo userMemberVo = getMemberInfoByUserId(userMemberDTO.getUserId());
baseUserMember.setPayCount(0); if (userMemberVo == null) {
baseUserMember.setCardLeave(1); baseUserMember.setRentFreeDays(freeDays);
baseUserMember.setRecentRecharge(System.currentTimeMillis()); baseUserMember.setBuyCount(buyCount);
Integer buyCount = baseUserMember.getBuyCount() == null ? 0 : baseUserMember.getBuyCount();
baseUserMember.setBuyCount(buyCount + 1);
insertSelective(baseUserMember); insertSelective(baseUserMember);
return;
} else if (baseUserMembers.size() == 1) {
baseUserMember.setUpdTime(System.currentTimeMillis());
baseUserMember.setBuyCount(baseUserMembers.get(0).getBuyCount() + 1);
baseUserMember.setId(baseUserMembers.get(0).getId());
mapper.updateByPrimaryKeySelective(baseUserMember);
} else { } else {
throw new BaseException("错误!该账号有多条会员信息!"); baseUserMember.setId(userMemberVo.getId());
Integer number = userMemberVo.getTotalNumber() == null ? 0 : userMemberVo.getTotalNumber();
Integer days = userMemberVo.getRentFreeDays() == null ? 0 : userMemberVo.getRentFreeDays();
baseUserMember.setBuyCount(userMemberVo.getBuyCount() + buyCount);
number=(totalNumber-number)+number;
days=(freeDays-days)+days;
baseUserMember.setTotalNumber(number);
baseUserMember.setRentFreeDays(days);
getMyBiz().updateSelectiveById(baseUserMember);
}
AppUserVo userVo = detailBiz.getUserInfoById(userId);
if (userVo != null && (userVo.getIsMember() == null || userVo.getIsMember() == 0)) {
AppUserVo userVo1 = new AppUserVo();
userVo1.setId(userVo.getId());
userVo1.setUserid(userId);
userVo1.setIsMember(1);
detailBiz.updUuserInfoById(userVo1);
} }
} }
} }
\ No newline at end of file
...@@ -53,7 +53,12 @@ public class BaseUserMemberController extends BaseController<BaseUserMemberBiz, ...@@ -53,7 +53,12 @@ public class BaseUserMemberController extends BaseController<BaseUserMemberBiz,
@PutMapping("/setUserMember") @PutMapping("/setUserMember")
public ObjectRestResponse UpdateUserMember(@RequestBody UserMemberDTO userMemberDTO) public ObjectRestResponse UpdateUserMember(@RequestBody UserMemberDTO userMemberDTO)
throws Exception { throws Exception {
baseBiz.updUserMemberByUserId(userMemberDTO); if (userMemberDTO==null||userMemberDTO.getRentFreeDays()<0||userMemberDTO.getTotalNumber()<0) {
return ObjectRestResponse.createDefaultFail();
}
baseBiz.UpdateUserMember(userMemberDTO);
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
} }
package com.xxfc.platform.order.entity; package com.xxfc.platform.order.entity;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.xxfc.platform.tour.entity.TourUser;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -245,5 +246,5 @@ public class OrderTourDetail implements Serializable { ...@@ -245,5 +246,5 @@ public class OrderTourDetail implements Serializable {
private Integer isOutside; private Integer isOutside;
@Transient @Transient
private List<AppUserVo> userVoList; private List<TourUser> userVoList;
} }
...@@ -26,6 +26,7 @@ import com.xxfc.platform.order.pojo.order.OrderPageVO; ...@@ -26,6 +26,7 @@ import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto; import com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto;
import com.xxfc.platform.order.pojo.order.QueryOrderDTO; import com.xxfc.platform.order.pojo.order.QueryOrderDTO;
import com.xxfc.platform.order.rest.BaseOrderController; import com.xxfc.platform.order.rest.BaseOrderController;
import com.xxfc.platform.tour.entity.TourUser;
import com.xxfc.platform.tour.feign.TourFeign; import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.dto.SendMsgDTO; import com.xxfc.platform.universal.dto.SendMsgDTO;
...@@ -179,18 +180,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> { ...@@ -179,18 +180,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> {
orderPageVo.setVehicalNumberPlat(response.getData().getNumberPlate()); orderPageVo.setVehicalNumberPlat(response.getData().getNumberPlate());
} }
} else if (orderPageVo.getOrderTourDetail() != null) { } else if (orderPageVo.getOrderTourDetail() != null) {
List<Integer> ids = Lists.newArrayList(); if(StringUtils.isNotBlank(orderPageVo.getOrderTourDetail().getTourUserIds())) {
if (orderPageVo.getOrderTourDetail().getTourUserIds().contains(",")) { List<TourUser> list = tourFeign.getTourUsers(orderPageVo.getOrderTourDetail().getTourUserIds()).getData();
String[] strings = orderPageVo.getOrderTourDetail().getTourUserIds().split(",");
for (int i = 0; i < strings.length; i++) {
ids.add(Integer.parseInt(StringUtils.isNotBlank(strings[i]) ? strings[i] : "0"));
}
} else {
ids.add(Integer.parseInt(orderPageVo.getOrderTourDetail().getTourUserIds()));
}
List<AppUserVo> list = userFeign.getByUserIds(ids).getData();
orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list); orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list);
} }
}
//设置保留金 //设置保留金
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData(); Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail()); BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail());
...@@ -268,19 +262,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> { ...@@ -268,19 +262,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> {
orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate()); orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate());
} }
} else if (orderPageVo.getOrderTourDetail() != null) { } else if (orderPageVo.getOrderTourDetail() != null) {
List<Integer> ids = Lists.newArrayList(); if(StringUtils.isNotBlank(orderPageVo.getOrderTourDetail().getTourUserIds())) {
if (orderPageVo.getOrderTourDetail().getTourUserIds().contains(",")) { List<TourUser> list = tourFeign.getTourUsers(orderPageVo.getOrderTourDetail().getTourUserIds()).getData();
String[] strings = orderPageVo.getOrderTourDetail().getTourUserIds().split(",");
for (int i = 0; i < strings.length; i++) {
ids.add(Integer.parseInt(StringUtils.isNotBlank(strings[i]) ? strings[i] : "0"));
}
} else {
ids.add(Integer.parseInt(orderPageVo.getOrderTourDetail().getTourUserIds()));
}
List<AppUserVo> list = userFeign.getByUserIds(ids).getData();
orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list); orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list);
} }
}
//设置保留金 //设置保留金
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData(); Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail()); BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail());
......
...@@ -16,6 +16,10 @@ import com.xxfc.platform.vehicle.entity.BranchCompany; ...@@ -16,6 +16,10 @@ import com.xxfc.platform.vehicle.entity.BranchCompany;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.Instant;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -89,7 +93,7 @@ public class OrderTourVerificationBiz{ ...@@ -89,7 +93,7 @@ public class OrderTourVerificationBiz{
} }
// 出发时间 是否已经发车 // 出发时间 是否已经发车
/* Date departureDate = tourFeign.selectDepartureDataBySpeId(tourDetail.getSpePriceId()); Date departureDate = tourFeign.selectDepartureDataBySpeId(tourDetail.getSpePriceId());
Long departureTime = tourFeign.selectDepartureTimeByStartCompanyIdAndRouteId(tourDetail.getStartCompanyId(), tourDetail.getGoodId()); Long departureTime = tourFeign.selectDepartureTimeByStartCompanyIdAndRouteId(tourDetail.getStartCompanyId(), tourDetail.getGoodId());
Integer departureStatus = tourFeign.selectDepartureStatusByVerificationId(verificationId); Integer departureStatus = tourFeign.selectDepartureStatusByVerificationId(verificationId);
LocalTime localDepartureTime = LocalTime.ofSecondOfDay(departureTime); LocalTime localDepartureTime = LocalTime.ofSecondOfDay(departureTime);
...@@ -110,7 +114,7 @@ public class OrderTourVerificationBiz{ ...@@ -110,7 +114,7 @@ public class OrderTourVerificationBiz{
if (departureStatus==1){ if (departureStatus==1){
return ObjectRestResponse.createFailedResultWithObj(400,"已经发车",1); return ObjectRestResponse.createFailedResultWithObj(400,"已经发车",1);
}*/ }
baseOrder=new BaseOrder(); baseOrder=new BaseOrder();
......
...@@ -25,6 +25,8 @@ import com.xxfc.platform.order.entity.OrderRentVehicleDetail; ...@@ -25,6 +25,8 @@ import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.pojo.OrderAccompanyDTO; import com.xxfc.platform.order.pojo.OrderAccompanyDTO;
import com.xxfc.platform.order.pojo.order.*; import com.xxfc.platform.order.pojo.order.*;
import com.xxfc.platform.order.service.OrderRentVehicleService; import com.xxfc.platform.order.service.OrderRentVehicleService;
import com.xxfc.platform.tour.entity.TourUser;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.vehicle.common.RestResponse; import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus; import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus;
import com.xxfc.platform.vehicle.entity.BranchCompany; import com.xxfc.platform.vehicle.entity.BranchCompany;
...@@ -78,6 +80,9 @@ public class BackStageOrderController extends CommonBaseController implements Us ...@@ -78,6 +80,9 @@ public class BackStageOrderController extends CommonBaseController implements Us
@Autowired @Autowired
UserFeign userFeign; UserFeign userFeign;
@Autowired
TourFeign tourFeign;
@Resource @Resource
VehicleFeign vehicleFeign; VehicleFeign vehicleFeign;
...@@ -180,10 +185,9 @@ public class BackStageOrderController extends CommonBaseController implements Us ...@@ -180,10 +185,9 @@ public class BackStageOrderController extends CommonBaseController implements Us
if (startResponse.getData() != null) { if (startResponse.getData() != null) {
orderPageVO.setStartCompanyName(startResponse.getData().getName()); orderPageVO.setStartCompanyName(startResponse.getData().getName());
} }
List<Integer> tourUserIds = Arrays.asList(orderPageVO.getOrderTourDetail().getTourUserIds().split(",")).parallelStream().map(s -> Integer.valueOf(s.trim())).collect(Collectors.toList()); if(StringUtils.isNotBlank(orderPageVO.getOrderTourDetail().getTourUserIds())) {
ObjectRestResponse<List<AppUserVo>> users = userFeign.getByUserIds(tourUserIds); List<TourUser> tourUsers = tourFeign.getTourUsers(orderPageVO.getOrderTourDetail().getTourUserIds()).getData();
if (users.getData() != null) { orderPageVO.getOrderTourDetail().setUserVoList(tourUsers == null || tourUsers.size() <= 0 ? new ArrayList<>() : tourUsers);
orderPageVO.getOrderTourDetail().setUserVoList(users.getData() == null? users.getData() : new ArrayList<>());
} }
} }
......
...@@ -57,6 +57,31 @@ public enum BookType { ...@@ -57,6 +57,31 @@ public enum BookType {
this.desc = desc; this.desc = desc;
} }
public static String getByCode(Integer code) {
switch (code) {
case 2:
return EMPLOYEE_APPLY.getDesc();
case 1:
return USER_RENT.getDesc();
case 3:
return REPAIRING.getDesc();
case 4:
return SHOW.getDesc();
case 5:
return TOUR.getDesc();
case 6:
return MAINTAIN.getDesc();
case 7:
return BOOKING.getDesc();
case 8:
return DISABLE.getDesc();
case 9:
return CUSTOMER_APPLY.getDesc();
case 10:
return OTHER.getDesc();
}
return "";
}
public static Boolean exists(Integer code){ public static Boolean exists(Integer code){
return codeAndDesc.containsKey(code); return codeAndDesc.containsKey(code);
} }
......
...@@ -148,4 +148,6 @@ public class ResultVehicleVo { ...@@ -148,4 +148,6 @@ public class ResultVehicleVo {
* 收车时间 * 收车时间
*/ */
private Date receiveTime; private Date receiveTime;
private Integer modelId;
} }
\ No newline at end of file
...@@ -128,5 +128,9 @@ public class VehiclePageQueryVo { ...@@ -128,5 +128,9 @@ public class VehiclePageQueryVo {
*/ */
private Integer haveViolation; private Integer haveViolation;
/**
* 车型id
*/
private Integer modelId;
} }
...@@ -39,4 +39,8 @@ public class VehiclePlanDto extends PageParam { ...@@ -39,4 +39,8 @@ public class VehiclePlanDto extends PageParam {
*/ */
private Integer useType; private Integer useType;
/**
* 车型id
*/
private Integer modelId;
} }
...@@ -3,10 +3,8 @@ package com.xxfc.platform.vehicle.biz; ...@@ -3,10 +3,8 @@ package com.xxfc.platform.vehicle.biz;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.xxfc.platform.vehicle.constant.*;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode; import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.constant.VehicleActiveType;
import com.xxfc.platform.vehicle.constant.VehicleDepartureState;
import com.xxfc.platform.vehicle.constant.VehicleStatus;
import com.xxfc.platform.vehicle.entity.*; import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.mapper.*; import com.xxfc.platform.vehicle.mapper.*;
import com.xxfc.platform.vehicle.pojo.*; import com.xxfc.platform.vehicle.pojo.*;
...@@ -89,8 +87,10 @@ public class VehicleActiveService { ...@@ -89,8 +87,10 @@ public class VehicleActiveService {
ResCode.VEHICLE_DEPARTURE_VEHICLE_DISABLE.getCode()); ResCode.VEHICLE_DEPARTURE_VEHICLE_DISABLE.getCode());
} }
//修改预约记录状态 //修改预约记录状态
VehicleBookRecord vehicleBookRecord = null;
if(departureVo.getBookRecordId() != null) { if(departureVo.getBookRecordId() != null) {
updateBookRecordStatus(departureVo.getBookRecordId(), 1); vehicleBookRecord = vehicleBookRecordBiz.selectById(departureVo.getBookRecordId());
updateBookRecordStatus(vehicleBookRecord, 1);
} }
VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(departureVo.getBookRecordId()); VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(departureVo.getBookRecordId());
if(vehicleDepartureLogVo != null) { if(vehicleDepartureLogVo != null) {
...@@ -100,6 +100,12 @@ public class VehicleActiveService { ...@@ -100,6 +100,12 @@ public class VehicleActiveService {
departureLog.setUpdateTime(new Date()); departureLog.setUpdateTime(new Date());
departureLog.setState(VehicleDepartureState.DEPARTURE.getCode()); departureLog.setState(VehicleDepartureState.DEPARTURE.getCode());
departureLog.setDepartureRemark(departureVo.getRemark()); departureLog.setDepartureRemark(departureVo.getRemark());
if(vehicleBookRecord != null) {
departureLog.setDepartureBranchCompanyId(vehicleBookRecord.getLiftCompany());
departureLog.setUse(BookType.getByCode(vehicleBookRecord.getBookType()));
departureLog.setUser(vehicleBookRecord.getVehicleUsername());
departureLog.setUserTel(vehicleBookRecord.getVehicleUserPhone());
}
vehicleDepartureLogMapper.updateByPrimaryKeySelective(departureLog); vehicleDepartureLogMapper.updateByPrimaryKeySelective(departureLog);
} else { } else {
// 出车记录 // 出车记录
...@@ -111,6 +117,11 @@ public class VehicleActiveService { ...@@ -111,6 +117,11 @@ public class VehicleActiveService {
departureLog.setState(VehicleDepartureState.DEPARTURE.getCode()); departureLog.setState(VehicleDepartureState.DEPARTURE.getCode());
departureLog.setBookRecordId(departureVo.getBookRecordId()); departureLog.setBookRecordId(departureVo.getBookRecordId());
departureLog.setDepartureRemark(departureVo.getRemark()); departureLog.setDepartureRemark(departureVo.getRemark());
if(vehicleBookRecord != null) {
departureLog.setUse(BookType.getByCode(vehicleBookRecord.getBookType()));
departureLog.setUser(vehicleBookRecord.getVehicleUsername());
departureLog.setUserTel(vehicleBookRecord.getVehicleUserPhone());
}
vehicleDepartureLogMapper.insert(departureLog); vehicleDepartureLogMapper.insert(departureLog);
} }
...@@ -128,6 +139,7 @@ public class VehicleActiveService { ...@@ -128,6 +139,7 @@ public class VehicleActiveService {
} }
} }
public String getVehicleStatus(Integer status, String vehicleId) { public String getVehicleStatus(Integer status, String vehicleId) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
switch (status) { switch (status) {
...@@ -193,9 +205,10 @@ public class VehicleActiveService { ...@@ -193,9 +205,10 @@ public class VehicleActiveService {
throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getDesc(), throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getDesc(),
ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getCode()); ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getCode());
} }
VehicleBookRecord vehicleBookRecord = null;
if(arrivalVo.getBookRecordId() != null) { if(arrivalVo.getBookRecordId() != null) {
updateBookRecordStatus(arrivalVo.getBookRecordId(), 2); vehicleBookRecord = vehicleBookRecordBiz.selectById(arrivalVo.getBookRecordId());
updateBookRecordStatus(vehicleBookRecord, 2);
} }
...@@ -216,6 +229,9 @@ public class VehicleActiveService { ...@@ -216,6 +229,9 @@ public class VehicleActiveService {
departureLog.setIllegalAmount(arrivalVo.getIllegalAmount()); departureLog.setIllegalAmount(arrivalVo.getIllegalAmount());
departureLog.setArrivalPic(arrivalVo.getArrivalPic()); departureLog.setArrivalPic(arrivalVo.getArrivalPic());
departureLog.setArrivalRemark(arrivalVo.getRemark()); departureLog.setArrivalRemark(arrivalVo.getRemark());
if(vehicleBookRecord != null) {
departureLog.setDepartureBranchCompanyId(vehicleBookRecord.getRetCompany());
}
vehicleDepartureLogMapper.updateByPrimaryKeySelective(departureLog); vehicleDepartureLogMapper.updateByPrimaryKeySelective(departureLog);
// 车辆活动日志 // 车辆活动日志
VehicleActiveLog activeLog = vehicleActiveLogMapper.selectLastByVehicleId(arrivalVo.getVehicleId()); VehicleActiveLog activeLog = vehicleActiveLogMapper.selectLastByVehicleId(arrivalVo.getVehicleId());
...@@ -233,8 +249,8 @@ public class VehicleActiveService { ...@@ -233,8 +249,8 @@ public class VehicleActiveService {
} }
} }
public void updateBookRecordStatus(Integer bookRecordId, Integer type) { public void updateBookRecordStatus(VehicleBookRecord vehicleBookRecord, Integer type) {
VehicleBookRecord vehicleBookRecord = vehicleBookRecordBiz.selectById(bookRecordId);
if(vehicleBookRecord != null) { if(vehicleBookRecord != null) {
if(type == 1) { if(type == 1) {
vehicleBookRecord.setActualStartDate(new Date()); vehicleBookRecord.setActualStartDate(new Date());
......
...@@ -412,7 +412,17 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -412,7 +412,17 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
public VehicleBookRecord applyVehicle(Integer userId, BookVehicleVO bookVehicleVo, String userName) throws Exception{ public VehicleBookRecord applyVehicle(Integer userId, BookVehicleVO bookVehicleVo, String userName) throws Exception{
log.info("预定车辆参数:userId = {}, bookVehicleVo = {},username = {}", userId, bookVehicleVo, userName); log.info("预定车辆参数:userId = {}, bookVehicleVo = {},username = {}", userId, bookVehicleVo, userName);
//检查车辆信息是否合法 //检查车辆信息是否合法
checkIfVehicleExists(bookVehicleVo.getVehicleId()); Vehicle vehicle = mapper.selectByPrimaryKey(bookVehicleVo.getVehicleId());
if(vehicle == null) {
throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getDesc(), ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getCode());
}
if (!vehicle.getStatus().equals(VehicleStatus.NORMAL.getCode())) {
throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_DISABLE.getDesc() + ", 车辆状态是:" + getVehicleStatus(vehicle.getStatus(), vehicle.getId()),
ResCode.VEHICLE_DEPARTURE_VEHICLE_DISABLE.getCode());
}
if(StringUtils.isBlank(bookVehicleVo.getBookStartDate()) || StringUtils.isBlank(bookVehicleVo.getBookEndDate())) {
throw new BaseException(ResultCode.DATE_TIME_IS_NULL);
}
//提取日期和相应的预定目标日期 //提取日期和相应的预定目标日期
Map<String,List<String>> yearMonthAndDate = Maps.newHashMap(); Map<String,List<String>> yearMonthAndDate = Maps.newHashMap();
DateTime startDay =DateTime.parse(bookVehicleVo.getBookStartDate(), DATE_TIME_FORMATTER); DateTime startDay =DateTime.parse(bookVehicleVo.getBookStartDate(), DATE_TIME_FORMATTER);
...@@ -440,6 +450,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -440,6 +450,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
vehicleBookRecord.setStatus(bookVehicleVo.getStatus()); vehicleBookRecord.setStatus(bookVehicleVo.getStatus());
vehicleBookRecord.setBookUser(userId); vehicleBookRecord.setBookUser(userId);
vehicleBookRecord.setBookUserName(userName); vehicleBookRecord.setBookUserName(userName);
vehicleBookRecord.setLiftCompany(vehicle.getParkBranchCompanyId());
vehicleBookRecordBiz.save(vehicleBookRecord); vehicleBookRecordBiz.save(vehicleBookRecord);
} else { } else {
vehicleBookRecord = vehicleBookRecordBiz.selectById(bookVehicleVo.getVehicleBookRecordId()); vehicleBookRecord = vehicleBookRecordBiz.selectById(bookVehicleVo.getVehicleBookRecordId());
...@@ -741,15 +752,47 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -741,15 +752,47 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
* @param id * @param id
*/ */
public boolean checkIfVehicleExists(String id){ public boolean checkIfVehicleExists(String id){
Integer count = mapper.selectCount(new Vehicle(){{
setId(id); Vehicle vehicle = mapper.selectByPrimaryKey(id);
}}); if(vehicle == null) {
if(count<=0){
return false; return false;
} }
if (!vehicle.getStatus().equals(VehicleStatus.NORMAL.getCode())) {
throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_DISABLE.getDesc() + ", 车辆状态是:" + getVehicleStatus(vehicle.getStatus(), vehicle.getId()),
ResCode.VEHICLE_DEPARTURE_VEHICLE_DISABLE.getCode());
}
return true; return true;
} }
public String getVehicleStatus(Integer status, String vehicleId) {
StringBuilder stringBuilder = new StringBuilder();
switch (status) {
case 1:
stringBuilder.append("正常运行");
break;
case 2:
stringBuilder.append("维修");
break;
case 3:
stringBuilder.append("报废");
break;
case 4:
stringBuilder.append("出车");
break;
case 5:
stringBuilder.append("保养");
break;
}
List<VehicleBookRecordVo> vehicleBookRecordVos = vehicleBookRecordBiz.selectByVehicleId(vehicleId);
if(vehicleBookRecordVos != null && vehicleBookRecordVos.size() > 0) {
stringBuilder.append("中,使用人:");
stringBuilder.append(vehicleBookRecordVos.get(0).getVehicleUsername());
stringBuilder.append(" 使用人电话:");
stringBuilder.append(vehicleBookRecordVos.get(0).getVehicleUserPhone());
}
return stringBuilder.toString();
}
/** /**
* 把日期范围转换为列表,并检查操作范围是否合法 * 把日期范围转换为列表,并检查操作范围是否合法
* @param yearMonthAndDate * @param yearMonthAndDate
...@@ -807,7 +850,8 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -807,7 +850,8 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
DateTime endDay =DateTime.parse(bookVehicleVo.getUnbookEndDate(), DATE_TIME_FORMATTER); DateTime endDay =DateTime.parse(bookVehicleVo.getUnbookEndDate(), DATE_TIME_FORMATTER);
//转换日期范围为列表,并检查是否合法 //转换日期范围为列表,并检查是否合法
uinbookDateList4DatePeriod(yearMonthAndDate,startDay,endDay); uinbookDateList4DatePeriod(yearMonthAndDate,startDay,endDay);
Map<String, Integer> map = vehicleBookHourInfoBiz.getPredictableHours(bookVehicleVo.getUnbookStartDate(), bookVehicleVo.getUnbookEndDate(), bookVehicleVo.getNotCheckTimeLegal()); //原设计为 读取 bookVehicleVo.getNotCheckTimeLegal(), 现在取消/拒绝 true
Map<String, Integer> map = vehicleBookHourInfoBiz.getPredictableHours(bookVehicleVo.getUnbookStartDate(), bookVehicleVo.getUnbookEndDate(), Boolean.TRUE);
if(yearMonthAndDate.size()>3){//连续的日期最多夸3个月 if(yearMonthAndDate.size()>3){//连续的日期最多夸3个月
throw new BaseException(ResultCode.ONLY_UNBOOK_TWO_MONTH); throw new BaseException(ResultCode.ONLY_UNBOOK_TWO_MONTH);
} }
...@@ -848,6 +892,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -848,6 +892,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
} }
public boolean unbookHourInfo(String vehicleId, Map<String, Integer> hourInfo, Map<String,Object> params) { public boolean unbookHourInfo(String vehicleId, Map<String, Integer> hourInfo, Map<String,Object> params) {
boolean flag = false;
for (Map.Entry<String, Integer> entry : hourInfo.entrySet()) { for (Map.Entry<String, Integer> entry : hourInfo.entrySet()) {
VehicleBookHourInfoDto vehicleBookHourInfoDto = new VehicleBookHourInfoDto(); VehicleBookHourInfoDto vehicleBookHourInfoDto = new VehicleBookHourInfoDto();
vehicleBookHourInfoDto.setYearMonthDay(entry.getKey()); vehicleBookHourInfoDto.setYearMonthDay(entry.getKey());
...@@ -855,12 +900,15 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -855,12 +900,15 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
List<VehicleBookHourInfo> vehicleBookHourInfos = vehicleBookHourInfoBiz.selectByVehicleAndDate(vehicleBookHourInfoDto); List<VehicleBookHourInfo> vehicleBookHourInfos = vehicleBookHourInfoBiz.selectByVehicleAndDate(vehicleBookHourInfoDto);
if (vehicleBookHourInfos != null && vehicleBookHourInfos.size() > 0) { if (vehicleBookHourInfos != null && vehicleBookHourInfos.size() > 0) {
if((vehicleBookHourInfos.get(0).getBookedHour() | 0) == 0) { if((vehicleBookHourInfos.get(0).getBookedHour() | 0) == 0) {
if(!flag) {
Integer effected = vehicleBookInfoMapper.updateBookedInfo(params); Integer effected = vehicleBookInfoMapper.updateBookedInfo(params);
if (effected < 1) { if (effected < 1) {
return Boolean.FALSE; return Boolean.FALSE;
} else { } else {
flag = true;
continue; continue;
} }
}
} else { } else {
vehicleBookHourInfos.get(0).setBookedHour((vehicleBookHourInfos.get(0).getBookedHour() & ~entry.getValue())); vehicleBookHourInfos.get(0).setBookedHour((vehicleBookHourInfos.get(0).getBookedHour() & ~entry.getValue()));
int effect = vehicleBookHourInfoBiz.updateByIdRe(vehicleBookHourInfos.get(0)); int effect = vehicleBookHourInfoBiz.updateByIdRe(vehicleBookHourInfos.get(0));
...@@ -1045,6 +1093,9 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -1045,6 +1093,9 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
//处理预定日期相关参数 //处理预定日期相关参数
adjustBookedInfoParam(params,vehiclePageQueryVo); adjustBookedInfoParam(params,vehiclePageQueryVo);
params.get("yearMonthAndParam"); params.get("yearMonthAndParam");
if(vehiclePageQueryVo.getModelId() == null) {
params.remove("modelId");
}
PageHelper.startPage(pageNo,pageSize); PageHelper.startPage(pageNo,pageSize);
List<ResultVehicleVo> vehicles = mapper.getByPage(params); List<ResultVehicleVo> vehicles = mapper.getByPage(params);
PageInfo<ResultVehicleVo> vehiclePageInfo = new PageInfo<>(vehicles); PageInfo<ResultVehicleVo> vehiclePageInfo = new PageInfo<>(vehicles);
......
...@@ -47,11 +47,10 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V ...@@ -47,11 +47,10 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V
if (bookStartDate.compareTo(DateTime.now().toString(DEFAULT_DATE_TIME_FORMATTER)) < 0) { if (bookStartDate.compareTo(DateTime.now().toString(DEFAULT_DATE_TIME_FORMATTER)) < 0) {
throw new BaseException(ResultCode.ONLY_BOOK_FROM_TODAY); throw new BaseException(ResultCode.ONLY_BOOK_FROM_TODAY);
} }
if (bookStartDate.compareTo(bookEndDate) > 0) {
throw new BaseException(ResultCode.ONLY_BOOK_FROM_TODAY);
} }
if (bookStartDate.compareTo(bookEndDate) > 0) {
throw new BaseException(ResultCode.END_TIME_FROM_TODAY);
} }
Map<String, Integer> predictableHours = Maps.newHashMap(); Map<String, Integer> predictableHours = Maps.newHashMap();
//预定开始小时 //预定开始小时
int hour = new DateTime(startDate).hourOfDay().get(); int hour = new DateTime(startDate).hourOfDay().get();
......
...@@ -46,7 +46,6 @@ public class VehicleActiveController { ...@@ -46,7 +46,6 @@ public class VehicleActiveController {
@PostMapping("small/departure") @PostMapping("small/departure")
@IgnoreUserToken @IgnoreUserToken
public RestResponse departureBySmall(@RequestBody VehicleDepartureVo departureVo) { public RestResponse departureBySmall(@RequestBody VehicleDepartureVo departureVo) {
if (departureVo == null || departureVo.getVehicleId() == null if (departureVo == null || departureVo.getVehicleId() == null
|| departureVo.getMileage() == null || departureVo.getDepartureBranchCompanyId() == null || departureVo.getMileage() == null || departureVo.getDepartureBranchCompanyId() == null
|| departureVo.getExpectArrivalBranchCompanyId() == null) { || departureVo.getExpectArrivalBranchCompanyId() == null) {
......
...@@ -367,7 +367,7 @@ ...@@ -367,7 +367,7 @@
where id = #{id} where id = #{id}
</select> </select>
<select id="getByVehicleId" parameterType="java.lang.String" <select id="selectByVehicleId" parameterType="java.lang.String"
resultType="com.xxfc.platform.vehicle.pojo.VehicleBookRecordVo"> resultType="com.xxfc.platform.vehicle.pojo.VehicleBookRecordVo">
SELECT v1.*,bc2.name retCompanyName from vehicle_book_record v1 SELECT v1.*,bc2.name retCompanyName from vehicle_book_record v1
LEFT JOIN branch_company bc2 on v1.ret_company = bc2.id LEFT JOIN branch_company bc2 on v1.ret_company = bc2.id
...@@ -485,7 +485,7 @@ ...@@ -485,7 +485,7 @@
and v1.book_user != -2 and v1.book_user != -2
</where> </where>
group by v1.id group by v1.id
order by create_time DESC order by book_start_date DESC
</select> </select>
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<association property="vehicleModel" column="model_id" <association property="vehicleModel" column="model_id"
select="com.xxfc.platform.vehicle.mapper.VehicleModelMapper.selectByPrimaryKey"/> select="com.xxfc.platform.vehicle.mapper.VehicleModelMapper.selectByPrimaryKey"/>
<association property="vehicleBookRecord" column="id" <association property="vehicleBookRecord" column="id"
select="com.xxfc.platform.vehicle.mapper.VehicleBookRecordMapper.getByVehicleId"/> select="com.xxfc.platform.vehicle.mapper.VehicleBookRecordMapper.selectByVehicleId"/>
</resultMap> </resultMap>
<resultMap id="vehicleModel" type="com.xxfc.platform.vehicle.pojo.VehicleAndModelInfoVo"> <resultMap id="vehicleModel" type="com.xxfc.platform.vehicle.pojo.VehicleAndModelInfoVo">
...@@ -70,6 +70,7 @@ ...@@ -70,6 +70,7 @@
v.manufacturer, v.manufacturer,
v.receive_time, v.receive_time,
v.update_time, v.update_time,
v.model_id,
v.mileage_last_update as mileage v.mileage_last_update as mileage
<if test=" yearMonthAndParam != null "> <if test=" yearMonthAndParam != null ">
,vbi.booked_date ,vbi.booked_date
...@@ -92,6 +93,9 @@ ...@@ -92,6 +93,9 @@
<if test="mRangeDateEnd !=null"> <if test="mRangeDateEnd !=null">
and v.maintenance_date &lt;= #{mRangeDateEnd} and v.maintenance_date &lt;= #{mRangeDateEnd}
</if> </if>
<if test="modelId != null and modelId != ''">
and v.model_id = #{modelId}
</if>
<if test="mRangeDateStart !=null"> <if test="mRangeDateStart !=null">
and v.maintenance_date &gt;= #{mRangeDateStart} and v.maintenance_date &gt;= #{mRangeDateStart}
</if> </if>
...@@ -202,6 +206,7 @@ ...@@ -202,6 +206,7 @@
v.manufacturer, v.manufacturer,
v.receive_time, v.receive_time,
v.update_time, v.update_time,
v.model_id,
v.mileage_last_update as mileage v.mileage_last_update as mileage
<if test=" yearMonthAndParam !=null "> <if test=" yearMonthAndParam !=null ">
,vbi.booked_date ,vbi.booked_date
...@@ -245,6 +250,9 @@ ...@@ -245,6 +250,9 @@
<if test="mRangeDateEnd !=null"> <if test="mRangeDateEnd !=null">
and v.maintenance_date &lt;= #{mRangeDateEnd} and v.maintenance_date &lt;= #{mRangeDateEnd}
</if> </if>
<if test="modelId != null and modelId != ''">
and v.model_id = #{modelId}
</if>
<if test="mRangeDateStart !=null"> <if test="mRangeDateStart !=null">
and v.maintenance_date &gt;= #{mRangeDateStart} and v.maintenance_date &gt;= #{mRangeDateStart}
</if> </if>
...@@ -392,6 +400,9 @@ ...@@ -392,6 +400,9 @@
<if test="useType != null"> <if test="useType != null">
and v1.use_type = #{useType} and v1.use_type = #{useType}
</if> </if>
<if test="modelId != null and modelId != ''">
and v1.model_id = #{modelId}
</if>
and v1.is_del != 1 and v1.is_del != 1
</where> </where>
</select> </select>
...@@ -415,6 +426,9 @@ ...@@ -415,6 +426,9 @@
#{id} #{id}
</foreach> </foreach>
</if> </if>
<if test="modelId != null and modelId != ''">
and v1.model_id = #{modelId}
</if>
and v1.is_del != 1 and v1.is_del != 1
</where> </where>
ORDER BY parkCompanyName ORDER BY parkCompanyName
...@@ -493,6 +507,9 @@ ...@@ -493,6 +507,9 @@
#{id} #{id}
</foreach> </foreach>
</if> </if>
<if test="modelId != null and modelId != ''">
and v2.model_id = #{modelId}
</if>
and v2.is_del != 1 and v2.is_del != 1
</where> </where>
</select> </select>
......
...@@ -58,6 +58,9 @@ ...@@ -58,6 +58,9 @@
<if test="status != null"> <if test="status != null">
and v.status = #{status} and v.status = #{status}
</if> </if>
<if test="modelId != null and modelId != ''">
and v.model_id = #{modelId}
</if>
<if test="companyIds != null and companyIds.size > 0"> <if test="companyIds != null and companyIds.size > 0">
and v.park_branch_company_id in and v.park_branch_company_id in
<foreach collection="companyIds" item="id" open="(" separator="," close=")"> <foreach collection="companyIds" item="id" open="(" separator="," close=")">
......
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