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.FeeConfigDto; import com.java110.dto.fee.FeeDto; import com.java110.po.fee.PayFeePo; 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 com.java110.utils.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; /** * 保存商户侦听 * add by wuxw 2019-06-30 */ @Java110Listener("saveMeterWaterListener") public class SaveMeterWaterListener extends AbstractServiceApiPlusListener { @Autowired private IMeterWaterBMO meterWaterBMOImpl; @Autowired private IFeeBMO feeBMOImpl; @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, "preDegrees", "请求报文中未包含preDegrees"); Assert.hasKeyAndValue(reqJson, "curDegrees", "请求报文中未包含curDegrees"); Assert.hasKeyAndValue(reqJson, "preReadingTime", "请求报文中未包含preReadingTime"); Assert.hasKeyAndValue(reqJson, "curReadingTime", "请求报文中未包含curReadingTime"); Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId"); } @Override protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) { if (FeeConfigDto.FEE_TYPE_CD_WATER.equals(reqJson.getString("feeTypeCd"))) { reqJson.put("meterType", "1010"); } else { reqJson.put("meterType", "2020"); } 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("preDegrees")); payFeePo.setEndTime(reqJson.getString("preDegrees")); payFeePo.setPayerObjId(reqJson.getString("objId")); payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_DOING); payFeePo.setUserId(context.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); super.insert(context, payFeePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_INFO); reqJson.put("feeId",payFeePo.getFeeId()); meterWaterBMOImpl.addMeterWater(reqJson, context); } @Override public String getServiceCode() { return ServiceCodeMeterWaterConstant.ADD_METERWATER; } @Override public HttpMethod getHttpMethod() { return HttpMethod.POST; } }