|
|
@@ -7,10 +7,17 @@ import com.java110.core.context.ICmdDataFlowContext;
|
|
|
import com.java110.core.event.cmd.Cmd;
|
|
|
import com.java110.core.event.cmd.CmdEvent;
|
|
|
import com.java110.core.factory.GenerateCodeFactory;
|
|
|
+import com.java110.dto.CommunityMemberDto;
|
|
|
+import com.java110.dto.carInoutPayment.CarInoutPaymentDto;
|
|
|
import com.java110.dto.fee.FeeAttrDto;
|
|
|
+import com.java110.dto.fee.FeeConfigDto;
|
|
|
+import com.java110.dto.fee.FeeDetailDto;
|
|
|
import com.java110.dto.fee.FeeDto;
|
|
|
import com.java110.dto.machine.CarInoutDto;
|
|
|
import com.java110.dto.machine.MachineDto;
|
|
|
+import com.java110.dto.owner.OwnerCarDto;
|
|
|
+import com.java110.dto.owner.OwnerDto;
|
|
|
+import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
|
|
|
import com.java110.intf.common.ICarInoutPaymentV1InnerServiceSMO;
|
|
|
import com.java110.intf.common.ICarInoutV1InnerServiceSMO;
|
|
|
import com.java110.intf.common.IMachineInnerServiceSMO;
|
|
|
@@ -19,10 +26,12 @@ import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
|
|
|
import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
|
|
|
import com.java110.intf.fee.IFeeInnerServiceSMO;
|
|
|
import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO;
|
|
|
+import com.java110.intf.user.IBuildingOwnerV1InnerServiceSMO;
|
|
|
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
|
|
|
import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
|
|
|
import com.java110.po.car.CarInoutPo;
|
|
|
import com.java110.po.carInoutPayment.CarInoutPaymentPo;
|
|
|
+import com.java110.po.fee.FeeAttrPo;
|
|
|
import com.java110.po.fee.PayFeeDetailPo;
|
|
|
import com.java110.po.fee.PayFeePo;
|
|
|
import com.java110.utils.exception.CmdException;
|
|
|
@@ -30,6 +39,7 @@ import com.java110.utils.util.Assert;
|
|
|
import com.java110.utils.util.DateUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
@@ -45,6 +55,7 @@ import java.util.List;
|
|
|
@Java110Cmd(serviceCode = "machineTranslate.machineUploadCarPaymentCmd")
|
|
|
public class MachineUploadCarPaymentCmd extends Cmd {
|
|
|
|
|
|
+ public static final String TEMP_CAR_OWNER = "临时车车主";
|
|
|
|
|
|
@Autowired
|
|
|
private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
|
|
|
@@ -76,6 +87,9 @@ public class MachineUploadCarPaymentCmd extends Cmd {
|
|
|
@Autowired
|
|
|
private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IBuildingOwnerV1InnerServiceSMO buildingOwnerV1InnerServiceSMOImpl;
|
|
|
+
|
|
|
/**
|
|
|
* data.put("carNum", carInoutDto.getCarNum());
|
|
|
* data.put("machineCode", carInoutDto.getMachineCode());
|
|
|
@@ -151,7 +165,46 @@ public class MachineUploadCarPaymentCmd extends Cmd {
|
|
|
throw new CmdException("更新出场时间失败");
|
|
|
}
|
|
|
|
|
|
- //缴费
|
|
|
+ //如果有费用 则缴费
|
|
|
+ boolean hasFee = hasFeeAndPayFee(carInoutPo, carInoutPaymentPo);
|
|
|
+
|
|
|
+ double realCharge = Double.parseDouble(carInoutPaymentPo.getRealCharge());
|
|
|
+
|
|
|
+ //有费用 或者 缴费为0 时结束
|
|
|
+ if (hasFee || realCharge == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ OwnerCarDto ownerCarDto = new OwnerCarDto();
|
|
|
+ ownerCarDto.setCarNum(reqJson.getString("carNum"));
|
|
|
+ ownerCarDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ ownerCarDto.setCarType(OwnerCarDto.CAR_TYPE_TEMP);
|
|
|
+ List<OwnerCarDto> ownerCarDtos = ownerCarV1InnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
|
|
|
+
|
|
|
+ if (ownerCarDtos == null || ownerCarDtos.size() < 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否存在 临时车 虚拟业主
|
|
|
+ OwnerDto ownerDto = new OwnerDto();
|
|
|
+ ownerDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
|
|
|
+ ownerDto.setOwnerFlag(OwnerDto.OWNER_FLAG_FALSE);
|
|
|
+ ownerDto.setName(TEMP_CAR_OWNER);
|
|
|
+ List<OwnerDto> ownerDtos = buildingOwnerV1InnerServiceSMOImpl.queryBuildingOwners(ownerDto);
|
|
|
+ if (ownerDtos == null || ownerDtos.size() < 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ JSONObject paramIn = new JSONObject();
|
|
|
+ paramIn.put("inTime", carInoutDtos.get(0).getInTime());
|
|
|
+ paramIn.put("carNum", reqJson.getString("carNum"));
|
|
|
+ paramIn.put("carId", ownerCarDtos.get(0).getCarId());
|
|
|
+ paramIn.put("communityId", carInoutDtos.get(0).getCommunityId());
|
|
|
+ paramIn.put("inoutId", carInoutDtos.get(0).getInoutId());
|
|
|
+ paramIn.put("ownerId", ownerDtos.get(0).getMemberId());
|
|
|
+ saveTempCarFee(paramIn, machineDto,carInoutDtos.get(0));
|
|
|
+
|
|
|
+ //再去缴费
|
|
|
hasFeeAndPayFee(carInoutPo, carInoutPaymentPo);
|
|
|
}
|
|
|
|
|
|
@@ -179,11 +232,17 @@ public class MachineUploadCarPaymentCmd extends Cmd {
|
|
|
|
|
|
PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
|
|
|
payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
|
|
|
- payFeeDetailPo.setPrimeRate("1.00");
|
|
|
+ if(CarInoutPaymentDto.PAY_TYPE_CRASH.equals(carInoutPaymentPo.getPayType())) {
|
|
|
+ payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_CRASH);
|
|
|
+ }else if(CarInoutPaymentDto.PAY_TYPE_WECHAT.equals(carInoutPaymentPo.getPayType())){
|
|
|
+ payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_WECHAT_QRCODE);
|
|
|
+ }else{
|
|
|
+ payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_ALI_QRCODE);
|
|
|
+ }
|
|
|
FeeDto feeDto = feeDtos.get(0);
|
|
|
payFeeDetailPo.setStartTime(DateUtil.getFormatTimeString(feeDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
|
|
|
payFeeDetailPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
|
|
|
- payFeeDetailPo.setCommunityId(carInoutPaymentPo.getCommunityId());
|
|
|
+ payFeeDetailPo.setCommunityId(carInoutPo.getCommunityId());
|
|
|
payFeeDetailPo.setCycles("1");
|
|
|
payFeeDetailPo.setReceivableAmount(carInoutPaymentPo.getPayCharge());
|
|
|
payFeeDetailPo.setReceivedAmount(carInoutPaymentPo.getRealCharge());
|
|
|
@@ -195,4 +254,89 @@ public class MachineUploadCarPaymentCmd extends Cmd {
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+ private void saveTempCarFee(JSONObject reqJson, MachineDto machineDto,CarInoutDto carInoutDto) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //创建费用
|
|
|
+ TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto();
|
|
|
+ tempCarFeeConfigDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ tempCarFeeConfigDto.setPaId(carInoutDto.getPaId());
|
|
|
+ List<TempCarFeeConfigDto> tempCarFeeConfigDtos = tempCarFeeConfigInnerServiceSMOImpl.queryTempCarFeeConfigs(tempCarFeeConfigDto);
|
|
|
+
|
|
|
+ if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) { // 停车场未配置收费规则 则不创建费用
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ CommunityMemberDto communityMemberDto = new CommunityMemberDto();
|
|
|
+ communityMemberDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ communityMemberDto.setMemberTypeCd(CommunityMemberDto.MEMBER_TYPE_PROPERTY);
|
|
|
+ communityMemberDto.setAuditStatusCd(CommunityMemberDto.AUDIT_STATUS_NORMAL);
|
|
|
+ List<CommunityMemberDto> communityMemberDtos = communityInnerServiceSMOImpl.getCommunityMembers(communityMemberDto);
|
|
|
+
|
|
|
+ Assert.listOnlyOne(communityMemberDtos, "小区成员不存在");
|
|
|
+ List<PayFeePo> payFeePos = new ArrayList<>();
|
|
|
+ List<FeeAttrPo> feeAttrPos = new ArrayList<>();
|
|
|
+ PayFeePo payFeePo = new PayFeePo();
|
|
|
+ payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
|
|
|
+ payFeePo.setEndTime(reqJson.getString("inTime"));
|
|
|
+ payFeePo.setState(FeeDto.STATE_DOING);
|
|
|
+ payFeePo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ payFeePo.setConfigId(tempCarFeeConfigDto.getFeeConfigId());
|
|
|
+ payFeePo.setPayerObjId(reqJson.getString("carId"));
|
|
|
+ payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
|
|
|
+ payFeePo.setUserId("-1");
|
|
|
+ payFeePo.setIncomeObjId(communityMemberDtos.get(0).getMemberId());
|
|
|
+ payFeePo.setFeeTypeCd(FeeConfigDto.FEE_TYPE_CD_PARKING);
|
|
|
+ payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
|
|
|
+ payFeePo.setAmount("-1");
|
|
|
+ payFeePo.setBatchId("-1");
|
|
|
+ //payFeePo.setStartTime(importRoomFee.getStartTime());
|
|
|
+ payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
|
|
|
+ payFeePos.add(payFeePo);
|
|
|
+ FeeAttrPo feeAttrPo = new FeeAttrPo();
|
|
|
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
|
|
|
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
|
|
|
+ feeAttrPo.setValue(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
|
|
|
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
|
|
|
+ feeAttrPos.add(feeAttrPo);
|
|
|
+ feeAttrPo = new FeeAttrPo();
|
|
|
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
|
|
|
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
|
|
|
+ feeAttrPo.setValue(reqJson.getString("ownerId"));
|
|
|
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
|
|
|
+ feeAttrPos.add(feeAttrPo);
|
|
|
+ feeAttrPo = new FeeAttrPo();
|
|
|
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
|
|
|
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
|
|
|
+ feeAttrPo.setValue(TEMP_CAR_OWNER);
|
|
|
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
|
|
|
+ feeAttrPos.add(feeAttrPo);
|
|
|
+ feeAttrPo = new FeeAttrPo();
|
|
|
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
|
|
|
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
|
|
|
+ feeAttrPo.setValue("11111111111");
|
|
|
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
|
|
|
+ feeAttrPos.add(feeAttrPo);
|
|
|
+ feeAttrPo = new FeeAttrPo();
|
|
|
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
|
|
|
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_CAR_INOUT_ID);
|
|
|
+ feeAttrPo.setValue(reqJson.getString("inoutId"));
|
|
|
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
|
|
|
+ feeAttrPos.add(feeAttrPo);
|
|
|
+ int flag = feeInnerServiceSMOImpl.saveFee(payFeePos);
|
|
|
+ if (flag < 1) {
|
|
|
+ throw new CmdException("保存临时车费用失败");
|
|
|
+ }
|
|
|
+ flag = feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
|
|
|
+ if (flag < 1) {
|
|
|
+ throw new CmdException("保存临时车费用属性失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|