| | |
| | | */ |
| | | package com.java110.community.cmd.community; |
| | | |
| | | import com.alibaba.druid.util.StringUtils; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.community.bmo.community.ICommunityBMO; |
| | | import com.java110.community.bmo.community.PropertyManagementRecords; |
| | | import com.java110.core.annotation.Java110Cmd; |
| | | import com.java110.core.annotation.Java110Transactional; |
| | | import com.java110.core.context.ICmdDataFlowContext; |
| | | import com.java110.core.event.cmd.AbstractServiceCmdListener; |
| | | import com.java110.core.event.cmd.Cmd; |
| | | import com.java110.core.event.cmd.CmdEvent; |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.dto.workflow.WorkflowDto; |
| | | import com.java110.doc.annotation.*; |
| | | import com.java110.dto.community.CommunityDto; |
| | | import com.java110.dto.community.PropertyManagementRecordDto; |
| | | import com.java110.dto.oaWorkflow.WorkflowDto; |
| | | import com.java110.intf.common.IWorkflowV1InnerServiceSMO; |
| | | import com.java110.intf.community.ICommunityV1InnerServiceSMO; |
| | | import com.java110.po.workflow.WorkflowPo; |
| | | import com.java110.utils.constant.BusinessTypeConstant; |
| | | import com.java110.intf.community.PropertyManagementRecordsServiceSMO; |
| | | import com.java110.po.community.PropertyManagementRecordPo; |
| | | import com.java110.po.oaWorkflow.WorkflowPo; |
| | | import com.java110.utils.exception.CmdException; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.vo.ResultVo; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | |
| | | @Java110CmdDoc(title = "添加小区", |
| | | description = "主要提供给外系统添加小区", |
| | | httpMethod = "post", |
| | | url = "http://{ip}:{port}/app/community.saveCommunity", |
| | | resource = "communityDoc", |
| | | author = "吴学文", |
| | | serviceCode = "community.saveCommunity", |
| | | seq = 1 |
| | | ) |
| | | |
| | | @Java110ParamsDoc(params = { |
| | | @Java110ParamDoc(name = "address", length = 30, remark = "小区地址"), |
| | | @Java110ParamDoc(name = "cityCode", length = 12, remark = "地区编码"), |
| | | @Java110ParamDoc(name = "feePrice", type = "int",length = 11, remark = "小区收费价格"), |
| | | @Java110ParamDoc(name = "mapX", length = 12, remark = "经度"), |
| | | @Java110ParamDoc(name = "mapY", length = 12, remark = "纬度"), |
| | | @Java110ParamDoc(name = "name", length = 64, remark = "名称"), |
| | | @Java110ParamDoc(name = "nearbyLandmarks", length = 64, remark = "地标,如xx 公园旁"), |
| | | @Java110ParamDoc(name = "payFeeMonth", type = "int",length = 11, remark = "小区收费周期"), |
| | | @Java110ParamDoc(name = "tel", length = 11, remark = "小区客服电话"), |
| | | }) |
| | | |
| | | @Java110ResponseDoc( |
| | | params = { |
| | | @Java110ParamDoc(name = "code", type = "int", length = 11, defaultValue = "0", remark = "返回编号,0 成功 其他失败"), |
| | | @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "成功", remark = "描述"), |
| | | } |
| | | ) |
| | | |
| | | @Java110ExampleDoc( |
| | | reqBody="{\"name\":\"api接口小区\",\"address\":\"天津省天津市和平区api接口小区\",\"tmpAddress\":\"api接口小区\",\"areaAddress\":\"天津省天津市和平区\",\"nearbyLandmarks\":\"23\",\"tel\":\"18909711443\",\"cityCode\":\"120101\",\"mapX\":\"101.33\",\"mapY\":\"101.33\",\"attrs\":[{\"domain\":\"COMMON\",\"listShow\":\"Y\",\"page\":-1,\"records\":0,\"required\":\"Y\",\"row\":0,\"specCd\":\"9329000004\",\"specHoldplace\":\"必填,请填写社区编码\",\"specId\":\"9329000004\",\"specName\":\"社区编码\",\"specShow\":\"Y\",\"specType\":\"2233\",\"specValueType\":\"1001\",\"statusCd\":\"0\",\"tableName\":\"building_community_attr\",\"total\":0,\"value\":\"123123\",\"values\":[]}],\"payFeeMonth\":12,\"feePrice\":0}", |
| | | resBody="{'code':0,'msg':'成功'}" |
| | | ) |
| | | |
| | | /** |
| | | * 类表述:保存 |
| | |
| | | * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行 |
| | | */ |
| | | @Java110Cmd(serviceCode = "community.saveCommunity") |
| | | public class SaveCommunityCmd extends AbstractServiceCmdListener { |
| | | public class SaveCommunityCmd extends Cmd { |
| | | |
| | | private static Logger logger = LoggerFactory.getLogger(SaveCommunityCmd.class); |
| | | |
| | |
| | | @Autowired |
| | | private IWorkflowV1InnerServiceSMO workflowV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private PropertyManagementRecordsServiceSMO propertyManagementRecordsServiceSMO; |
| | | |
| | | @Override |
| | | public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) { |
| | | Assert.hasKeyAndValue(reqJson, "name", "必填,请填写小区名称"); |
| | |
| | | Assert.hasKeyAndValue(reqJson, "cityCode", "请求报文中未包含cityCode"); |
| | | Assert.hasKeyAndValue(reqJson, "payFeeMonth", "请求报文中未包含payFeeMonth"); |
| | | Assert.hasKeyAndValue(reqJson, "feePrice", "请求报文中未包含feePrice"); |
| | | Assert.hasKeyAndValue(reqJson, "takeTime", "请求报文中未包含接管日期"); |
| | | Assert.hasKeyAndValue(reqJson, "communityCode", "请求报文中未包含小区编码"); |
| | | //属性校验 |
| | | Assert.judgeAttrValue(reqJson); |
| | | |
| | |
| | | @Override |
| | | @Java110Transactional |
| | | public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException { |
| | | CommunityDto communityDto = new CommunityDto(); |
| | | communityDto.setCommunityCode(reqJson.getString("communityCode")); |
| | | int i = communityV1InnerServiceSMOImpl.queryCommunitysCount(communityDto); |
| | | if (i > 0) { |
| | | throw new IllegalArgumentException("添加流程失败,小区编码重复"); |
| | | } |
| | | communityDto = new CommunityDto(); |
| | | communityDto.setName(reqJson.getString("name")); |
| | | i = communityV1InnerServiceSMOImpl.queryCommunitysCount(communityDto); |
| | | if (i > 0) { |
| | | throw new IllegalArgumentException("添加流程失败,小区名称重复"); |
| | | } |
| | | communityBMOImpl.addCommunity(reqJson, cmdDataFlowContext); |
| | | communityBMOImpl.addCommunityMembers(reqJson, cmdDataFlowContext); |
| | | //产生物业费配置信息 |
| | | communityBMOImpl.addFeeConfigProperty(reqJson, cmdDataFlowContext); |
| | | //产生物业费配置信息 不要产生默认费 |
| | | //communityBMOImpl.addFeeConfigProperty(reqJson, cmdDataFlowContext); |
| | | communityBMOImpl.addFeeConfigRepair(reqJson, cmdDataFlowContext); // 报修费用 |
| | | communityBMOImpl.addFeeConfigParkingSpaceTemp(reqJson, cmdDataFlowContext);//地下出租 |
| | | |
| | |
| | | throw new IllegalArgumentException("添加流程失败"); |
| | | } |
| | | |
| | | WorkflowPo workflowPo1 = null; |
| | | workflowPo1 = new WorkflowPo(); |
| | | workflowPo1.setCommunityId(reqJson.getString("communityId")); |
| | | workflowPo1.setFlowId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_flowId)); |
| | | workflowPo1.setFlowName("物品领用"); |
| | | workflowPo1.setFlowType(WorkflowDto.FLOW_TYPE_COLLECTION); |
| | | workflowPo1.setSkipLevel(WorkflowDto.DEFAULT_SKIP_LEVEL); |
| | | workflowPo1.setStoreId(reqJson.getString("storeId")); |
| | | flag = workflowV1InnerServiceSMOImpl.saveWorkflow(workflowPo1); |
| | | if (flag < 1) { |
| | | throw new IllegalArgumentException("添加流程失败"); |
| | | } |
| | | // WorkflowPo workflowPo1 = null; |
| | | // workflowPo1 = new WorkflowPo(); |
| | | // workflowPo1.setCommunityId(reqJson.getString("communityId")); |
| | | // workflowPo1.setFlowId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_flowId)); |
| | | // workflowPo1.setFlowName("物品领用"); |
| | | // workflowPo1.setFlowType(WorkflowDto.FLOW_TYPE_COLLECTION); |
| | | // workflowPo1.setSkipLevel(WorkflowDto.DEFAULT_SKIP_LEVEL); |
| | | // workflowPo1.setStoreId(reqJson.getString("storeId")); |
| | | // flag = workflowV1InnerServiceSMOImpl.saveWorkflow(workflowPo1); |
| | | // if (flag < 1) { |
| | | // throw new IllegalArgumentException("添加流程失败"); |
| | | // } |
| | | |
| | | WorkflowPo workflowPo2 = new WorkflowPo(); |
| | | workflowPo2.setCommunityId(reqJson.getString("communityId")); //被调拨小区 |
| | |
| | | if (flag < 1) { |
| | | throw new IllegalArgumentException("添加流程失败"); |
| | | } |
| | | cmdDataFlowContext.setResponseEntity(ResultVo.success()); |
| | | addPropertyManagementRecord(reqJson); |
| | | cmdDataFlowContext.setResponseEntity(ResultVo.createResponseEntity(reqJson.getString("communityId"))); |
| | | } |
| | | |
| | | private void addPropertyManagementRecord(JSONObject reqJson) { |
| | | // 从请求参数中获取必要信息(根据实际业务参数调整key) |
| | | String communityId = reqJson.getString("communityId"); |
| | | CommunityDto communityDto = new CommunityDto(); |
| | | communityDto.setCommunityId(communityId); |
| | | CommunityDto communityDto1 = communityV1InnerServiceSMOImpl.queryCommunitys(communityDto).get(0); |
| | | |
| | | // 构建管理记录PO对象 |
| | | PropertyManagementRecordPo recordPo = new PropertyManagementRecordPo(); |
| | | // 设置主键ID(如果使用自增主键可省略,由数据库生成) |
| | | recordPo.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_commentId)); |
| | | recordPo.setCommunityId(communityId); |
| | | recordPo.setCommunityName(communityDto1.getName()); |
| | | recordPo.setManagementStartDate(communityDto1.getTakeTime()); // 格式需与数据库一致 |
| | | recordPo.setManagementEndDate(communityDto1.getOutTime() == null ? null : communityDto1.getOutTime()); // 初始为在管状态,退管时间为null |
| | | recordPo.setStatus(0); // 0-有效 |
| | | recordPo.setRemark("小区创建时自动添加的初始在管记录"); // 备注信息 |
| | | // 创建时间和更新时间可由数据库自动生成或通过框架填充 |
| | | |
| | | // 调用保存接口 |
| | | int saveFlag = propertyManagementRecordsServiceSMO.savePropertyManagementRecord(recordPo); |
| | | if (saveFlag < 1) { |
| | | throw new IllegalArgumentException("添加小区在管记录失败"); |
| | | } |
| | | } |
| | | |
| | | private void dealAttr(JSONObject paramObj, ICmdDataFlowContext context) { |
| | | |