MachineUploadCarLogCmd.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  1. package com.java110.common.cmd.machineTranslate;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.core.annotation.Java110Cmd;
  4. import com.java110.core.annotation.Java110Transactional;
  5. import com.java110.core.context.ICmdDataFlowContext;
  6. import com.java110.core.event.cmd.AbstractServiceCmdListener;
  7. import com.java110.core.event.cmd.CmdEvent;
  8. import com.java110.core.factory.GenerateCodeFactory;
  9. import com.java110.dto.CommunityMemberDto;
  10. import com.java110.dto.fee.FeeAttrDto;
  11. import com.java110.dto.fee.FeeConfigDto;
  12. import com.java110.dto.fee.FeeDto;
  13. import com.java110.dto.machine.CarInoutDetailDto;
  14. import com.java110.dto.machine.CarInoutDto;
  15. import com.java110.dto.machine.MachineDto;
  16. import com.java110.dto.owner.OwnerCarDto;
  17. import com.java110.dto.owner.OwnerDto;
  18. import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
  19. import com.java110.intf.common.ICarInoutDetailV1InnerServiceSMO;
  20. import com.java110.intf.common.ICarInoutPaymentV1InnerServiceSMO;
  21. import com.java110.intf.common.ICarInoutV1InnerServiceSMO;
  22. import com.java110.intf.common.IMachineInnerServiceSMO;
  23. import com.java110.intf.community.ICommunityInnerServiceSMO;
  24. import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
  25. import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
  26. import com.java110.intf.fee.IFeeInnerServiceSMO;
  27. import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO;
  28. import com.java110.intf.user.IBuildingOwnerV1InnerServiceSMO;
  29. import com.java110.intf.user.IOwnerCarInnerServiceSMO;
  30. import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
  31. import com.java110.po.car.CarInoutDetailPo;
  32. import com.java110.po.car.CarInoutPo;
  33. import com.java110.po.car.OwnerCarPo;
  34. import com.java110.po.carInoutPayment.CarInoutPaymentPo;
  35. import com.java110.po.fee.FeeAttrPo;
  36. import com.java110.po.fee.PayFeeDetailPo;
  37. import com.java110.po.fee.PayFeePo;
  38. import com.java110.po.owner.OwnerPo;
  39. import com.java110.utils.exception.CmdException;
  40. import com.java110.utils.util.Assert;
  41. import com.java110.utils.util.DateUtil;
  42. import org.springframework.beans.factory.annotation.Autowired;
  43. import java.util.ArrayList;
  44. import java.util.List;
  45. /**
  46. * 类表述:车辆进出场
  47. * 服务编码:machineTranslate.machineUploadCarLog
  48. * 请求路劲:/app/machineTranslate.machineUploadCarLog
  49. * add by 吴学文 at 2021-09-18 13:35:13 mail: 928255095@qq.com
  50. * open source address: https://gitee.com/wuxw7/MicroCommunity
  51. * 官网:http://www.homecommunity.cn
  52. * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
  53. * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
  54. */
  55. @Java110Cmd(serviceCode = "machineTranslate.machineUploadCarLog")
  56. public class MachineUploadCarLogCmd extends AbstractServiceCmdListener {
  57. public static final int CAR_TYPE_MONTH = 0; //月租车
  58. public static final int CAR_TYPE_SUB = 1; //成员车辆
  59. public static final int CAR_TYPE_TEMP = 2; //临时车辆
  60. public static final int CAR_TYPE_NO_DATA = 3; //没有数据
  61. public static final String TEMP_CAR_OWNER = "临时车车主";
  62. public static final String CODE_PREFIX_ID = "10";
  63. @Autowired
  64. private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
  65. @Autowired
  66. private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
  67. @Autowired
  68. private ICarInoutV1InnerServiceSMO carInoutV1InnerServiceSMOImpl;
  69. @Autowired
  70. private IBuildingOwnerV1InnerServiceSMO buildingOwnerV1InnerServiceSMOImpl;
  71. @Autowired
  72. private ICarInoutDetailV1InnerServiceSMO carInoutDetailV1InnerServiceSMOImpl;
  73. @Autowired
  74. private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl;
  75. @Autowired
  76. private ITempCarFeeConfigInnerServiceSMO tempCarFeeConfigInnerServiceSMOImpl;
  77. @Autowired
  78. private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
  79. @Autowired
  80. private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl;
  81. @Autowired
  82. private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
  83. @Autowired
  84. private ICarInoutPaymentV1InnerServiceSMO carInoutPaymentV1InnerServiceSMOImpl;
  85. @Autowired
  86. private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
  87. @Override
  88. public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
  89. Assert.hasKeyAndValue(reqJson, "machineCode", "必填,请填写设备编码");
  90. Assert.hasKeyAndValue(reqJson, "carNum", "必填,请填写车牌号");
  91. Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
  92. }
  93. @Override
  94. @Java110Transactional
  95. public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  96. //是否是临时车
  97. int tempCar = CAR_TYPE_MONTH;
  98. //查询设备信息
  99. MachineDto machineDto = new MachineDto();
  100. machineDto.setMachineCode(reqJson.getString("machineCode"));
  101. machineDto.setCommunityId(reqJson.getString("communityId"));
  102. machineDto.setMachineTypeCd(MachineDto.MACHINE_TYPE_CAR);
  103. List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
  104. Assert.listOnlyOne(machineDtos, "设备不存在");
  105. //查询车辆
  106. OwnerCarDto ownerCarDto = new OwnerCarDto();
  107. ownerCarDto.setCarNum(reqJson.getString("carNum"));
  108. ownerCarDto.setCommunityId(reqJson.getString("communityId"));
  109. List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
  110. //说明是临时车
  111. if (ownerCarDtos == null || ownerCarDtos.size() == 0) {
  112. tempCar = CAR_TYPE_NO_DATA;
  113. } else {
  114. reqJson.put("carId", ownerCarDtos.get(0).getCarId());
  115. if (OwnerCarDto.CAR_TYPE_TEMP.equals(ownerCarDtos.get(0).getCarTypeCd())) {
  116. tempCar = CAR_TYPE_TEMP;
  117. }
  118. }
  119. //进场处理
  120. if (MachineDto.DIRECTION_IN.equals(machineDtos.get(0).getDirection())) {
  121. carIn(reqJson, machineDtos.get(0), tempCar);
  122. } else {
  123. carOut(reqJson, machineDtos.get(0), tempCar);
  124. }
  125. }
  126. /**
  127. * 车辆出场
  128. *
  129. * @param reqJson
  130. * @param machineDto
  131. * @param tempCar
  132. */
  133. private void carOut(JSONObject reqJson, MachineDto machineDto, int tempCar) {
  134. CarInoutDto carInoutDto = new CarInoutDto();
  135. carInoutDto.setCommunityId(reqJson.getString("communityId"));
  136. carInoutDto.setCarNum(reqJson.getString("carNum"));
  137. carInoutDto.setPaId(machineDto.getLocationObjId());
  138. carInoutDto.setStates(new String[]{
  139. CarInoutDto.STATE_IN,
  140. CarInoutDto.STATE_PAY,
  141. CarInoutDto.STATE_REPAY
  142. });
  143. List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
  144. if (carInoutDtos == null || carInoutDtos.size() < 1) {
  145. //可能车辆异常情况 没有 进场 补充进场记录
  146. reqJson.put("inTime", reqJson.getString("outTime"));
  147. carIn(reqJson, machineDto, tempCar);
  148. carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
  149. }
  150. //保存出场明细
  151. CarInoutDetailPo carInoutDetailPo = new CarInoutDetailPo();
  152. carInoutDetailPo.setCarInout(CarInoutDetailDto.CAR_INOUT_OUT);
  153. carInoutDetailPo.setCarNum(reqJson.getString("carNum"));
  154. carInoutDetailPo.setCommunityId(reqJson.getString("communityId"));
  155. carInoutDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
  156. carInoutDetailPo.setInoutId(carInoutDtos.get(0).getInoutId());
  157. carInoutDetailPo.setMachineCode(machineDto.getMachineCode());
  158. carInoutDetailPo.setMachineId(machineDto.getMachineId());
  159. carInoutDetailPo.setPaId(machineDto.getLocationObjId());
  160. int flag = carInoutDetailV1InnerServiceSMOImpl.saveCarInoutDetail(carInoutDetailPo);
  161. if (flag < 1) {
  162. throw new CmdException("保存出记录明细失败");
  163. }
  164. //将状态更新为 出场状态
  165. CarInoutPo carInoutPo = new CarInoutPo();
  166. carInoutPo.setPaId(carInoutDtos.get(0).getPaId());
  167. carInoutPo.setOutTime(reqJson.getString("outTime"));
  168. carInoutPo.setInoutId(carInoutDtos.get(0).getInoutId());
  169. carInoutPo.setCommunityId(carInoutDtos.get(0).getCommunityId());
  170. carInoutPo.setState(CarInoutDto.STATE_OUT);
  171. flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo);
  172. if (flag < 1) {
  173. throw new CmdException("更新出场时间失败");
  174. }
  175. //写支付记录
  176. CarInoutPaymentPo carInoutPaymentPo = new CarInoutPaymentPo();
  177. carInoutPaymentPo.setPaymentId(GenerateCodeFactory.getGeneratorId("10"));
  178. carInoutPaymentPo.setCommunityId(carInoutDtos.get(0).getCommunityId());
  179. carInoutPaymentPo.setInoutId(carInoutDtos.get(0).getInoutId());
  180. carInoutPaymentPo.setPaId(carInoutDtos.get(0).getPaId());
  181. carInoutPaymentPo.setPayCharge(reqJson.getString("payCharge"));
  182. carInoutPaymentPo.setPayType(reqJson.getString("payType"));
  183. carInoutPaymentPo.setRealCharge(reqJson.getString("realCharge"));
  184. flag = carInoutPaymentV1InnerServiceSMOImpl.saveCarInoutPayment(carInoutPaymentPo);
  185. if (flag < 1) {
  186. throw new CmdException("更新出场时间失败");
  187. }
  188. //月租车
  189. if (tempCar != CAR_TYPE_NO_DATA && tempCar != CAR_TYPE_TEMP) {
  190. return;
  191. }
  192. //如果有费用 则缴费
  193. boolean hasFee = hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo);
  194. double realCharge = Double.parseDouble(carInoutPaymentPo.getRealCharge());
  195. //有费用 或者 缴费为0 时结束
  196. if (hasFee || realCharge == 0) {
  197. return;
  198. }
  199. // 判断是否存在 临时车 虚拟业主
  200. OwnerDto ownerDto = new OwnerDto();
  201. ownerDto.setCommunityId(reqJson.getString("communityId"));
  202. ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
  203. ownerDto.setOwnerFlag(OwnerDto.OWNER_FLAG_FALSE);
  204. ownerDto.setName(TEMP_CAR_OWNER);
  205. List<OwnerDto> ownerDtos = buildingOwnerV1InnerServiceSMOImpl.queryBuildingOwners(ownerDto);
  206. if (ownerDtos == null || ownerDtos.size() < 1) {
  207. return;
  208. }
  209. JSONObject paramIn = new JSONObject();
  210. paramIn.put("inTime", carInoutDtos.get(0).getInTime());
  211. paramIn.put("carId", reqJson.getString("carId"));
  212. paramIn.put("communityId", carInoutDtos.get(0).getCommunityId());
  213. paramIn.put("inoutId", carInoutDtos.get(0).getInoutId());
  214. paramIn.put("ownerId", ownerDtos.get(0).getMemberId());
  215. saveTempCarFee(paramIn, machineDto);
  216. //再去缴费
  217. hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo);
  218. }
  219. private boolean hasFeeAndPayFee(CarInoutDto carInoutDto, JSONObject reqJson, CarInoutPo carInoutPo, CarInoutPaymentPo carInoutPaymentPo) {
  220. FeeAttrDto feeAttrDto = new FeeAttrDto();
  221. feeAttrDto.setCommunityId(carInoutPo.getCommunityId());
  222. feeAttrDto.setSpecCd(FeeAttrDto.SPEC_CD_CAR_INOUT_ID);
  223. feeAttrDto.setValue(carInoutPo.getInoutId());
  224. feeAttrDto.setState(FeeDto.STATE_DOING);
  225. List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFeeByAttr(feeAttrDto);
  226. if (feeDtos == null || feeDtos.size() < 1) {
  227. return false;
  228. }
  229. PayFeePo payFeePo = new PayFeePo();
  230. payFeePo.setState(FeeDto.STATE_FINISH);
  231. payFeePo.setFeeId(feeDtos.get(0).getFeeId());
  232. payFeePo.setEndTime(carInoutPo.getOutTime());
  233. payFeePo.setCommunityId(feeDtos.get(0).getCommunityId());
  234. int flag = feeInnerServiceSMOImpl.updateFee(payFeePo);
  235. if (flag < 1) {
  236. throw new CmdException("更新费用失败");
  237. }
  238. PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
  239. payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
  240. payFeeDetailPo.setPrimeRate("1.00");
  241. FeeDto feeDto = feeDtos.get(0);
  242. payFeeDetailPo.setStartTime(DateUtil.getFormatTimeString(feeDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
  243. payFeeDetailPo.setEndTime(carInoutPo.getOutTime());
  244. payFeeDetailPo.setCommunityId(carInoutDto.getCommunityId());
  245. payFeeDetailPo.setCycles("1");
  246. payFeeDetailPo.setReceivableAmount(carInoutPaymentPo.getPayCharge());
  247. payFeeDetailPo.setReceivedAmount(carInoutPaymentPo.getRealCharge());
  248. payFeeDetailPo.setFeeId(feeDto.getFeeId());
  249. flag = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo);
  250. if (flag < 1) {
  251. throw new CmdException("更新费用失败");
  252. }
  253. return true;
  254. }
  255. /**
  256. * 车辆入场
  257. *
  258. * @param reqJson
  259. * @param machineDto
  260. * @param tempCar
  261. */
  262. private void carIn(JSONObject reqJson, MachineDto machineDto, int tempCar) {
  263. //保存
  264. CarInoutPo carInoutPo = new CarInoutPo();
  265. carInoutPo.setCarNum(reqJson.getString("carNum"));
  266. carInoutPo.setCommunityId(reqJson.getString("communityId"));
  267. carInoutPo.setInoutId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
  268. carInoutPo.setInTime(reqJson.getString("inTime"));
  269. carInoutPo.setState(CarInoutDto.STATE_IN);
  270. carInoutPo.setPaId(machineDto.getLocationObjId());
  271. int flag = carInoutV1InnerServiceSMOImpl.saveCarInout(carInoutPo);
  272. if (flag < 1) {
  273. throw new CmdException("保存入记录失败");
  274. }
  275. reqJson.put("inoutId", carInoutPo.getInoutId());
  276. //保存明细
  277. CarInoutDetailPo carInoutDetailPo = new CarInoutDetailPo();
  278. carInoutDetailPo.setCarInout(CarInoutDetailDto.CAR_INOUT_IN);
  279. carInoutDetailPo.setCarNum(reqJson.getString("carNum"));
  280. carInoutDetailPo.setCommunityId(reqJson.getString("communityId"));
  281. carInoutDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
  282. carInoutDetailPo.setInoutId(carInoutPo.getInoutId());
  283. carInoutDetailPo.setMachineCode(machineDto.getMachineCode());
  284. carInoutDetailPo.setMachineId(machineDto.getMachineId());
  285. carInoutDetailPo.setPaId(machineDto.getLocationObjId());
  286. flag = carInoutDetailV1InnerServiceSMOImpl.saveCarInoutDetail(carInoutDetailPo);
  287. if (flag < 1) {
  288. throw new CmdException("保存入记录明细失败");
  289. }
  290. //月租车
  291. if (tempCar != CAR_TYPE_NO_DATA && tempCar != CAR_TYPE_TEMP) {
  292. return;
  293. }
  294. //不是自己的道闸跳过
  295. if (!MachineDto.MACHINE_TYPE_CAR.equals(machineDto.getMachineTypeCd())) {
  296. return;
  297. }
  298. // 判断是否存在 临时车 虚拟业主
  299. OwnerDto ownerDto = new OwnerDto();
  300. ownerDto.setCommunityId(reqJson.getString("communityId"));
  301. ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
  302. ownerDto.setOwnerFlag(OwnerDto.OWNER_FLAG_FALSE);
  303. ownerDto.setName(TEMP_CAR_OWNER);
  304. List<OwnerDto> ownerDtos = buildingOwnerV1InnerServiceSMOImpl.queryBuildingOwners(ownerDto);
  305. if (ownerDtos == null || ownerDtos.size() < 1) {
  306. saveTempOwner(reqJson, machineDto);
  307. } else {
  308. reqJson.put("ownerId", ownerDtos.get(0).getMemberId());
  309. }
  310. if (tempCar == CAR_TYPE_NO_DATA) {
  311. saveTempCar(reqJson, machineDto);
  312. }
  313. saveTempCarFee(reqJson, machineDto);
  314. }
  315. /**
  316. * 创建临时车费用
  317. *
  318. * @param reqJson
  319. * @param machineDto
  320. */
  321. private void saveTempCarFee(JSONObject reqJson, MachineDto machineDto) {
  322. //创建费用
  323. TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto();
  324. tempCarFeeConfigDto.setCommunityId(reqJson.getString("communityId"));
  325. tempCarFeeConfigDto.setPaId(machineDto.getLocationObjId());
  326. List<TempCarFeeConfigDto> tempCarFeeConfigDtos = tempCarFeeConfigInnerServiceSMOImpl.queryTempCarFeeConfigs(tempCarFeeConfigDto);
  327. if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) { // 停车场未配置收费规则 则不创建费用
  328. return;
  329. }
  330. CommunityMemberDto communityMemberDto = new CommunityMemberDto();
  331. communityMemberDto.setCommunityId(reqJson.getString("communityId"));
  332. communityMemberDto.setMemberTypeCd(CommunityMemberDto.MEMBER_TYPE_PROPERTY);
  333. communityMemberDto.setAuditStatusCd(CommunityMemberDto.AUDIT_STATUS_NORMAL);
  334. List<CommunityMemberDto> communityMemberDtos = communityInnerServiceSMOImpl.getCommunityMembers(communityMemberDto);
  335. Assert.listOnlyOne(communityMemberDtos, "小区成员不存在");
  336. List<PayFeePo> payFeePos = new ArrayList<>();
  337. List<FeeAttrPo> feeAttrPos = new ArrayList<>();
  338. PayFeePo payFeePo = new PayFeePo();
  339. payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
  340. payFeePo.setEndTime(reqJson.getString("inTime"));
  341. payFeePo.setState(FeeDto.STATE_DOING);
  342. payFeePo.setCommunityId(reqJson.getString("communityId"));
  343. payFeePo.setConfigId(tempCarFeeConfigDto.getFeeConfigId());
  344. payFeePo.setPayerObjId(reqJson.getString("carId"));
  345. payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
  346. payFeePo.setUserId("-1");
  347. payFeePo.setIncomeObjId(communityMemberDtos.get(0).getMemberId());
  348. payFeePo.setFeeTypeCd(FeeConfigDto.FEE_TYPE_CD_PARKING);
  349. payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
  350. payFeePo.setAmount("-1");
  351. payFeePo.setBatchId("-1");
  352. //payFeePo.setStartTime(importRoomFee.getStartTime());
  353. payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
  354. payFeePos.add(payFeePo);
  355. FeeAttrPo feeAttrPo = new FeeAttrPo();
  356. feeAttrPo.setCommunityId(reqJson.getString("communityId"));
  357. feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
  358. feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
  359. feeAttrPo.setValue(reqJson.getString("inTime"));
  360. feeAttrPo.setFeeId(payFeePo.getFeeId());
  361. feeAttrPos.add(feeAttrPo);
  362. feeAttrPo = new FeeAttrPo();
  363. feeAttrPo.setCommunityId(reqJson.getString("communityId"));
  364. feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
  365. feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
  366. feeAttrPo.setValue(reqJson.getString("ownerId"));
  367. feeAttrPo.setFeeId(payFeePo.getFeeId());
  368. feeAttrPos.add(feeAttrPo);
  369. feeAttrPo = new FeeAttrPo();
  370. feeAttrPo.setCommunityId(reqJson.getString("communityId"));
  371. feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
  372. feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
  373. feeAttrPo.setValue(TEMP_CAR_OWNER);
  374. feeAttrPo.setFeeId(payFeePo.getFeeId());
  375. feeAttrPos.add(feeAttrPo);
  376. feeAttrPo = new FeeAttrPo();
  377. feeAttrPo.setCommunityId(reqJson.getString("communityId"));
  378. feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
  379. feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
  380. feeAttrPo.setValue("11111111111");
  381. feeAttrPo.setFeeId(payFeePo.getFeeId());
  382. feeAttrPos.add(feeAttrPo);
  383. feeAttrPo = new FeeAttrPo();
  384. feeAttrPo.setCommunityId(reqJson.getString("communityId"));
  385. feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
  386. feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_CAR_INOUT_ID);
  387. feeAttrPo.setValue(reqJson.getString("inoutId"));
  388. feeAttrPo.setFeeId(payFeePo.getFeeId());
  389. feeAttrPos.add(feeAttrPo);
  390. int flag = feeInnerServiceSMOImpl.saveFee(payFeePos);
  391. if (flag < 1) {
  392. throw new CmdException("保存临时车费用失败");
  393. }
  394. flag = feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
  395. if (flag < 1) {
  396. throw new CmdException("保存临时车费用属性失败");
  397. }
  398. }
  399. /**
  400. * 保存业主
  401. *
  402. * @param reqJson
  403. * @param machineDto
  404. */
  405. private void saveTempOwner(JSONObject reqJson, MachineDto machineDto) {
  406. OwnerPo ownerPo = new OwnerPo();
  407. ownerPo.setSex("1");
  408. ownerPo.setCommunityId(reqJson.getString("communityId"));
  409. ownerPo.setMemberId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId));
  410. reqJson.put("ownerId", ownerPo.getMemberId());
  411. ownerPo.setLink("11111111111");
  412. ownerPo.setUserId("-1");
  413. ownerPo.setAge("1");
  414. ownerPo.setIdCard("111111111111111111");
  415. ownerPo.setName(TEMP_CAR_OWNER);
  416. ownerPo.setOwnerId(ownerPo.getMemberId());
  417. ownerPo.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
  418. ownerPo.setRemark("虚拟业主 物联网同步");
  419. ownerPo.setbId("-1");
  420. ownerPo.setOwnerFlag(OwnerDto.OWNER_FLAG_FALSE);
  421. ownerPo.setState(OwnerDto.STATE_FINISH);
  422. int flag = buildingOwnerV1InnerServiceSMOImpl.saveBuildingOwner(ownerPo);
  423. if (flag < 1) {
  424. throw new CmdException("保存临时车主");
  425. }
  426. }
  427. /**
  428. * 保存车辆
  429. *
  430. * @param reqJson
  431. * @param machineDto
  432. */
  433. private void saveTempCar(JSONObject reqJson, MachineDto machineDto) {
  434. OwnerCarPo ownerCarPo = new OwnerCarPo();
  435. ownerCarPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
  436. ownerCarPo.setCarId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId));
  437. ownerCarPo.setState(OwnerCarDto.STATE_NORMAL);
  438. ownerCarPo.setCommunityId(machineDto.getCommunityId());
  439. ownerCarPo.setPsId("-1");
  440. ownerCarPo.setMemberId(ownerCarPo.getCarId());
  441. ownerCarPo.setCarTypeCd(OwnerCarDto.CAR_TYPE_CD_TEMP);
  442. ownerCarPo.setCarType("9901");
  443. ownerCarPo.setCarBrand("未知");
  444. ownerCarPo.setCarColor("未知");
  445. ownerCarPo.setCarNum(reqJson.getString("carNum"));
  446. ownerCarPo.setOwnerId(reqJson.getString("ownerId"));
  447. ownerCarPo.setRemark("临时车 物联网同步");
  448. ownerCarPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
  449. ownerCarPo.setUserId("-1");
  450. int flag = ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo);
  451. if (flag < 1) {
  452. throw new CmdException("保存临时车失败");
  453. }
  454. reqJson.put("carId", ownerCarPo.getCarId());
  455. }
  456. }