package com.java110.api.listener.meterWater; import com.alibaba.fastjson.JSONObject; import com.java110.api.bmo.fee.IFeeBMO; import com.java110.api.bmo.meterWater.IMeterWaterBMO; import com.java110.api.listener.AbstractServiceApiPlusListener; import com.java110.core.annotation.Java110Listener; import com.java110.core.context.DataFlowContext; import com.java110.core.event.service.api.ServiceDataFlowEvent; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.fee.FeeAttrDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.payFeeBatch.PayFeeBatchDto; import com.java110.dto.user.UserDto; import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO; import com.java110.intf.user.IUserInnerServiceSMO; import com.java110.po.fee.FeeAttrPo; import com.java110.po.fee.PayFeePo; import com.java110.po.payFeeBatch.PayFeeBatchPo; import com.java110.utils.constant.BusinessTypeConstant; import com.java110.utils.constant.CommonConstant; import com.java110.utils.constant.ServiceCodeMeterWaterConstant; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; import java.util.List; /** * 保存商户侦听 * add by wuxw 2019-06-30 */ @Java110Listener("saveProxyFeeListener") public class SaveProxyFeeListener extends AbstractServiceApiPlusListener { @Autowired private IMeterWaterBMO meterWaterBMOImpl; @Autowired private IFeeBMO feeBMOImpl; @Autowired private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl; @Autowired private IUserInnerServiceSMO userInnerServiceSMOImpl; @Override protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) { //Assert.hasKeyAndValue(reqJson, "xxx", "xxx"); Assert.hasKeyAndValue(reqJson, "feeTypeCd", "请求报文中未包含费用类型"); Assert.hasKeyAndValue(reqJson, "configId", "请求报文中未包含费用项"); Assert.hasKeyAndValue(reqJson, "objType", "请求报文中未包含objType"); Assert.hasKeyAndValue(reqJson, "objId", "请求报文中未包含objId"); Assert.hasKeyAndValue(reqJson, "amount", "请求报文中未包含amount"); Assert.hasKeyAndValue(reqJson, "consumption", "请求报文中未包含consumption"); Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId"); Assert.hasKeyAndValue(reqJson, "startTime", "请求报文中未包含开始时间"); Assert.hasKeyAndValue(reqJson, "endTime", "请求报文中未包含结束时间"); } @Override protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) { //生成批次 generatorBatch(reqJson); PayFeePo payFeePo = BeanConvertUtil.covertBean(reqJson, PayFeePo.class); payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId)); payFeePo.setIncomeObjId(reqJson.getString("storeId")); //payFeePo.setAmount("-1"); payFeePo.setStartTime(reqJson.getString("startTime")); payFeePo.setEndTime(reqJson.getString("startTime")); payFeePo.setPayerObjId(reqJson.getString("objId")); payFeePo.setPayerObjType(reqJson.getString("objType")); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_DOING); payFeePo.setUserId(context.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); payFeePo.setBatchId(reqJson.getString("batchId")); super.insert(context, payFeePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_INFO); FeeAttrPo feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_PROXY_CONSUMPTION); feeAttrPo.setValue(reqJson.getString("consumption")); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId("-1"); super.insert(context, feeAttrPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_INFO); feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME); feeAttrPo.setValue(reqJson.getString("endTime")); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId("-2"); super.insert(context, feeAttrPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_INFO); } /** * 生成批次号 * * @param reqJson */ private void generatorBatch(JSONObject reqJson) { PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo(); payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12")); payFeeBatchPo.setCommunityId(reqJson.getString("communityId")); payFeeBatchPo.setCreateUserId(reqJson.getString("userId")); UserDto userDto = new UserDto(); userDto.setUserId(reqJson.getString("userId")); List userDtos = userInnerServiceSMOImpl.getUsers(userDto); Assert.listOnlyOne(userDtos, "用户不存在"); payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName()); payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL); payFeeBatchPo.setMsg("正常"); int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo); if (flag < 1) { throw new IllegalArgumentException("生成批次失败"); } reqJson.put("batchId", payFeeBatchPo.getBatchId()); } @Override public String getServiceCode() { return ServiceCodeMeterWaterConstant.ADD_PROXY_FEE; } @Override public HttpMethod getHttpMethod() { return HttpMethod.POST; } }