package com.java110.fee.cmd.fee; import com.alibaba.fastjson.JSONObject; import com.java110.core.annotation.Java110Cmd; import com.java110.core.context.ICmdDataFlowContext; import com.java110.core.event.cmd.Cmd; import com.java110.core.event.cmd.CmdEvent; import com.java110.doc.annotation.*; import com.java110.dto.contract.ContractDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.fee.PayFeeDto; import com.java110.dto.owner.OwnerCarDto; import com.java110.dto.owner.OwnerDto; import com.java110.dto.owner.OwnerRoomRelDto; import com.java110.dto.room.RoomDto; import com.java110.intf.community.IRoomV1InnerServiceSMO; import com.java110.intf.fee.IPayFeeV1InnerServiceSMO; import com.java110.intf.store.IContractInnerServiceSMO; import com.java110.intf.user.IBuildingOwnerV1InnerServiceSMO; import com.java110.intf.user.IOwnerCarV1InnerServiceSMO; import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO; import com.java110.intf.user.IOwnerV1InnerServiceSMO; import com.java110.utils.exception.CmdException; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.StringUtil; import com.java110.vo.ResultVo; import org.springframework.beans.factory.annotation.Autowired; import java.text.ParseException; import java.util.List; /** * 查询费用 对象信息 */ @Java110CmdDoc(title = "查询费用作用对象", description = "供三方系统查询的费用对象 比如 房屋 车辆 合同等", httpMethod = "get", url = "http://{ip}:{port}/app/fee.listFeePayerObj", resource = "feeDoc", author = "吴学文", serviceCode = "fee.listFeePayerObj", seq = 1 ) @Java110ParamsDoc(params = { @Java110ParamDoc(name = "communityId", length = 30, remark = "小区ID"), @Java110ParamDoc(name = "payerObjId", length = 30, remark = "对象ID"), @Java110ParamDoc(name = "payerObjType", length = 12, remark = "对象类型"), }) @Java110ResponseDoc( params = { @Java110ParamDoc(name = "code", type = "int", length = 11, defaultValue = "0", remark = "返回编号,0 成功 其他失败"), @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "成功", remark = "描述"), @Java110ParamDoc(name = "data", type = "Object", length = -1, defaultValue = "成功", remark = "数据"), @Java110ParamDoc(parentNodeName = "data", name = "payerObjId", length = 30, remark = "费用对象ID"), @Java110ParamDoc(parentNodeName = "data", name = "payerObjName", length = 64, remark = "费用对象名称"), @Java110ParamDoc(parentNodeName = "data", name = "paNum", length = 11, remark = "停车场"), @Java110ParamDoc(parentNodeName = "data", name = "psNum", length = 30, remark = "车位"), @Java110ParamDoc(parentNodeName = "data", name = "ownerId", length = 30, remark = "业主Id"), @Java110ParamDoc(parentNodeName = "data", name = "ownerName", length = 64, remark = "业主名称"), @Java110ParamDoc(parentNodeName = "data", name = "tel", length = 11, remark = "手机号"), } ) @Java110ExampleDoc( reqBody = "http://ip:port/app/fee.listFeePayerObj?payerObjId=1001&payerObjType=3333&communityId=2022121921870161", resBody = "{\n" + "\t\"data\": {\n" + "\t\t\"payerObjId\": \"张三\",\n" + "\t\t\"payerObjName\": \"\",\n" + "\t\t\"paNum\": \"18909718888\",\n" + "\t\t\"psNum\": \"772023012589770046\",\n" + "\t\t\"ownerId\": \"王王\",\n" + "\t\t\"ownerName\": \"1001\",\n" + "\t\t\"tel\": \"\",\n" + "\t},\n" + "\t\"page\": 0,\n" + "\t\"records\": 1,\n" + "\t\"rows\": 0,\n" + "\t\"total\": 1\n" + "}" ) @Java110Cmd(serviceCode = "fee.listFeePayerObj") public class ListFeePayerObjCmd extends Cmd { @Autowired private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl; @Autowired private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl; @Autowired private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl; @Autowired private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl; @Autowired private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl; @Autowired private IContractInnerServiceSMO contractInnerServiceSMOImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区ID"); //todo 如果包含feeId 则根据feeId 刷入 payerObjId 和payerObjType ifContainFeeId(reqJson); Assert.hasKeyAndValue(reqJson, "payerObjId", "未包含payerObjId"); Assert.hasKeyAndValue(reqJson, "payerObjType", "未包含payerObjType"); } @Override public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { JSONObject data = new JSONObject(); String payerObjType = reqJson.getString("payerObjType"); String payerObjId = reqJson.getString("payerObjId"); // todo 如果是房屋 ifRoom(payerObjId, payerObjType, reqJson, data); // todo 如果是车辆 ifCar(payerObjId, payerObjType, reqJson, data); // todo 如果是合同 ifContract(payerObjId, payerObjType, reqJson, data); context.setResponseEntity(ResultVo.createResponseEntity(data)); } /** * 如果是房屋 * * @param reqJson * @param data */ private void ifRoom(String payerObjId, String payerObjType, JSONObject reqJson, JSONObject data) { //todo 如果不是房屋 直接返回 if (!FeeDto.PAYER_OBJ_TYPE_ROOM.equals(payerObjType)) { return; } RoomDto roomDto = new RoomDto(); roomDto.setRoomId(payerObjId); roomDto.setCommunityId(reqJson.getString("communityId")); List roomDtos = roomV1InnerServiceSMOImpl.queryRooms(roomDto); Assert.listOnlyOne(roomDtos, "房屋不存在"); data.putAll(BeanConvertUtil.beanCovertJson(roomDtos.get(0))); data.put("payerObjName", roomDtos.get(0).getFloorNum() + "-" + roomDtos.get(0).getUnitNum() + "-" + roomDtos.get(0).getRoomNum()); OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); ownerRoomRelDto.setRoomId(roomDtos.get(0).getRoomId()); List ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) { return; } OwnerDto ownerDto = new OwnerDto(); ownerDto.setMemberId(ownerRoomRelDtos.get(0).getOwnerId()); ownerDto.setCommunityId(reqJson.getString("communityId")); List ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto); if (ownerDtos == null || ownerDtos.size() < 1) { return; } data.putAll(BeanConvertUtil.beanCovertJson(ownerDtos.get(0))); } /** * 如果是车辆 * * @param reqJson * @param data */ private void ifCar(String payerObjId, String payerObjType, JSONObject reqJson, JSONObject data) { //todo 如果不是车辆 直接返回 if (!FeeDto.PAYER_OBJ_TYPE_CAR.equals(payerObjType)) { return; } OwnerCarDto ownerCarDto = new OwnerCarDto(); ownerCarDto.setMemberId(payerObjId); ownerCarDto.setCommunityId(reqJson.getString("communityId")); List ownerCarDtos = ownerCarV1InnerServiceSMOImpl.queryOwnerCars(ownerCarDto); Assert.listOnlyOne(ownerCarDtos, "车辆不存在"); data.putAll(BeanConvertUtil.beanCovertJson(ownerCarDtos.get(0))); data.put("payerObjName", ownerCarDtos.get(0).getCarNum()); OwnerDto ownerDto = new OwnerDto(); ownerDto.setMemberId(ownerCarDtos.get(0).getOwnerId()); ownerDto.setCommunityId(reqJson.getString("communityId")); List ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto); if (ownerDtos == null || ownerDtos.size() < 1) { return; } data.putAll(BeanConvertUtil.beanCovertJson(ownerDtos.get(0))); } /** * 如果 合同 * * @param reqJson * @param data */ private void ifContract(String payerObjId, String payerObjType, JSONObject reqJson, JSONObject data) { //todo 如果不是合同 直接返回 if (!FeeDto.PAYER_OBJ_TYPE_CONTRACT.equals(payerObjType)) { return; } ContractDto contractDto = new ContractDto(); contractDto.setContractId(payerObjId); List contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto); Assert.listOnlyOne(contractDtos, "合同不存在"); data.putAll(BeanConvertUtil.beanCovertJson(contractDtos.get(0))); data.put("payerObjName", contractDtos.get(0).getContractName()); OwnerDto ownerDto = new OwnerDto(); ownerDto.setLink(contractDtos.get(0).getbLink()); ownerDto.setCommunityId(reqJson.getString("communityId")); List ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto); if (ownerDtos == null || ownerDtos.size() < 1) { return; } data.putAll(BeanConvertUtil.beanCovertJson(ownerDtos.get(0))); } /** * 如果包含了feeId 则查询 费用作用对象信息 * * @param reqJson */ private void ifContainFeeId(JSONObject reqJson) { if (!reqJson.containsKey("feeId")) { return; } String feeId = reqJson.getString("feeId"); if (StringUtil.isEmpty(feeId)) { return; } PayFeeDto feeDto = new PayFeeDto(); feeDto.setFeeId(feeId); feeDto.setCommunityId(reqJson.getString("communityId")); List payFeeDtos = payFeeV1InnerServiceSMOImpl.queryPayFees(feeDto); Assert.listOnlyOne(payFeeDtos, "费用不存在"); reqJson.put("payerObjId", payFeeDtos.get(0).getPayerObjId()); reqJson.put("payerObjType", payFeeDtos.get(0).getPayerObjType()); } }