diff --git a/seeyon/WEB-INF/assetstenant/pluginCfg.xml b/seeyon/WEB-INF/cfgHome/plugin/assetstenant/pluginCfg.xml similarity index 100% rename from seeyon/WEB-INF/assetstenant/pluginCfg.xml rename to seeyon/WEB-INF/cfgHome/plugin/assetstenant/pluginCfg.xml diff --git a/seeyon/WEB-INF/assetstenant/spring/spring-bean.xml b/seeyon/WEB-INF/cfgHome/plugin/assetstenant/spring/spring-bean.xml similarity index 95% rename from seeyon/WEB-INF/assetstenant/spring/spring-bean.xml rename to seeyon/WEB-INF/cfgHome/plugin/assetstenant/spring/spring-bean.xml index 32a9859..3ed77d2 100644 --- a/seeyon/WEB-INF/assetstenant/spring/spring-bean.xml +++ b/seeyon/WEB-INF/cfgHome/plugin/assetstenant/spring/spring-bean.xml @@ -4,6 +4,7 @@ + diff --git a/seeyon/WEB-INF/assetstenant/spring/spring-controller.xml b/seeyon/WEB-INF/cfgHome/plugin/assetstenant/spring/spring-controller.xml similarity index 100% rename from seeyon/WEB-INF/assetstenant/spring/spring-controller.xml rename to seeyon/WEB-INF/cfgHome/plugin/assetstenant/spring/spring-controller.xml diff --git a/seeyon/WEB-INF/assetstenant/spring/spring.xml b/seeyon/WEB-INF/cfgHome/plugin/assetstenant/spring/spring.xml similarity index 100% rename from seeyon/WEB-INF/assetstenant/spring/spring.xml rename to seeyon/WEB-INF/cfgHome/plugin/assetstenant/spring/spring.xml diff --git a/src/main/java/com/seeyon/apps/assetstenant/assets/AssetsService.java b/src/main/java/com/seeyon/apps/assetstenant/assets/AssetsService.java index 8aa93e4..928506e 100644 --- a/src/main/java/com/seeyon/apps/assetstenant/assets/AssetsService.java +++ b/src/main/java/com/seeyon/apps/assetstenant/assets/AssetsService.java @@ -281,6 +281,7 @@ public class AssetsService { assetsVo.setBizZone(getStringValue(fieldsMap,"商圈位置")); assetsVo.setLayout(getStringValue(fieldsMap,"户型")); assetsVo.setRenovationStatus(getStringValue(fieldsMap,"装修情况")); + assetsVo.setSource(getStringValue(fieldsMap,"资产来源")); V3xOrgMember member = null; try { member = orgManager.getMemberById(Long.parseLong((String)fieldsMap.get("运营管理员"))); diff --git a/src/main/java/com/seeyon/apps/assetstenant/assets/OaAssetsVo.java b/src/main/java/com/seeyon/apps/assetstenant/assets/OaAssetsVo.java index 4eab0f2..1fdc480 100644 --- a/src/main/java/com/seeyon/apps/assetstenant/assets/OaAssetsVo.java +++ b/src/main/java/com/seeyon/apps/assetstenant/assets/OaAssetsVo.java @@ -37,6 +37,7 @@ public class OaAssetsVo { private String manageType; //运营类型 private String[] tags; private String renovationStatus; //装修状态 + private String source;//来源 public String getAssetsNo() { return assetsNo; @@ -285,4 +286,12 @@ public class OaAssetsVo { public void setManageType(String manageType) { this.manageType = manageType; } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } } \ No newline at end of file diff --git a/src/main/java/com/seeyon/apps/assetstenant/assets/ShAssetsService.java b/src/main/java/com/seeyon/apps/assetstenant/assets/ShAssetsService.java index 1853335..411d7f7 100644 --- a/src/main/java/com/seeyon/apps/assetstenant/assets/ShAssetsService.java +++ b/src/main/java/com/seeyon/apps/assetstenant/assets/ShAssetsService.java @@ -21,9 +21,8 @@ public class ShAssetsService { private AssetsTenantConfigProvider configProvider = (AssetsTenantConfigProvider) AppContext.getBean("assetsTenantConfigProvider"); private AttachmentManager attachmentManager = (AttachmentManager) AppContext.getBean("attachmentManager"); - private OrgManager orgManager = (OrgManager) AppContext.getBean("orgManager"); private String getFormNo() { - return configProvider.getBizConfigByKey(AssetsTenantConstants.ASSETS_FORMNO); + return configProvider.getBizConfigByKey(AssetsTenantConstants.ASSETS_SH_FORMNO); } public PageQueryVo pageQuery(JSONObject params) throws Exception { @@ -167,7 +166,7 @@ public class ShAssetsService { assetsVo.setAssetsStatus(getStringValue(fieldsMap,"资产状态")); assetsVo.setAssetsAddress(getStringValue(fieldsMap,"房屋地址")); assetsVo.setManageType(getStringValue(fieldsMap,"运营类型")); - + assetsVo.setSource(getStringValue(fieldsMap,"资产来源")); String lnglat = getStringValue(fieldsMap, "坐落经纬度"); if(StringUtils.isNotBlank(lnglat)){ // 统一替换逗号为分号,然后分割,兼容 ; 和 , 两种格式 @@ -194,12 +193,14 @@ public class ShAssetsService { public void fillPageQueryVo(Map fieldsMap,OaAssetsVo assetsVo) throws BusinessException { assetsVo.setAssetsNo(getStringValue(fieldsMap,"资产编号")); assetsVo.setAssetsName(getStringValue(fieldsMap,"资产名称")); + assetsVo.setManageType(getStringValue(fieldsMap,"运营类型")); assetsVo.setFormId(getStringValue(fieldsMap,"id")); assetsVo.setLayout(getStringValue(fieldsMap,"户型")); + assetsVo.setOrientation(getStringValue(fieldsMap,"朝向")); assetsVo.setRenovationStatus(getStringValue(fieldsMap,"装修情况")); String area = getStringValue(fieldsMap,"建筑面积"); assetsVo.setFootPrint(area); - if(fieldsMap.get("资产图片") != null) { + if(fieldsMap.get("房源图片") != null) { assetsVo.setDetailImg(OaFileVo.getInstance(fieldsMap.get("房源图片"),attachmentManager)); } } diff --git a/src/main/java/com/seeyon/apps/assetstenant/reserve/ReserveService.java b/src/main/java/com/seeyon/apps/assetstenant/reserve/ReserveService.java index ba47cbd..35fbcec 100644 --- a/src/main/java/com/seeyon/apps/assetstenant/reserve/ReserveService.java +++ b/src/main/java/com/seeyon/apps/assetstenant/reserve/ReserveService.java @@ -3,22 +3,33 @@ package com.seeyon.apps.assetstenant.reserve; import com.alibaba.fastjson.JSONObject; import com.seeyon.apps.assetstenant.assets.AssetsService; import com.seeyon.apps.assetstenant.assets.OaAssetsVo; +import com.seeyon.apps.assetstenant.assets.ShAssetsService; import com.seeyon.apps.assetstenant.config.AssetsTenantConfigProvider; import com.seeyon.apps.assetstenant.constants.AssetsTenantConstants; +import com.seeyon.apps.assetstenant.flow.FlowCreateService; import com.seeyon.apps.assetstenant.po.PageQueryVo; +import com.seeyon.cap4.form.api.FormApi4Cap4; +import com.seeyon.cap4.form.bean.FormBean; +import com.seeyon.cap4.form.bean.FormFieldBean; import com.seeyon.cap4.form.bean.FormTableBean; import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.organization.bo.V3xOrgMember; import com.seeyon.utils.form.*; import com.seeyon.v3x.services.form.FormFactory; import org.apache.commons.lang3.StringUtils; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; public class ReserveService { private AssetsTenantConfigProvider configProvider = (AssetsTenantConfigProvider) AppContext.getBean("assetsTenantConfigProvider"); private AssetsService assetsService = (AssetsService) AppContext.getBean("assetsService"); - private FormFactory factory = (FormFactory) AppContext.getBean("formFactory"); + private FlowCreateService flowCreateService = (FlowCreateService) AppContext.getBean("flowCreateService"); + private ShAssetsService shAssetsService = (ShAssetsService) AppContext.getBean("shAssetsService"); private String getFormNo() { return configProvider.getBizConfigByKey(AssetsTenantConstants.RESERVE_FORMNO); @@ -89,36 +100,87 @@ public class ReserveService { vo.setStatus(status); } +// public void saveReserve(JSONObject params) throws Exception { +// Map mainData = new HashMap<>(); +// mainData.put("资产编号", params.getString("assetsNo")); +// mainData.put("资产名称", params.getString("assetsName")); +// mainData.put("看房人姓名", params.getString("reserveName")); +// mainData.put("看房人手机号", params.getString("phone")); +// mainData.put("微信openId", params.getString("openId")); +// mainData.put("预约时间", params.getString("reserveTime")); +// String tenantType = params.getString("tenantType"); +// if(StringUtils.isNotBlank(tenantType)) { +// TableContext tableContext = getMasterTableContext(); +// FormTableBean tableBean = tableContext.getTableBean(); +// if("0".equals(tenantType)) { +// mainData.put("客户属性",EnumMapUtils.getEnumItemValueByDisplayValue(tableBean,"客户属性","个人")); +// }else { +// mainData.put("客户属性",EnumMapUtils.getEnumItemValueByDisplayValue(tableBean,"客户属性","企业")); +// } +// } +// String docNo = "weChat_" + UUID.randomUUID().toString().replace("-",""); +// mainData.put("档案编号",docNo); +// mainData.put("运营类型",getManageType(params.getString("assetsNo"))); +// mainData.put("处理状态", EnumMapUtils.getEnumItemValueByDisplayValue(getMasterTableContext().getTableBean(), "处理状态", "未处理")); +// String loginName = configProvider.getBizConfigByKey(AssetsTenantConstants.formLoginName); +// FormSaveUtil.formSave(loginName,getFormNo(),factory,mainData,null); +// } + public void saveReserve(JSONObject params) throws Exception { - Map mainFormData = new HashMap<>(); - mainFormData.put("资产编号", params.getString("assetsNo")); - mainFormData.put("资产名称", params.getString("assetsName")); - mainFormData.put("看房人姓名", params.getString("reserveName")); - mainFormData.put("看房人手机号", params.getString("phone")); - mainFormData.put("微信openId", params.getString("openId")); - mainFormData.put("预约时间", params.getString("reserveTime")); + // 1. 获取Bean + 非空校验 + FormApi4Cap4 formApi4Cap4 = (FormApi4Cap4) AppContext.getBean("formApi4Cap4"); + if (formApi4Cap4 == null) { + throw new Exception("Spring容器中未找到formApi4Cap4 Bean"); + } + + // 2. 复用配置,避免重复查询 + String templateCode = this.configProvider.getBizConfigByKey(AssetsTenantConstants.RESERVE_FORMNO); + String appName = this.configProvider.getBizConfigByKey(AssetsTenantConstants.FORMAPPNAME); + + // 3. 获取表单结构 + FormBean cap4FormBean = formApi4Cap4.getFormByFormCode(templateCode); + FormTableBean masterTableBean = cap4FormBean.getMasterTableBean(); + String tableName = masterTableBean.getTableName(); + + // 5. 构造数据结构(规范泛型) + Map mainFormData = new HashMap<>(); + Map> subFormDataMap = new HashMap<>(); + List subFormDataList = new ArrayList<>(); + + Map mainData = new HashMap<>(); + mainFormData.put(tableName, mainData); + + TableContext tableContext = getMasterTableContext(); + FormTableBean tableBean = tableContext.getTableBean(); + // 9. 获取合同信息 + 非空校验 + mainData.put("资产编号", params.getString("assetsNo")); + mainData.put("资产名称", params.getString("assetsName")); + mainData.put("看房人姓名", params.getString("reserveName")); + mainData.put("看房人手机号", params.getString("phone")); + mainData.put("微信openId", params.getString("openId")); + mainData.put("预约时间", params.getString("reserveTime")); + mainData.put("房源类型",EnumMapUtils.getEnumItemValueByDisplayValue(tableBean,"房源类型",params.getString("houseSourceType"))); String tenantType = params.getString("tenantType"); if(StringUtils.isNotBlank(tenantType)) { - TableContext tableContext = getMasterTableContext(); - FormTableBean tableBean = tableContext.getTableBean(); if("0".equals(tenantType)) { - mainFormData.put("客户属性",EnumMapUtils.getEnumItemValueByDisplayValue(tableBean,"客户属性","个人")); + mainData.put("客户属性",EnumMapUtils.getEnumItemValueByDisplayValue(tableBean,"客户属性","个人")); }else { - mainFormData.put("客户属性",EnumMapUtils.getEnumItemValueByDisplayValue(tableBean,"客户属性","企业")); + mainData.put("客户属性",EnumMapUtils.getEnumItemValueByDisplayValue(tableBean,"客户属性","企业")); } } String docNo = "weChat_" + UUID.randomUUID().toString().replace("-",""); - mainFormData.put("档案编号",docNo); - mainFormData.put("运营类型",getManageType(params.getString("assetsNo"))); - mainFormData.put("处理状态", EnumMapUtils.getEnumItemValueByDisplayValue(getMasterTableContext().getTableBean(), "处理状态", "未处理")); - String loginName = configProvider.getBizConfigByKey(AssetsTenantConstants.formLoginName); - FormSaveUtil.formSave(loginName,getFormNo(),factory,mainFormData,null); + mainData.put("档案编号",docNo); + mainData.put("运营类型",getManageType(params.getString("assetsNo"),params.getString("houseSourceType"))); + mainData.put("处理状态", EnumMapUtils.getEnumItemValueByDisplayValue(getMasterTableContext().getTableBean(), "处理状态", "未处理")); + // 12. 启动流程 + this.flowCreateService.flowStart("预约看房流程", + mainFormData, subFormDataMap, appName, templateCode); } - public Long getManageType(String assetsNo) throws Exception { + public Long getManageType(String assetsNo,String houseType) throws Exception { JSONObject param = new JSONObject(); param.put("assetsNo", assetsNo); - Long manageType = assetsService.queryAssetsManageType(param); + Long manageType = "自建房".equals(houseType) ? assetsService.queryAssetsManageType(param) : shAssetsService.queryAssetsManageType(param); return manageType; } diff --git a/src/main/java/com/seeyon/ctp/rest/resources/assetstenant/AssetsQueryResource.java b/src/main/java/com/seeyon/ctp/rest/resources/assetstenant/AssetsQueryResource.java index 25a0dcb..82c5e96 100644 --- a/src/main/java/com/seeyon/ctp/rest/resources/assetstenant/AssetsQueryResource.java +++ b/src/main/java/com/seeyon/ctp/rest/resources/assetstenant/AssetsQueryResource.java @@ -3,6 +3,7 @@ package com.seeyon.ctp.rest.resources.assetstenant; import cn.hutool.log.Log; import com.alibaba.fastjson.JSONObject; import com.seeyon.apps.assetstenant.assets.AssetsService; +import com.seeyon.apps.assetstenant.assets.ShAssetsService; import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.rest.resources.BaseResource; @@ -20,6 +21,7 @@ public class AssetsQueryResource extends BaseResource { private static final Log log = Log.get(AssetsQueryResource.class); private AssetsService assetsService = (AssetsService) AppContext.getBean("assetsService"); + private ShAssetsService shAssetsService = (ShAssetsService) AppContext.getBean("shAssetsService"); @POST @Path("/queryPage") @@ -27,8 +29,9 @@ public class AssetsQueryResource extends BaseResource { @Consumes({"application/json"}) public Response queryPage(JSONObject params) throws IOException { log.info("分页查询资产信息参数为:"+params); + String secHouse = params.getString("secHouse"); try{ - return success(assetsService.pageQuery(params)); + return "0".equals(secHouse) ? success(assetsService.pageQuery(params)) : success(shAssetsService.pageQuery(params)); } catch (Exception e) { log.error(e.getMessage(),e); return fail(e.getMessage()); @@ -41,8 +44,9 @@ public class AssetsQueryResource extends BaseResource { @Consumes({"application/json"}) public Response queryDetail(JSONObject params) throws IOException { log.info("查询资产详情信息参数为:"+params); + String secHouse = params.getString("secHouse"); try{ - return success(assetsService.queryAssetsDetail(params)); + return "0".equals(secHouse) ? success(assetsService.queryAssetsDetail(params)) : success(shAssetsService.queryAssetsDetail(params)); } catch (Exception e) { log.error(e.getMessage(),e); return fail(e.getMessage());