java110
2020-04-05 e408613000502cc2d756141b72883ff7d6c1351a
加入任务明细功能
5个文件已修改
19个文件已添加
2010 ■■■■■ 已修改文件
Api/src/main/java/com/java110/api/bmo/inspectionTaskDetail/IInspectionTaskDetailBMO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/bmo/inspectionTaskDetail/impl/InspectionTaskDetailBMOImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/inspectionPlan/ListInspectionPlansListener.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/inspectionTaskDetail/ListInspectionTaskDetailsListener.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/inspectionTaskDetail/SaveInspectionTaskDetailListener.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/inspectionTaskDetail/UpdateInspectionTaskDetailListener.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/dao/IInspectionTaskDetailServiceDao.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/dao/impl/InspectionTaskDetailServiceDaoImpl.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/inspectionTaskDetail/AbstractInspectionTaskDetailBusinessServiceDataFlowListener.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/inspectionTaskDetail/DeleteInspectionTaskDetailInfoListener.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/inspectionTaskDetail/SaveInspectionTaskDetailInfoListener.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/inspectionTaskDetail/UpdateInspectionTaskDetailInfoListener.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/smo/impl/InspectionTaskDetailInnerServiceSMOImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/inspectionTaskDetail/InspectionTaskDetailDto.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/vo/api/inspectionTaskDetail/ApiInspectionTaskDetailDataVo.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/vo/api/inspectionTaskDetail/ApiInspectionTaskDetailVo.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-code-generator/src/main/resources/back/template_1.json 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-code-generator/src/main/resources/back/template_inspectionTask.json 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-code-generator/src/main/resources/template/BMOImpl.java 149 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/GenerateCodeFactory.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/smo/inspectionTaskDetail/IInspectionTaskDetailInnerServiceSMO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/community/InspectionTaskDetailServiceDaoImplMapper.xml 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-utils/src/main/java/com/java110/utils/constant/BusinessTypeConstant.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeInspectionTaskDetailConstant.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/bmo/inspectionTaskDetail/IInspectionTaskDetailBMO.java
New file
@@ -0,0 +1,30 @@
package com.java110.api.bmo.inspectionTaskDetail;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.bmo.IApiBaseBMO;
import com.java110.core.context.DataFlowContext;
public interface IInspectionTaskDetailBMO extends IApiBaseBMO {
    /**
     * 添加巡检任务明细
     * @param paramInJson
     * @param dataFlowContext
     * @return
     */
     JSONObject addInspectionTaskDetail(JSONObject paramInJson, DataFlowContext dataFlowContext);
    /**
     * 添加巡检任务明细信息
     *
     * @param paramInJson     接口调用放传入入参
     * @param dataFlowContext 数据上下文
     * @return 订单服务能够接受的报文
     */
     JSONObject updateInspectionTaskDetail(JSONObject paramInJson, DataFlowContext dataFlowContext);
}
Api/src/main/java/com/java110/api/bmo/inspectionTaskDetail/impl/InspectionTaskDetailBMOImpl.java
New file
@@ -0,0 +1,75 @@
package com.java110.api.bmo.inspectionTaskDetail.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.bmo.ApiBaseBMO;
import com.java110.api.bmo.inspectionTaskDetail.IInspectionTaskDetailBMO;
import com.java110.core.context.DataFlowContext;
import com.java110.core.smo.inspectionTaskDetail.IInspectionTaskDetailInnerServiceSMO;
import com.java110.dto.inspectionTaskDetail.InspectionTaskDetailDto;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("inspectionTaskDetailBMOImpl")
public class InspectionTaskDetailBMOImpl extends ApiBaseBMO implements IInspectionTaskDetailBMO {
    @Autowired
    private IInspectionTaskDetailInnerServiceSMO inspectionTaskDetailInnerServiceSMOImpl;
    /**
     * 添加小区信息
     *
     * @param paramInJson     接口调用放传入入参
     * @param dataFlowContext 数据上下文
     * @return 订单服务能够接受的报文
     */
    public JSONObject addInspectionTaskDetail(JSONObject paramInJson, DataFlowContext dataFlowContext) {
        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_INSPECTION_TASK_DETAIL);
        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
        JSONObject businessInspectionTaskDetail = new JSONObject();
        businessInspectionTaskDetail.putAll(paramInJson);
        businessInspectionTaskDetail.put("taskDetailId", "-1");
        //计算 应收金额
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessInspectionTaskDetail", businessInspectionTaskDetail);
        return business;
    }
    /**
     * 添加活动信息
     *
     * @param paramInJson     接口调用放传入入参
     * @param dataFlowContext 数据上下文
     * @return 订单服务能够接受的报文
     */
    public JSONObject updateInspectionTaskDetail(JSONObject paramInJson, DataFlowContext dataFlowContext) {
        InspectionTaskDetailDto inspectionTaskDetailDto = new InspectionTaskDetailDto();
        inspectionTaskDetailDto.setTaskDetailId(paramInJson.getString("taskDetailId"));
        inspectionTaskDetailDto.setCommunityId(paramInJson.getString("communityId"));
        List<InspectionTaskDetailDto> inspectionTaskDetailDtos = inspectionTaskDetailInnerServiceSMOImpl.queryInspectionTaskDetails(inspectionTaskDetailDto);
        Assert.listOnlyOne(inspectionTaskDetailDtos, "未找到需要修改的活动 或多条数据");
        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_INSPECTION_TASK_DETAIL);
        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
        JSONObject businessInspectionTaskDetail = new JSONObject();
        businessInspectionTaskDetail.putAll(BeanConvertUtil.beanCovertMap(inspectionTaskDetailDtos.get(0)));
        businessInspectionTaskDetail.putAll(paramInJson);
        //计算 应收金额
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessInspectionTaskDetail", businessInspectionTaskDetail);
        return business;
    }
}
Api/src/main/java/com/java110/api/listener/inspectionPlan/ListInspectionPlansListener.java
@@ -10,6 +10,7 @@
import com.java110.dto.org.OrgStaffRelDto;
import com.java110.dto.user.UserDto;
import com.java110.utils.constant.ServiceCodeInspectionPlanConstant;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
@@ -71,6 +72,7 @@
    @Override
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
        super.validatePageInfo(reqJson);
        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区ID");
    }
    @Override
@@ -86,22 +88,22 @@
            inspectionPlans = BeanConvertUtil.covertBeanList(inspectionPlanInnerServiceSMOImpl.queryInspectionPlans(inspectionPlanDto), ApiInspectionPlanDataVo.class);
            ArrayList staffIds = new ArrayList<>();
            ArrayList inspectionRouteIds = new ArrayList<>();
            for( ApiInspectionPlanDataVo Plans : inspectionPlans){
            for (ApiInspectionPlanDataVo Plans : inspectionPlans) {
                staffIds.add(Plans.getStaffId());
                String[] ids = Plans.getInspectionRouteId().split(",");
                for( String s : ids){
                for (String s : ids) {
                    inspectionRouteIds.add(s);
                }
            }
            if(staffIds.size() > 0){
            if (staffIds.size() > 0) {
                OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
                String[] staffIdsArray=new String[staffIds.size()];
                String[] staffIdsArray = new String[staffIds.size()];
                staffIds.toArray(staffIdsArray);
                orgStaffRelDto.setStaffIds(staffIdsArray);
                List<OrgStaffRelDto> orgStaffRelDtos = iOrgStaffRelInnerServiceSMO.queryOrgInfoByStaffIds(orgStaffRelDto);
                for( ApiInspectionPlanDataVo planDataVo : inspectionPlans){
                    for(OrgStaffRelDto orgs : orgStaffRelDtos){
                        if(planDataVo.getStaffId().equals(orgs.getStaffId())){
                for (ApiInspectionPlanDataVo planDataVo : inspectionPlans) {
                    for (OrgStaffRelDto orgs : orgStaffRelDtos) {
                        if (planDataVo.getStaffId().equals(orgs.getStaffId())) {
                            planDataVo.setDepartmentId(orgs.getDepartmentId());
                            planDataVo.setDepartmentName(orgs.getDepartmentName());
                            planDataVo.setCompanyId(orgs.getCompanyId());
@@ -110,7 +112,7 @@
                    }
                }
            }
            if(inspectionRouteIds.size() > 0){
            if (inspectionRouteIds.size() > 0) {
                //去重
                HashSet set = new HashSet(inspectionRouteIds);
                inspectionRouteIds.clear();
@@ -119,15 +121,15 @@
                String[] routeIds = (String[]) inspectionRouteIds.toArray(new String[inspectionRouteIds.size()]);
                inspectionRouteDto.setInspectionRouteIds(routeIds);
                List<InspectionRouteDto> inspectionRouteDtoList = inspectionRouteInnerServiceSMOImpl.queryInspectionRoutes(inspectionRouteDto);
                for( ApiInspectionPlanDataVo planDataVo : inspectionPlans){
                for (ApiInspectionPlanDataVo planDataVo : inspectionPlans) {
                    String[] routeIdArray = planDataVo.getInspectionRouteId().split(",");
                    for( String s : routeIdArray){
                        for( InspectionRouteDto inspectionRouteDto1 : inspectionRouteDtoList){
                            if(inspectionRouteDto1.getInspectionRouteId().equals(s)){
                                if(planDataVo.getInspectionRouteName() == null){
                    for (String s : routeIdArray) {
                        for (InspectionRouteDto inspectionRouteDto1 : inspectionRouteDtoList) {
                            if (inspectionRouteDto1.getInspectionRouteId().equals(s)) {
                                if (planDataVo.getInspectionRouteName() == null) {
                                    planDataVo.setInspectionRouteName(inspectionRouteDto1.getRouteName());
                                }else{
                                    planDataVo.setInspectionRouteName(planDataVo.getInspectionRouteName()+","+inspectionRouteDto1.getRouteName());
                                } else {
                                    planDataVo.setInspectionRouteName(planDataVo.getInspectionRouteName() + "," + inspectionRouteDto1.getRouteName());
                                }
                            }
                        }
Api/src/main/java/com/java110/api/listener/inspectionTaskDetail/ListInspectionTaskDetailsListener.java
New file
@@ -0,0 +1,88 @@
package com.java110.api.listener.inspectionTaskDetail;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.listener.AbstractServiceApiListener;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.core.smo.inspectionTaskDetail.IInspectionTaskDetailInnerServiceSMO;
import com.java110.dto.inspectionTaskDetail.InspectionTaskDetailDto;
import com.java110.event.service.api.ServiceDataFlowEvent;
import com.java110.utils.constant.ServiceCodeInspectionTaskDetailConstant;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.vo.api.inspectionTaskDetail.ApiInspectionTaskDetailDataVo;
import com.java110.vo.api.inspectionTaskDetail.ApiInspectionTaskDetailVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.util.ArrayList;
import java.util.List;
/**
 * 查询小区侦听类
 */
@Java110Listener("listInspectionTaskDetailsListener")
public class ListInspectionTaskDetailsListener extends AbstractServiceApiListener {
    @Autowired
    private IInspectionTaskDetailInnerServiceSMO inspectionTaskDetailInnerServiceSMOImpl;
    @Override
    public String getServiceCode() {
        return ServiceCodeInspectionTaskDetailConstant.LIST_INSPECTIONTASKDETAILS;
    }
    @Override
    public HttpMethod getHttpMethod() {
        return HttpMethod.GET;
    }
    @Override
    public int getOrder() {
        return DEFAULT_ORDER;
    }
    public IInspectionTaskDetailInnerServiceSMO getInspectionTaskDetailInnerServiceSMOImpl() {
        return inspectionTaskDetailInnerServiceSMOImpl;
    }
    public void setInspectionTaskDetailInnerServiceSMOImpl(IInspectionTaskDetailInnerServiceSMO inspectionTaskDetailInnerServiceSMOImpl) {
        this.inspectionTaskDetailInnerServiceSMOImpl = inspectionTaskDetailInnerServiceSMOImpl;
    }
    @Override
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
        super.validatePageInfo(reqJson);
    }
    @Override
    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
        InspectionTaskDetailDto inspectionTaskDetailDto = BeanConvertUtil.covertBean(reqJson, InspectionTaskDetailDto.class);
        int count = inspectionTaskDetailInnerServiceSMOImpl.queryInspectionTaskDetailsCount(inspectionTaskDetailDto);
        List<ApiInspectionTaskDetailDataVo> inspectionTaskDetails = null;
        if (count > 0) {
            inspectionTaskDetails = BeanConvertUtil.covertBeanList(inspectionTaskDetailInnerServiceSMOImpl.queryInspectionTaskDetails(inspectionTaskDetailDto), ApiInspectionTaskDetailDataVo.class);
        } else {
            inspectionTaskDetails = new ArrayList<>();
        }
        ApiInspectionTaskDetailVo apiInspectionTaskDetailVo = new ApiInspectionTaskDetailVo();
        apiInspectionTaskDetailVo.setTotal(count);
        apiInspectionTaskDetailVo.setRecords((int) Math.ceil((double) count / (double) reqJson.getInteger("row")));
        apiInspectionTaskDetailVo.setInspectionTaskDetails(inspectionTaskDetails);
        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiInspectionTaskDetailVo), HttpStatus.OK);
        context.setResponseEntity(responseEntity);
    }
}
Api/src/main/java/com/java110/api/listener/inspectionTaskDetail/SaveInspectionTaskDetailListener.java
New file
@@ -0,0 +1,75 @@
package com.java110.api.listener.inspectionTaskDetail;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.bmo.inspectionTaskDetail.IInspectionTaskDetailBMO;
import com.java110.api.listener.AbstractServiceApiListener;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.entity.center.AppService;
import com.java110.event.service.api.ServiceDataFlowEvent;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.constant.ServiceCodeInspectionTaskDetailConstant;
import com.java110.utils.util.Assert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
/**
 * 保存小区侦听
 * add by wuxw 2019-06-30
 */
@Java110Listener("saveInspectionTaskDetailListener")
public class SaveInspectionTaskDetailListener extends AbstractServiceApiListener {
    @Autowired
    private IInspectionTaskDetailBMO inspectionTaskDetailBMOImpl;
    @Override
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
        Assert.hasKeyAndValue(reqJson, "taskDetailId", "请求报文中未包含taskDetailId");
        Assert.hasKeyAndValue(reqJson, "taskId", "请求报文中未包含taskId");
        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
        Assert.hasKeyAndValue(reqJson, "inspectionId", "请求报文中未包含inspectionId");
        Assert.hasKeyAndValue(reqJson, "inspectionName", "请求报文中未包含inspectionName");
        Assert.hasKeyAndValue(reqJson, "signType", "请求报文中未包含signType");
    }
    @Override
    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
        HttpHeaders header = new HttpHeaders();
        context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
        JSONArray businesses = new JSONArray();
        AppService service = event.getAppService();
        //添加单元信息
        businesses.add(inspectionTaskDetailBMOImpl.addInspectionTaskDetail(reqJson, context));
        ResponseEntity<String> responseEntity = inspectionTaskDetailBMOImpl.callService(context, service.getServiceCode(), businesses);
        context.setResponseEntity(responseEntity);
    }
    @Override
    public String getServiceCode() {
        return ServiceCodeInspectionTaskDetailConstant.ADD_INSPECTIONTASKDETAIL;
    }
    @Override
    public HttpMethod getHttpMethod() {
        return HttpMethod.POST;
    }
    @Override
    public int getOrder() {
        return DEFAULT_ORDER;
    }
}
Api/src/main/java/com/java110/api/listener/inspectionTaskDetail/UpdateInspectionTaskDetailListener.java
New file
@@ -0,0 +1,74 @@
package com.java110.api.listener.inspectionTaskDetail;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.bmo.inspectionTaskDetail.IInspectionTaskDetailBMO;
import com.java110.api.listener.AbstractServiceApiListener;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.entity.center.AppService;
import com.java110.event.service.api.ServiceDataFlowEvent;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.constant.ServiceCodeInspectionTaskDetailConstant;
import com.java110.utils.util.Assert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
/**
 * 保存巡检任务明细侦听
 * add by wuxw 2019-06-30
 */
@Java110Listener("updateInspectionTaskDetailListener")
public class UpdateInspectionTaskDetailListener extends AbstractServiceApiListener {
    @Autowired
    private IInspectionTaskDetailBMO inspectionTaskDetailBMOImpl;
    @Override
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
        Assert.hasKeyAndValue(reqJson, "taskDetailId", "taskDetailId不能为空");
        Assert.hasKeyAndValue(reqJson, "taskDetailId", "请求报文中未包含taskDetailId");
        Assert.hasKeyAndValue(reqJson, "taskId", "请求报文中未包含taskId");
        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
        Assert.hasKeyAndValue(reqJson, "inspectionId", "请求报文中未包含inspectionId");
        Assert.hasKeyAndValue(reqJson, "inspectionName", "请求报文中未包含inspectionName");
        Assert.hasKeyAndValue(reqJson, "signType", "请求报文中未包含signType");
    }
    @Override
    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
        HttpHeaders header = new HttpHeaders();
        context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
        JSONArray businesses = new JSONArray();
        AppService service = event.getAppService();
        //添加单元信息
        businesses.add(inspectionTaskDetailBMOImpl.updateInspectionTaskDetail(reqJson, context));
        ResponseEntity<String> responseEntity = inspectionTaskDetailBMOImpl.callService(context, service.getServiceCode(), businesses);
        context.setResponseEntity(responseEntity);
    }
    @Override
    public String getServiceCode() {
        return ServiceCodeInspectionTaskDetailConstant.UPDATE_INSPECTIONTASKDETAIL;
    }
    @Override
    public HttpMethod getHttpMethod() {
        return HttpMethod.POST;
    }
    @Override
    public int getOrder() {
        return DEFAULT_ORDER;
    }
}
CommunityService/src/main/java/com/java110/community/dao/IInspectionTaskDetailServiceDao.java
New file
@@ -0,0 +1,81 @@
package com.java110.community.dao;
import com.java110.utils.exception.DAOException;
import com.java110.entity.merchant.BoMerchant;
import com.java110.entity.merchant.BoMerchantAttr;
import com.java110.entity.merchant.Merchant;
import com.java110.entity.merchant.MerchantAttr;
import java.util.List;
import java.util.Map;
/**
 * 巡检任务明细组件内部之间使用,没有给外围系统提供服务能力
 * 巡检任务明细服务接口类,要求全部以字符串传输,方便微服务化
 * 新建客户,修改客户,删除客户,查询客户等功能
 *
 * Created by wuxw on 2016/12/27.
 */
public interface IInspectionTaskDetailServiceDao {
    /**
     * 保存 巡检任务明细信息
     * @param businessInspectionTaskDetailInfo 巡检任务明细信息 封装
     * @throws DAOException 操作数据库异常
     */
    void saveBusinessInspectionTaskDetailInfo(Map businessInspectionTaskDetailInfo) throws DAOException;
    /**
     * 查询巡检任务明细信息(business过程)
     * 根据bId 查询巡检任务明细信息
     * @param info bId 信息
     * @return 巡检任务明细信息
     * @throws DAOException DAO异常
     */
    List<Map> getBusinessInspectionTaskDetailInfo(Map info) throws DAOException;
    /**
     * 保存 巡检任务明细信息 Business数据到 Instance中
     * @param info
     * @throws DAOException DAO异常
     */
    void saveInspectionTaskDetailInfoInstance(Map info) throws DAOException;
    /**
     * 查询巡检任务明细信息(instance过程)
     * 根据bId 查询巡检任务明细信息
     * @param info bId 信息
     * @return 巡检任务明细信息
     * @throws DAOException DAO异常
     */
    List<Map> getInspectionTaskDetailInfo(Map info) throws DAOException;
    /**
     * 修改巡检任务明细信息
     * @param info 修改信息
     * @throws DAOException DAO异常
     */
    void updateInspectionTaskDetailInfoInstance(Map info) throws DAOException;
    /**
     * 查询巡检任务明细总数
     *
     * @param info 巡检任务明细信息
     * @return 巡检任务明细数量
     */
    int queryInspectionTaskDetailsCount(Map info);
}
CommunityService/src/main/java/com/java110/community/dao/impl/InspectionTaskDetailServiceDaoImpl.java
New file
@@ -0,0 +1,134 @@
package com.java110.community.dao.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.community.dao.IInspectionTaskDetailServiceDao;
import com.java110.core.base.dao.BaseServiceDao;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.DAOException;
import com.java110.utils.util.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * 巡检任务明细服务 与数据库交互
 * Created by wuxw on 2017/4/5.
 */
@Service("inspectionTaskDetailServiceDaoImpl")
//@Transactional
public class InspectionTaskDetailServiceDaoImpl extends BaseServiceDao implements IInspectionTaskDetailServiceDao {
    private static Logger logger = LoggerFactory.getLogger(InspectionTaskDetailServiceDaoImpl.class);
    /**
     * 巡检任务明细信息封装
     *
     * @param businessInspectionTaskDetailInfo 巡检任务明细信息 封装
     * @throws DAOException DAO异常
     */
    @Override
    public void saveBusinessInspectionTaskDetailInfo(Map businessInspectionTaskDetailInfo) throws DAOException {
        businessInspectionTaskDetailInfo.put("month", DateUtil.getCurrentMonth());
        // 查询business_user 数据是否已经存在
        logger.debug("保存巡检任务明细信息 入参 businessInspectionTaskDetailInfo : {}", businessInspectionTaskDetailInfo);
        int saveFlag = sqlSessionTemplate.insert("inspectionTaskDetailServiceDaoImpl.saveBusinessInspectionTaskDetailInfo", businessInspectionTaskDetailInfo);
        if (saveFlag < 1) {
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "保存巡检任务明细数据失败:" + JSONObject.toJSONString(businessInspectionTaskDetailInfo));
        }
    }
    /**
     * 查询巡检任务明细信息
     *
     * @param info bId 信息
     * @return 巡检任务明细信息
     * @throws DAOException DAO异常
     */
    @Override
    public List<Map> getBusinessInspectionTaskDetailInfo(Map info) throws DAOException {
        logger.debug("查询巡检任务明细信息 入参 info : {}", info);
        List<Map> businessInspectionTaskDetailInfos = sqlSessionTemplate.selectList("inspectionTaskDetailServiceDaoImpl.getBusinessInspectionTaskDetailInfo", info);
        return businessInspectionTaskDetailInfos;
    }
    /**
     * 保存巡检任务明细信息 到 instance
     *
     * @param info bId 信息
     * @throws DAOException DAO异常
     */
    @Override
    public void saveInspectionTaskDetailInfoInstance(Map info) throws DAOException {
        logger.debug("保存巡检任务明细信息Instance 入参 info : {}", info);
        int saveFlag = sqlSessionTemplate.insert("inspectionTaskDetailServiceDaoImpl.saveInspectionTaskDetailInfoInstance", info);
        if (saveFlag < 1) {
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "保存巡检任务明细信息Instance数据失败:" + JSONObject.toJSONString(info));
        }
    }
    /**
     * 查询巡检任务明细信息(instance)
     *
     * @param info bId 信息
     * @return List<Map>
     * @throws DAOException DAO异常
     */
    @Override
    public List<Map> getInspectionTaskDetailInfo(Map info) throws DAOException {
        logger.debug("查询巡检任务明细信息 入参 info : {}", info);
        List<Map> businessInspectionTaskDetailInfos = sqlSessionTemplate.selectList("inspectionTaskDetailServiceDaoImpl.getInspectionTaskDetailInfo", info);
        return businessInspectionTaskDetailInfos;
    }
    /**
     * 修改巡检任务明细信息
     *
     * @param info 修改信息
     * @throws DAOException DAO异常
     */
    @Override
    public void updateInspectionTaskDetailInfoInstance(Map info) throws DAOException {
        logger.debug("修改巡检任务明细信息Instance 入参 info : {}", info);
        int saveFlag = sqlSessionTemplate.update("inspectionTaskDetailServiceDaoImpl.updateInspectionTaskDetailInfoInstance", info);
        if (saveFlag < 1) {
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "修改巡检任务明细信息Instance数据失败:" + JSONObject.toJSONString(info));
        }
    }
    /**
     * 查询巡检任务明细数量
     *
     * @param info 巡检任务明细信息
     * @return 巡检任务明细数量
     */
    @Override
    public int queryInspectionTaskDetailsCount(Map info) {
        logger.debug("查询巡检任务明细数据 入参 info : {}", info);
        List<Map> businessInspectionTaskDetailInfos = sqlSessionTemplate.selectList("inspectionTaskDetailServiceDaoImpl.queryInspectionTaskDetailsCount", info);
        if (businessInspectionTaskDetailInfos.size() < 1) {
            return 0;
        }
        return Integer.parseInt(businessInspectionTaskDetailInfos.get(0).get("count").toString());
    }
}
CommunityService/src/main/java/com/java110/community/listener/inspectionTaskDetail/AbstractInspectionTaskDetailBusinessServiceDataFlowListener.java
New file
@@ -0,0 +1,85 @@
package com.java110.community.listener.inspectionTaskDetail;
import com.alibaba.fastjson.JSONObject;
import com.java110.community.dao.IInspectionTaskDetailServiceDao;
import com.java110.entity.center.Business;
import com.java110.event.service.AbstractBusinessServiceDataFlowListener;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.exception.ListenerExecuteException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 巡检任务明细 服务侦听 父类
 * Created by wuxw on 2018/7/4.
 */
public abstract class AbstractInspectionTaskDetailBusinessServiceDataFlowListener extends AbstractBusinessServiceDataFlowListener {
    private static Logger logger = LoggerFactory.getLogger(AbstractInspectionTaskDetailBusinessServiceDataFlowListener.class);
    /**
     * 获取 DAO工具类
     *
     * @return
     */
    public abstract IInspectionTaskDetailServiceDao getInspectionTaskDetailServiceDaoImpl();
    /**
     * 刷新 businessInspectionTaskDetailInfo 数据
     * 主要将 数据库 中字段和 接口传递字段建立关系
     *
     * @param businessInspectionTaskDetailInfo
     */
    protected void flushBusinessInspectionTaskDetailInfo(Map businessInspectionTaskDetailInfo, String statusCd) {
        businessInspectionTaskDetailInfo.put("newBId", businessInspectionTaskDetailInfo.get("b_id"));
        businessInspectionTaskDetailInfo.put("inspectionId", businessInspectionTaskDetailInfo.get("inspection_id"));
        businessInspectionTaskDetailInfo.put("operate", businessInspectionTaskDetailInfo.get("operate"));
        businessInspectionTaskDetailInfo.put("inspectionName", businessInspectionTaskDetailInfo.get("inspection_name"));
        businessInspectionTaskDetailInfo.put("state", businessInspectionTaskDetailInfo.get("state"));
        businessInspectionTaskDetailInfo.put("communityId", businessInspectionTaskDetailInfo.get("community_id"));
        businessInspectionTaskDetailInfo.put("taskId", businessInspectionTaskDetailInfo.get("task_id"));
        businessInspectionTaskDetailInfo.put("taskDetailId", businessInspectionTaskDetailInfo.get("task_detail_id"));
        businessInspectionTaskDetailInfo.remove("bId");
        businessInspectionTaskDetailInfo.put("statusCd", statusCd);
    }
    /**
     * 当修改数据时,查询instance表中的数据 自动保存删除数据到business中
     *
     * @param businessInspectionTaskDetail 巡检任务明细信息
     */
    protected void autoSaveDelBusinessInspectionTaskDetail(Business business, JSONObject businessInspectionTaskDetail) {
//自动插入DEL
        Map info = new HashMap();
        info.put("taskDetailId", businessInspectionTaskDetail.getString("taskDetailId"));
        info.put("statusCd", StatusConstant.STATUS_CD_VALID);
        List<Map> currentInspectionTaskDetailInfos = getInspectionTaskDetailServiceDaoImpl().getInspectionTaskDetailInfo(info);
        if (currentInspectionTaskDetailInfos == null || currentInspectionTaskDetailInfos.size() != 1) {
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "未找到需要修改数据信息,入参错误或数据有问题,请检查" + info);
        }
        Map currentInspectionTaskDetailInfo = currentInspectionTaskDetailInfos.get(0);
        currentInspectionTaskDetailInfo.put("bId", business.getbId());
        currentInspectionTaskDetailInfo.put("inspectionId", currentInspectionTaskDetailInfo.get("inspection_id"));
        currentInspectionTaskDetailInfo.put("operate", currentInspectionTaskDetailInfo.get("operate"));
        currentInspectionTaskDetailInfo.put("inspectionName", currentInspectionTaskDetailInfo.get("inspection_name"));
        currentInspectionTaskDetailInfo.put("state", currentInspectionTaskDetailInfo.get("state"));
        currentInspectionTaskDetailInfo.put("communityId", currentInspectionTaskDetailInfo.get("community_id"));
        currentInspectionTaskDetailInfo.put("taskId", currentInspectionTaskDetailInfo.get("task_id"));
        currentInspectionTaskDetailInfo.put("taskDetailId", currentInspectionTaskDetailInfo.get("task_detail_id"));
        currentInspectionTaskDetailInfo.put("operate", StatusConstant.OPERATE_DEL);
        getInspectionTaskDetailServiceDaoImpl().saveBusinessInspectionTaskDetailInfo(currentInspectionTaskDetailInfo);
    }
}
CommunityService/src/main/java/com/java110/community/listener/inspectionTaskDetail/DeleteInspectionTaskDetailInfoListener.java
New file
@@ -0,0 +1,180 @@
package com.java110.community.listener.inspectionTaskDetail;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.community.dao.IInspectionTaskDetailServiceDao;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.entity.center.Business;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.exception.ListenerExecuteException;
import com.java110.utils.util.Assert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 删除巡检任务明细信息 侦听
 * <p>
 * 处理节点
 * 1、businessInspectionTaskDetail:{} 巡检任务明细基本信息节点
 * 2、businessInspectionTaskDetailAttr:[{}] 巡检任务明细属性信息节点
 * 3、businessInspectionTaskDetailPhoto:[{}] 巡检任务明细照片信息节点
 * 4、businessInspectionTaskDetailCerdentials:[{}] 巡检任务明细证件信息节点
 * 协议地址 :https://github.com/java110/MicroCommunity/wiki/%E5%88%A0%E9%99%A4%E5%95%86%E6%88%B7%E4%BF%A1%E6%81%AF-%E5%8D%8F%E8%AE%AE
 * Created by wuxw on 2018/5/18.
 */
@Java110Listener("deleteInspectionTaskDetailInfoListener")
@Transactional
public class DeleteInspectionTaskDetailInfoListener extends AbstractInspectionTaskDetailBusinessServiceDataFlowListener {
    private final static Logger logger = LoggerFactory.getLogger(DeleteInspectionTaskDetailInfoListener.class);
    @Autowired
    IInspectionTaskDetailServiceDao inspectionTaskDetailServiceDaoImpl;
    @Override
    public int getOrder() {
        return 3;
    }
    @Override
    public String getBusinessTypeCd() {
        return BusinessTypeConstant.BUSINESS_TYPE_DELETE_INSPECTION_TASK_DETAIL;
    }
    /**
     * 根据删除信息 查出Instance表中数据 保存至business表 (状态写DEL) 方便撤单时直接更新回去
     *
     * @param dataFlowContext 数据对象
     * @param business        当前业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data, "没有datas 节点,或没有子节点需要处理");
        //处理 businessInspectionTaskDetail 节点
        if (data.containsKey("businessInspectionTaskDetail")) {
            //处理 businessInspectionTaskDetail 节点
            if (data.containsKey("businessInspectionTaskDetail")) {
                Object _obj = data.get("businessInspectionTaskDetail");
                JSONArray businessInspectionTaskDetails = null;
                if (_obj instanceof JSONObject) {
                    businessInspectionTaskDetails = new JSONArray();
                    businessInspectionTaskDetails.add(_obj);
                } else {
                    businessInspectionTaskDetails = (JSONArray) _obj;
                }
                //JSONObject businessInspectionTaskDetail = data.getJSONObject("businessInspectionTaskDetail");
                for (int _inspectionTaskDetailIndex = 0; _inspectionTaskDetailIndex < businessInspectionTaskDetails.size(); _inspectionTaskDetailIndex++) {
                    JSONObject businessInspectionTaskDetail = businessInspectionTaskDetails.getJSONObject(_inspectionTaskDetailIndex);
                    doBusinessInspectionTaskDetail(business, businessInspectionTaskDetail);
                    if (_obj instanceof JSONObject) {
                        dataFlowContext.addParamOut("taskDetailId", businessInspectionTaskDetail.getString("taskDetailId"));
                    }
                }
            }
        }
    }
    /**
     * 删除 instance数据
     *
     * @param dataFlowContext 数据对象
     * @param business        当前业务对象
     */
    @Override
    protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
        String bId = business.getbId();
        //Assert.hasLength(bId,"请求报文中没有包含 bId");
        //巡检任务明细信息
        Map info = new HashMap();
        info.put("bId", business.getbId());
        info.put("operate", StatusConstant.OPERATE_DEL);
        //巡检任务明细信息
        List<Map> businessInspectionTaskDetailInfos = inspectionTaskDetailServiceDaoImpl.getBusinessInspectionTaskDetailInfo(info);
        if (businessInspectionTaskDetailInfos != null && businessInspectionTaskDetailInfos.size() > 0) {
            for (int _inspectionTaskDetailIndex = 0; _inspectionTaskDetailIndex < businessInspectionTaskDetailInfos.size(); _inspectionTaskDetailIndex++) {
                Map businessInspectionTaskDetailInfo = businessInspectionTaskDetailInfos.get(_inspectionTaskDetailIndex);
                flushBusinessInspectionTaskDetailInfo(businessInspectionTaskDetailInfo, StatusConstant.STATUS_CD_INVALID);
                inspectionTaskDetailServiceDaoImpl.updateInspectionTaskDetailInfoInstance(businessInspectionTaskDetailInfo);
                dataFlowContext.addParamOut("taskDetailId", businessInspectionTaskDetailInfo.get("task_detail_id"));
            }
        }
    }
    /**
     * 撤单
     * 从business表中查询到DEL的数据 将instance中的数据更新回来
     *
     * @param dataFlowContext 数据对象
     * @param business        当前业务对象
     */
    @Override
    protected void doRecover(DataFlowContext dataFlowContext, Business business) {
        String bId = business.getbId();
        //Assert.hasLength(bId,"请求报文中没有包含 bId");
        Map info = new HashMap();
        info.put("bId", bId);
        info.put("statusCd", StatusConstant.STATUS_CD_INVALID);
        Map delInfo = new HashMap();
        delInfo.put("bId", business.getbId());
        delInfo.put("operate", StatusConstant.OPERATE_DEL);
        //巡检任务明细信息
        List<Map> inspectionTaskDetailInfo = inspectionTaskDetailServiceDaoImpl.getInspectionTaskDetailInfo(info);
        if (inspectionTaskDetailInfo != null && inspectionTaskDetailInfo.size() > 0) {
            //巡检任务明细信息
            List<Map> businessInspectionTaskDetailInfos = inspectionTaskDetailServiceDaoImpl.getBusinessInspectionTaskDetailInfo(delInfo);
            //除非程序出错了,这里不会为空
            if (businessInspectionTaskDetailInfos == null || businessInspectionTaskDetailInfos.size() == 0) {
                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_INNER_ERROR, "撤单失败(inspectionTaskDetail),程序内部异常,请检查! " + delInfo);
            }
            for (int _inspectionTaskDetailIndex = 0; _inspectionTaskDetailIndex < businessInspectionTaskDetailInfos.size(); _inspectionTaskDetailIndex++) {
                Map businessInspectionTaskDetailInfo = businessInspectionTaskDetailInfos.get(_inspectionTaskDetailIndex);
                flushBusinessInspectionTaskDetailInfo(businessInspectionTaskDetailInfo, StatusConstant.STATUS_CD_VALID);
                inspectionTaskDetailServiceDaoImpl.updateInspectionTaskDetailInfoInstance(businessInspectionTaskDetailInfo);
            }
        }
    }
    /**
     * 处理 businessInspectionTaskDetail 节点
     *
     * @param business                     总的数据节点
     * @param businessInspectionTaskDetail 巡检任务明细节点
     */
    private void doBusinessInspectionTaskDetail(Business business, JSONObject businessInspectionTaskDetail) {
        Assert.jsonObjectHaveKey(businessInspectionTaskDetail, "taskDetailId", "businessInspectionTaskDetail 节点下没有包含 taskDetailId 节点");
        if (businessInspectionTaskDetail.getString("taskDetailId").startsWith("-")) {
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "taskDetailId 错误,不能自动生成(必须已经存在的taskDetailId)" + businessInspectionTaskDetail);
        }
        //自动插入DEL
        autoSaveDelBusinessInspectionTaskDetail(business, businessInspectionTaskDetail);
    }
    public IInspectionTaskDetailServiceDao getInspectionTaskDetailServiceDaoImpl() {
        return inspectionTaskDetailServiceDaoImpl;
    }
    public void setInspectionTaskDetailServiceDaoImpl(IInspectionTaskDetailServiceDao inspectionTaskDetailServiceDaoImpl) {
        this.inspectionTaskDetailServiceDaoImpl = inspectionTaskDetailServiceDaoImpl;
    }
}
CommunityService/src/main/java/com/java110/community/listener/inspectionTaskDetail/SaveInspectionTaskDetailInfoListener.java
New file
@@ -0,0 +1,175 @@
package com.java110.community.listener.inspectionTaskDetail;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.util.Assert;
import com.java110.community.dao.IInspectionTaskDetailServiceDao;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.entity.center.Business;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 保存 巡检任务明细信息 侦听
 * Created by wuxw on 2018/5/18.
 */
@Java110Listener("saveInspectionTaskDetailInfoListener")
@Transactional
public class SaveInspectionTaskDetailInfoListener extends AbstractInspectionTaskDetailBusinessServiceDataFlowListener{
    private static Logger logger = LoggerFactory.getLogger(SaveInspectionTaskDetailInfoListener.class);
    @Autowired
    private IInspectionTaskDetailServiceDao inspectionTaskDetailServiceDaoImpl;
    @Override
    public int getOrder() {
        return 0;
    }
    @Override
    public String getBusinessTypeCd() {
        return BusinessTypeConstant.BUSINESS_TYPE_SAVE_INSPECTION_TASK_DETAIL;
    }
    /**
     * 保存巡检任务明细信息 business 表中
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data,"没有datas 节点,或没有子节点需要处理");
        //处理 businessInspectionTaskDetail 节点
        if(data.containsKey("businessInspectionTaskDetail")){
            Object bObj = data.get("businessInspectionTaskDetail");
            JSONArray businessInspectionTaskDetails = null;
            if(bObj instanceof JSONObject){
                businessInspectionTaskDetails = new JSONArray();
                businessInspectionTaskDetails.add(bObj);
            }else {
                businessInspectionTaskDetails = (JSONArray)bObj;
            }
            //JSONObject businessInspectionTaskDetail = data.getJSONObject("businessInspectionTaskDetail");
            for (int bInspectionTaskDetailIndex = 0; bInspectionTaskDetailIndex < businessInspectionTaskDetails.size();bInspectionTaskDetailIndex++) {
                JSONObject businessInspectionTaskDetail = businessInspectionTaskDetails.getJSONObject(bInspectionTaskDetailIndex);
                doBusinessInspectionTaskDetail(business, businessInspectionTaskDetail);
                if(bObj instanceof JSONObject) {
                    dataFlowContext.addParamOut("taskDetailId", businessInspectionTaskDetail.getString("taskDetailId"));
                }
            }
        }
    }
    /**
     * business 数据转移到 instance
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Map info = new HashMap();
        info.put("bId",business.getbId());
        info.put("operate",StatusConstant.OPERATE_ADD);
        //巡检任务明细信息
        List<Map> businessInspectionTaskDetailInfo = inspectionTaskDetailServiceDaoImpl.getBusinessInspectionTaskDetailInfo(info);
        if( businessInspectionTaskDetailInfo != null && businessInspectionTaskDetailInfo.size() >0) {
            reFreshShareColumn(info, businessInspectionTaskDetailInfo.get(0));
            inspectionTaskDetailServiceDaoImpl.saveInspectionTaskDetailInfoInstance(info);
            if(businessInspectionTaskDetailInfo.size() == 1) {
                dataFlowContext.addParamOut("taskDetailId", businessInspectionTaskDetailInfo.get(0).get("task_detail_id"));
            }
        }
    }
    /**
     * 刷 分片字段
     *
     * @param info         查询对象
     * @param businessInfo 小区ID
     */
    private void reFreshShareColumn(Map info, Map businessInfo) {
        if (info.containsKey("communityId")) {
            return;
        }
        if (!businessInfo.containsKey("community_id")) {
            return;
        }
        info.put("communityId", businessInfo.get("community_id"));
    }
    /**
     * 撤单
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doRecover(DataFlowContext dataFlowContext, Business business) {
        String bId = business.getbId();
        //Assert.hasLength(bId,"请求报文中没有包含 bId");
        Map info = new HashMap();
        info.put("bId",bId);
        info.put("statusCd",StatusConstant.STATUS_CD_VALID);
        Map paramIn = new HashMap();
        paramIn.put("bId",bId);
        paramIn.put("statusCd",StatusConstant.STATUS_CD_INVALID);
        //巡检任务明细信息
        List<Map> inspectionTaskDetailInfo = inspectionTaskDetailServiceDaoImpl.getInspectionTaskDetailInfo(info);
        if(inspectionTaskDetailInfo != null && inspectionTaskDetailInfo.size() > 0){
            reFreshShareColumn(paramIn, inspectionTaskDetailInfo.get(0));
            inspectionTaskDetailServiceDaoImpl.updateInspectionTaskDetailInfoInstance(paramIn);
        }
    }
    /**
     * 处理 businessInspectionTaskDetail 节点
     * @param business 总的数据节点
     * @param businessInspectionTaskDetail 巡检任务明细节点
     */
    private void doBusinessInspectionTaskDetail(Business business,JSONObject businessInspectionTaskDetail){
        Assert.jsonObjectHaveKey(businessInspectionTaskDetail,"taskDetailId","businessInspectionTaskDetail 节点下没有包含 taskDetailId 节点");
        if(businessInspectionTaskDetail.getString("taskDetailId").startsWith("-")){
            //刷新缓存
            //flushInspectionTaskDetailId(business.getDatas());
            businessInspectionTaskDetail.put("taskDetailId",GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_taskDetailId));
        }
        businessInspectionTaskDetail.put("bId",business.getbId());
        businessInspectionTaskDetail.put("operate", StatusConstant.OPERATE_ADD);
        //保存巡检任务明细信息
        inspectionTaskDetailServiceDaoImpl.saveBusinessInspectionTaskDetailInfo(businessInspectionTaskDetail);
    }
    public IInspectionTaskDetailServiceDao getInspectionTaskDetailServiceDaoImpl() {
        return inspectionTaskDetailServiceDaoImpl;
    }
    public void setInspectionTaskDetailServiceDaoImpl(IInspectionTaskDetailServiceDao inspectionTaskDetailServiceDaoImpl) {
        this.inspectionTaskDetailServiceDaoImpl = inspectionTaskDetailServiceDaoImpl;
    }
}
CommunityService/src/main/java/com/java110/community/listener/inspectionTaskDetail/UpdateInspectionTaskDetailInfoListener.java
New file
@@ -0,0 +1,190 @@
package com.java110.community.listener.inspectionTaskDetail;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.community.dao.IInspectionTaskDetailServiceDao;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.entity.center.Business;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.exception.ListenerExecuteException;
import com.java110.utils.util.Assert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 修改巡检任务明细信息 侦听
 * <p>
 * 处理节点
 * 1、businessInspectionTaskDetail:{} 巡检任务明细基本信息节点
 * 2、businessInspectionTaskDetailAttr:[{}] 巡检任务明细属性信息节点
 * 3、businessInspectionTaskDetailPhoto:[{}] 巡检任务明细照片信息节点
 * 4、businessInspectionTaskDetailCerdentials:[{}] 巡检任务明细证件信息节点
 * 协议地址 :https://github.com/java110/MicroCommunity/wiki/%E4%BF%AE%E6%94%B9%E5%95%86%E6%88%B7%E4%BF%A1%E6%81%AF-%E5%8D%8F%E8%AE%AE
 * Created by wuxw on 2018/5/18.
 */
@Java110Listener("updateInspectionTaskDetailInfoListener")
@Transactional
public class UpdateInspectionTaskDetailInfoListener extends AbstractInspectionTaskDetailBusinessServiceDataFlowListener {
    private static Logger logger = LoggerFactory.getLogger(UpdateInspectionTaskDetailInfoListener.class);
    @Autowired
    private IInspectionTaskDetailServiceDao inspectionTaskDetailServiceDaoImpl;
    @Override
    public int getOrder() {
        return 2;
    }
    @Override
    public String getBusinessTypeCd() {
        return BusinessTypeConstant.BUSINESS_TYPE_UPDATE_INSPECTION_TASK_DETAIL;
    }
    /**
     * business过程
     *
     * @param dataFlowContext 上下文对象
     * @param business        业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data, "没有datas 节点,或没有子节点需要处理");
        //处理 businessInspectionTaskDetail 节点
        if (data.containsKey("businessInspectionTaskDetail")) {
            //处理 businessInspectionTaskDetail 节点
            if (data.containsKey("businessInspectionTaskDetail")) {
                Object _obj = data.get("businessInspectionTaskDetail");
                JSONArray businessInspectionTaskDetails = null;
                if (_obj instanceof JSONObject) {
                    businessInspectionTaskDetails = new JSONArray();
                    businessInspectionTaskDetails.add(_obj);
                } else {
                    businessInspectionTaskDetails = (JSONArray) _obj;
                }
                //JSONObject businessInspectionTaskDetail = data.getJSONObject("businessInspectionTaskDetail");
                for (int _inspectionTaskDetailIndex = 0; _inspectionTaskDetailIndex < businessInspectionTaskDetails.size(); _inspectionTaskDetailIndex++) {
                    JSONObject businessInspectionTaskDetail = businessInspectionTaskDetails.getJSONObject(_inspectionTaskDetailIndex);
                    doBusinessInspectionTaskDetail(business, businessInspectionTaskDetail);
                    if (_obj instanceof JSONObject) {
                        dataFlowContext.addParamOut("taskDetailId", businessInspectionTaskDetail.getString("taskDetailId"));
                    }
                }
            }
        }
    }
    /**
     * business to instance 过程
     *
     * @param dataFlowContext 数据对象
     * @param business        当前业务对象
     */
    @Override
    protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Map info = new HashMap();
        info.put("bId", business.getbId());
        info.put("operate", StatusConstant.OPERATE_ADD);
        //巡检任务明细信息
        List<Map> businessInspectionTaskDetailInfos = inspectionTaskDetailServiceDaoImpl.getBusinessInspectionTaskDetailInfo(info);
        if (businessInspectionTaskDetailInfos != null && businessInspectionTaskDetailInfos.size() > 0) {
            for (int _inspectionTaskDetailIndex = 0; _inspectionTaskDetailIndex < businessInspectionTaskDetailInfos.size(); _inspectionTaskDetailIndex++) {
                Map businessInspectionTaskDetailInfo = businessInspectionTaskDetailInfos.get(_inspectionTaskDetailIndex);
                flushBusinessInspectionTaskDetailInfo(businessInspectionTaskDetailInfo, StatusConstant.STATUS_CD_VALID);
                inspectionTaskDetailServiceDaoImpl.updateInspectionTaskDetailInfoInstance(businessInspectionTaskDetailInfo);
                if (businessInspectionTaskDetailInfo.size() == 1) {
                    dataFlowContext.addParamOut("taskDetailId", businessInspectionTaskDetailInfo.get("task_detail_id"));
                }
            }
        }
    }
    /**
     * 撤单
     *
     * @param dataFlowContext 数据对象
     * @param business        当前业务对象
     */
    @Override
    protected void doRecover(DataFlowContext dataFlowContext, Business business) {
        String bId = business.getbId();
        //Assert.hasLength(bId,"请求报文中没有包含 bId");
        Map info = new HashMap();
        info.put("bId", bId);
        info.put("statusCd", StatusConstant.STATUS_CD_VALID);
        Map delInfo = new HashMap();
        delInfo.put("bId", business.getbId());
        delInfo.put("operate", StatusConstant.OPERATE_DEL);
        //巡检任务明细信息
        List<Map> inspectionTaskDetailInfo = inspectionTaskDetailServiceDaoImpl.getInspectionTaskDetailInfo(info);
        if (inspectionTaskDetailInfo != null && inspectionTaskDetailInfo.size() > 0) {
            //巡检任务明细信息
            List<Map> businessInspectionTaskDetailInfos = inspectionTaskDetailServiceDaoImpl.getBusinessInspectionTaskDetailInfo(delInfo);
            //除非程序出错了,这里不会为空
            if (businessInspectionTaskDetailInfos == null || businessInspectionTaskDetailInfos.size() == 0) {
                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_INNER_ERROR, "撤单失败(inspectionTaskDetail),程序内部异常,请检查! " + delInfo);
            }
            for (int _inspectionTaskDetailIndex = 0; _inspectionTaskDetailIndex < businessInspectionTaskDetailInfos.size(); _inspectionTaskDetailIndex++) {
                Map businessInspectionTaskDetailInfo = businessInspectionTaskDetailInfos.get(_inspectionTaskDetailIndex);
                flushBusinessInspectionTaskDetailInfo(businessInspectionTaskDetailInfo, StatusConstant.STATUS_CD_VALID);
                inspectionTaskDetailServiceDaoImpl.updateInspectionTaskDetailInfoInstance(businessInspectionTaskDetailInfo);
            }
        }
    }
    /**
     * 处理 businessInspectionTaskDetail 节点
     *
     * @param business                     总的数据节点
     * @param businessInspectionTaskDetail 巡检任务明细节点
     */
    private void doBusinessInspectionTaskDetail(Business business, JSONObject businessInspectionTaskDetail) {
        Assert.jsonObjectHaveKey(businessInspectionTaskDetail, "taskDetailId", "businessInspectionTaskDetail 节点下没有包含 taskDetailId 节点");
        if (businessInspectionTaskDetail.getString("taskDetailId").startsWith("-")) {
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "taskDetailId 错误,不能自动生成(必须已经存在的taskDetailId)" + businessInspectionTaskDetail);
        }
        //自动保存DEL
        autoSaveDelBusinessInspectionTaskDetail(business, businessInspectionTaskDetail);
        businessInspectionTaskDetail.put("bId", business.getbId());
        businessInspectionTaskDetail.put("operate", StatusConstant.OPERATE_ADD);
        //保存巡检任务明细信息
        inspectionTaskDetailServiceDaoImpl.saveBusinessInspectionTaskDetailInfo(businessInspectionTaskDetail);
    }
    public IInspectionTaskDetailServiceDao getInspectionTaskDetailServiceDaoImpl() {
        return inspectionTaskDetailServiceDaoImpl;
    }
    public void setInspectionTaskDetailServiceDaoImpl(IInspectionTaskDetailServiceDao inspectionTaskDetailServiceDaoImpl) {
        this.inspectionTaskDetailServiceDaoImpl = inspectionTaskDetailServiceDaoImpl;
    }
}
CommunityService/src/main/java/com/java110/community/smo/impl/InspectionTaskDetailInnerServiceSMOImpl.java
New file
@@ -0,0 +1,71 @@
package com.java110.community.smo.impl;
import com.java110.community.dao.IInspectionTaskDetailServiceDao;
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.core.smo.inspectionTaskDetail.IInspectionTaskDetailInnerServiceSMO;
import com.java110.core.smo.user.IUserInnerServiceSMO;
import com.java110.dto.PageDto;
import com.java110.dto.inspectionTaskDetail.InspectionTaskDetailDto;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * @ClassName FloorInnerServiceSMOImpl
 * @Description 巡检任务明细内部服务实现类
 * @Author wuxw
 * @Date 2019/4/24 9:20
 * @Version 1.0
 * add by wuxw 2019/4/24
 **/
@RestController
public class InspectionTaskDetailInnerServiceSMOImpl extends BaseServiceSMO implements IInspectionTaskDetailInnerServiceSMO {
    @Autowired
    private IInspectionTaskDetailServiceDao inspectionTaskDetailServiceDaoImpl;
    @Autowired
    private IUserInnerServiceSMO userInnerServiceSMOImpl;
    @Override
    public List<InspectionTaskDetailDto> queryInspectionTaskDetails(@RequestBody InspectionTaskDetailDto inspectionTaskDetailDto) {
        //校验是否传了 分页信息
        int page = inspectionTaskDetailDto.getPage();
        if (page != PageDto.DEFAULT_PAGE) {
            inspectionTaskDetailDto.setPage((page - 1) * inspectionTaskDetailDto.getRow());
        }
        List<InspectionTaskDetailDto> inspectionTaskDetails = BeanConvertUtil.covertBeanList(inspectionTaskDetailServiceDaoImpl.getInspectionTaskDetailInfo(BeanConvertUtil.beanCovertMap(inspectionTaskDetailDto)), InspectionTaskDetailDto.class);
        return inspectionTaskDetails;
    }
    @Override
    public int queryInspectionTaskDetailsCount(@RequestBody InspectionTaskDetailDto inspectionTaskDetailDto) {
        return inspectionTaskDetailServiceDaoImpl.queryInspectionTaskDetailsCount(BeanConvertUtil.beanCovertMap(inspectionTaskDetailDto));
    }
    public IInspectionTaskDetailServiceDao getInspectionTaskDetailServiceDaoImpl() {
        return inspectionTaskDetailServiceDaoImpl;
    }
    public void setInspectionTaskDetailServiceDaoImpl(IInspectionTaskDetailServiceDao inspectionTaskDetailServiceDaoImpl) {
        this.inspectionTaskDetailServiceDaoImpl = inspectionTaskDetailServiceDaoImpl;
    }
    public IUserInnerServiceSMO getUserInnerServiceSMOImpl() {
        return userInnerServiceSMOImpl;
    }
    public void setUserInnerServiceSMOImpl(IUserInnerServiceSMO userInnerServiceSMOImpl) {
        this.userInnerServiceSMOImpl = userInnerServiceSMOImpl;
    }
}
java110-bean/src/main/java/com/java110/dto/inspectionTaskDetail/InspectionTaskDetailDto.java
New file
@@ -0,0 +1,95 @@
package com.java110.dto.inspectionTaskDetail;
import com.java110.dto.PageDto;
import java.io.Serializable;
import java.util.Date;
/**
 * @ClassName FloorDto
 * @Description 巡检任务明细数据层封装
 * @Author wuxw
 * @Date 2019/4/24 8:52
 * @Version 1.0
 * add by wuxw 2019/4/24
 **/
public class InspectionTaskDetailDto extends PageDto implements Serializable {
    private String inspectionId;
    private String inspectionName;
    private String state;
    private String communityId;
    private String taskId;
    private String taskDetailId;
    private Date createTime;
    private String statusCd = "0";
    public String getInspectionId() {
        return inspectionId;
    }
    public void setInspectionId(String inspectionId) {
        this.inspectionId = inspectionId;
    }
    public String getInspectionName() {
        return inspectionName;
    }
    public void setInspectionName(String inspectionName) {
        this.inspectionName = inspectionName;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public String getCommunityId() {
        return communityId;
    }
    public void setCommunityId(String communityId) {
        this.communityId = communityId;
    }
    public String getTaskId() {
        return taskId;
    }
    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }
    public String getTaskDetailId() {
        return taskDetailId;
    }
    public void setTaskDetailId(String taskDetailId) {
        this.taskDetailId = taskDetailId;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getStatusCd() {
        return statusCd;
    }
    public void setStatusCd(String statusCd) {
        this.statusCd = statusCd;
    }
}
java110-bean/src/main/java/com/java110/vo/api/inspectionTaskDetail/ApiInspectionTaskDetailDataVo.java
New file
@@ -0,0 +1,74 @@
package com.java110.vo.api.inspectionTaskDetail;
import java.io.Serializable;
import java.util.Date;
public class ApiInspectionTaskDetailDataVo implements Serializable {
    private String inspectionId;
private String operate;
private String statusCd;
private String inspectionName;
private String state;
private String communityId;
private String bId;
private String taskId;
private String taskDetailId;
public String getInspectionId() {
        return inspectionId;
    }
public void setInspectionId(String inspectionId) {
        this.inspectionId = inspectionId;
    }
public String getOperate() {
        return operate;
    }
public void setOperate(String operate) {
        this.operate = operate;
    }
public String getStatusCd() {
        return statusCd;
    }
public void setStatusCd(String statusCd) {
        this.statusCd = statusCd;
    }
public String getInspectionName() {
        return inspectionName;
    }
public void setInspectionName(String inspectionName) {
        this.inspectionName = inspectionName;
    }
public String getState() {
        return state;
    }
public void setState(String state) {
        this.state = state;
    }
public String getCommunityId() {
        return communityId;
    }
public void setCommunityId(String communityId) {
        this.communityId = communityId;
    }
public String getBId() {
        return bId;
    }
public void setBId(String bId) {
        this.bId = bId;
    }
public String getTaskId() {
        return taskId;
    }
public void setTaskId(String taskId) {
        this.taskId = taskId;
    }
public String getTaskDetailId() {
        return taskDetailId;
    }
public void setTaskDetailId(String taskDetailId) {
        this.taskDetailId = taskDetailId;
    }
}
java110-bean/src/main/java/com/java110/vo/api/inspectionTaskDetail/ApiInspectionTaskDetailVo.java
New file
@@ -0,0 +1,19 @@
package com.java110.vo.api.inspectionTaskDetail;
import com.java110.vo.MorePageVo;
import java.io.Serializable;
import java.util.List;
public class ApiInspectionTaskDetailVo extends MorePageVo implements Serializable {
    List<ApiInspectionTaskDetailDataVo> inspectionTaskDetails;
    public List<ApiInspectionTaskDetailDataVo> getInspectionTaskDetails() {
        return inspectionTaskDetails;
    }
    public void setInspectionTaskDetails(List<ApiInspectionTaskDetailDataVo> inspectionTaskDetails) {
        this.inspectionTaskDetails = inspectionTaskDetails;
    }
}
java110-code-generator/src/main/resources/back/template_1.json
@@ -1,52 +1,48 @@
{
  "id": "taskId",
  "name": "inspectionTask",
  "desc": "活动",
  "id": "taskDetailId",
  "name": "inspectionTaskDetail",
  "desc": "巡检任务明细",
  "shareParam": "communityId",
  "shareColumn": "community_id",
  "newBusinessTypeCd": "BUSINESS_TYPE_SAVE_INSPECTION_TASK",
  "updateBusinessTypeCd": "BUSINESS_TYPE_UPDATE_INSPECTION_TASK",
  "deleteBusinessTypeCd": "BUSINESS_TYPE_DELETE_INSPECTION_TASK",
  "newBusinessTypeCdValue": "530200030001",
  "updateBusinessTypeCdValue": "530200030001",
  "deleteBusinessTypeCdValue": "530200030001",
  "businessTableName": "business_inspection_task",
  "tableName": "inspection_task",
  "newBusinessTypeCd": "BUSINESS_TYPE_SAVE_INSPECTION_TASK_DETAIL",
  "updateBusinessTypeCd": "BUSINESS_TYPE_UPDATE_INSPECTION_TASK_DETAIL",
  "deleteBusinessTypeCd": "BUSINESS_TYPE_DELETE_INSPECTION_TASK_DETAIL",
  "newBusinessTypeCdValue": "540200030001",
  "updateBusinessTypeCdValue": "540200040001",
  "deleteBusinessTypeCdValue": "540200040001",
  "businessTableName": "business_inspection_task_detail",
  "tableName": "inspection_task_detail",
  "param": {
    "taskDetailId": "task_detail_id",
    "taskId": "task_id",
    "inspectionPlanId": "inspection_plan_id",
    "planInsTime": "plan_ins_time",
    "actInsTime": "act_ins_time",
    "planUserId": "plan_user_id",
    "inspectionId": "inspection_id",
    "inspectionName": "inspection_name",
    "state": "state",
    "communityId": "community_id",
    "planUserName": "plan_user_name",
    "actUserId": "act_user_id",
    "actUserName": "act_user_name",
    "signType": "sign_type",
    "statusCd": "status_cd",
    "operate": "operate",
    "bId": "b_id"
  },
  "required": [
    {
      "code": "inspectionPlanId",
      "msg": "巡检计划不能为空"
      "code": "taskDetailId",
      "msg": "任务明细ID不能为空"
    },
    {
      "code": "actInsTime",
      "msg": "巡检时间不能为空"
      "code": "taskId",
      "msg": "巡检任务不能为空"
    },
    {
      "code": "communityId",
      "msg": "小区不能为空"
    },
    {
      "code": "actUserId",
      "msg": "巡检人不能为空"
      "code": "inspectionId",
      "msg": "巡检点不能为空"
    },
    {
      "code": "actUserName",
      "msg": "巡检人不能为空"
      "code": "inspectionName",
      "msg": "巡检点名称不能为空"
    },
    {
      "code": "signType",
java110-code-generator/src/main/resources/back/template_inspectionTask.json
New file
@@ -0,0 +1,56 @@
{
  "id": "taskId",
  "name": "inspectionTask",
  "desc": "活动",
  "shareParam": "communityId",
  "shareColumn": "community_id",
  "newBusinessTypeCd": "BUSINESS_TYPE_SAVE_INSPECTION_TASK",
  "updateBusinessTypeCd": "BUSINESS_TYPE_UPDATE_INSPECTION_TASK",
  "deleteBusinessTypeCd": "BUSINESS_TYPE_DELETE_INSPECTION_TASK",
  "newBusinessTypeCdValue": "530200030001",
  "updateBusinessTypeCdValue": "530200030001",
  "deleteBusinessTypeCdValue": "530200030001",
  "businessTableName": "business_inspection_task",
  "tableName": "inspection_task",
  "param": {
    "taskId": "task_id",
    "inspectionPlanId": "inspection_plan_id",
    "planInsTime": "plan_ins_time",
    "actInsTime": "act_ins_time",
    "planUserId": "plan_user_id",
    "communityId": "community_id",
    "planUserName": "plan_user_name",
    "actUserId": "act_user_id",
    "actUserName": "act_user_name",
    "signType": "sign_type",
    "statusCd": "status_cd",
    "operate": "operate",
    "bId": "b_id"
  },
  "required": [
    {
      "code": "inspectionPlanId",
      "msg": "巡检计划不能为空"
    },
    {
      "code": "actInsTime",
      "msg": "巡检时间不能为空"
    },
    {
      "code": "communityId",
      "msg": "小区不能为空"
    },
    {
      "code": "actUserId",
      "msg": "巡检人不能为空"
    },
    {
      "code": "actUserName",
      "msg": "巡检人不能为空"
    },
    {
      "code": "signType",
      "msg": "巡检方式不能为空"
    }
  ]
}
java110-code-generator/src/main/resources/template/BMOImpl.java
@@ -1,102 +1,101 @@
package com.java110.api.bmo.activities.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.bmo.ApiBaseBMO;
import com.java110.api.bmo.activities.I@@TemplateCode@@BMO;
import com.java110.core.context.DataFlowContext;
import com.java110.core.smo.community.I@@TemplateCode@@InnerServiceSMO;
import com.java110.core.smo.file.IFileInnerServiceSMO;
import com.java110.core.smo.file.IFileRelInnerServiceSMO;
import com.java110.dto.activities.@@TemplateCode@@Dto;
import com.java110.dto.file.FileRelDto;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@ @TemplateCode @ @BMO;
import com.java110.core.context.DataFlowContext;
        import com.java110.core.smo.community.I@ @TemplateCode @ @InnerServiceSMO;
import com.java110.core.smo.file.IFileInnerServiceSMO;
        import com.java110.core.smo.file.IFileRelInnerServiceSMO;
        import com.java110.dto.activities.@ @TemplateCode @ @Dto;
import com.java110.dto.file.FileRelDto;
        import com.java110.utils.constant.BusinessTypeConstant;
        import com.java110.utils.constant.CommonConstant;
        import com.java110.utils.util.Assert;
        import com.java110.utils.util.BeanConvertUtil;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.stereotype.Service;
        import java.util.List;
@Service("@@templateCode@@BMOImpl")
public class @@TemplateCode@@BMOImpl extends ApiBaseBMO implements I@@TemplateCode@@BMO {
public class@ @TemplateCode @ @BMOImpl extends ApiBaseBMO implements I@ @TemplateCode @ @BMO {
    @Autowired
    private I@@TemplateCode@@InnerServiceSMO @@templateCode@@InnerServiceSMOImpl;
@Autowired
private I@ @TemplateCode @ @InnerServiceSMO @ @templateCode @ @InnerServiceSMOImpl;
    /**
     * 添加小区信息
     *
     * @param paramInJson     接口调用放传入入参
     * @param dataFlowContext 数据上下文
     * @return 订单服务能够接受的报文
     */
    public JSONObject add@@TemplateCode@@(JSONObject paramInJson, DataFlowContext dataFlowContext) {
/**
 * 添加小区信息
 *
 * @param paramInJson     接口调用放传入入参
 * @param dataFlowContext 数据上下文
 * @return 订单服务能够接受的报文
 */
public JSONObject add@ @TemplateCode @ @(JSONObject paramInJson, DataFlowContext dataFlowContext) {
        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_@@TEMPLATECODE@@);
        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
        JSONObject business@@TemplateCode@@ = new JSONObject();
        business@@TemplateCode@@.putAll(paramInJson);
        business@@TemplateCode@@.put("@@templateKey@@", "-1");
        JSONObject business=JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD,BusinessTypeConstant.BUSINESS_TYPE_SAVE_@ @TEMPLATECODE @ @);
        business.put(CommonConstant.HTTP_SEQ,DEFAULT_SEQ);
        business.put(CommonConstant.HTTP_INVOKE_MODEL,CommonConstant.HTTP_INVOKE_MODEL_S);
        JSONObject business@ @TemplateCode @ @ =new JSONObject();
        business@ @TemplateCode @ @.putAll(paramInJson);
        business@ @TemplateCode @ @.put("@@templateKey@@","-1");
        //计算 应收金额
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("business@@TemplateCode@@", business@@TemplateCode@@);
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("business@@TemplateCode@@",business@ @TemplateCode @ @);
        return business;
    }
        }
    /**
     * 添加活动信息
     *
     * @param paramInJson     接口调用放传入入参
     * @param dataFlowContext 数据上下文
     * @return 订单服务能够接受的报文
     */
    public JSONObject update@@TemplateCode@@(JSONObject paramInJson, DataFlowContext dataFlowContext) {
/**
 * 添加活动信息
 *
 * @param paramInJson     接口调用放传入入参
 * @param dataFlowContext 数据上下文
 * @return 订单服务能够接受的报文
 */
public JSONObject update@ @TemplateCode @ @(JSONObject paramInJson, DataFlowContext dataFlowContext) {
        @@TemplateCode@@Dto @@templateCode@@Dto = new @@TemplateCode@@Dto();
        @@templateCode@@Dto.set@@TemplateCode@@Id(paramInJson.getString("@@templateCode@@Id"));
        @@templateCode@@Dto.setCommunityId(paramInJson.getString("communityId"));
        List<@@TemplateCode@@Dto> @@templateCode@@Dtos = @@templateCode@@InnerServiceSMOImpl.query@@TemplateCode@@s(@@templateCode@@Dto);
@ @TemplateCode @ @Dto @ @templateCode @ @Dto =new@ @TemplateCode @ @Dto();
@ @templateCode @ @Dto.set @ @TemplateCode @ @Id(paramInJson.getString("@@templateCode@@Id"));
@ @templateCode @ @Dto.setCommunityId(paramInJson.getString("communityId"));
        List<@ @TemplateCode @ @Dto>@ @templateCode @ @Dtos =@ @templateCode @ @InnerServiceSMOImpl.query @ @TemplateCode @ @s(@@templateCode@@Dto);
        Assert.listOnlyOne(@@templateCode@@Dtos, "未找到需要修改的活动 或多条数据");
        Assert.listOnlyOne(@ @templateCode @ @Dtos,"未找到需要修改的活动 或多条数据");
        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_@@TEMPLATECODE@@);
        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
        JSONObject business@@TemplateCode@@ = new JSONObject();
        business@@TemplateCode@@.putAll(activitiesDtos.get(0));
        business@@TemplateCode@@.putAll(paramInJson);
        JSONObject business=JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD,BusinessTypeConstant.BUSINESS_TYPE_UPDATE_@ @TEMPLATECODE @ @);
        business.put(CommonConstant.HTTP_SEQ,DEFAULT_SEQ);
        business.put(CommonConstant.HTTP_INVOKE_MODEL,CommonConstant.HTTP_INVOKE_MODEL_S);
        JSONObject business@ @TemplateCode @ @ =new JSONObject();
        business@ @TemplateCode @ @.putAll(BeanConvertUtil.beanCovertMap(@ @templateCode @ @Dtos.get(0)));
        business@ @TemplateCode @ @.putAll(paramInJson);
        //计算 应收金额
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("business@@TemplateCode@@", business@@TemplateCode@@);
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("business@@TemplateCode@@",business@ @TemplateCode @ @);
        return business;
    }
        }
    /**
     * 添加小区信息
     *
     * @param paramInJson     接口调用放传入入参
     * @param dataFlowContext 数据上下文
     * @return 订单服务能够接受的报文
     */
    public JSONObject delete@@TemplateCode@@(JSONObject paramInJson, DataFlowContext dataFlowContext) {
/**
 * 添加小区信息
 *
 * @param paramInJson     接口调用放传入入参
 * @param dataFlowContext 数据上下文
 * @return 订单服务能够接受的报文
 */
public JSONObject delete@ @TemplateCode @ @(JSONObject paramInJson, DataFlowContext dataFlowContext) {
        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_DELETE_@@TEMPLATECODE@@);
        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
        JSONObject business@@TemplateCode@@ = new JSONObject();
        business@@TemplateCode@@.putAll(paramInJson);
        JSONObject business=JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD,BusinessTypeConstant.BUSINESS_TYPE_DELETE_@ @TEMPLATECODE @ @);
        business.put(CommonConstant.HTTP_SEQ,DEFAULT_SEQ);
        business.put(CommonConstant.HTTP_INVOKE_MODEL,CommonConstant.HTTP_INVOKE_MODEL_S);
        JSONObject business@ @TemplateCode @ @ =new JSONObject();
        business@ @TemplateCode @ @.putAll(paramInJson);
        //计算 应收金额
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("business@@TemplateCode@@", business@@TemplateCode@@);
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("business@@TemplateCode@@",business@ @TemplateCode @ @);
        return business;
    }
        }
}
        }
java110-core/src/main/java/com/java110/core/factory/GenerateCodeFactory.java
@@ -120,6 +120,7 @@
    public static final String CODE_PREFIX_irpRelId = "51";
    public static final String CODE_PREFIX_inspectionPlanId = "14";
    public static final String CODE_PREFIX_taskId = "52";
    public static final String CODE_PREFIX_taskDetailId = "53";
    public static final String CODE_PREFIX_applyOrderId = "15";
    public static final String CODE_PREFIX_fastuserId = "68";
java110-core/src/main/java/com/java110/core/smo/inspectionTaskDetail/IInspectionTaskDetailInnerServiceSMO.java
New file
@@ -0,0 +1,41 @@
package com.java110.core.smo.inspectionTaskDetail;
import com.java110.core.feign.FeignConfiguration;
import com.java110.dto.inspectionTaskDetail.InspectionTaskDetailDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
/**
 * @ClassName IInspectionTaskDetailInnerServiceSMO
 * @Description 巡检任务明细接口类
 * @Author wuxw
 * @Date 2019/4/24 9:04
 * @Version 1.0
 * add by wuxw 2019/4/24
 **/
@FeignClient(name = "community-service", configuration = {FeignConfiguration.class})
@RequestMapping("/inspectionTaskDetailApi")
public interface IInspectionTaskDetailInnerServiceSMO {
    /**
     * <p>查询小区楼信息</p>
     *
     * @param inspectionTaskDetailDto 数据对象分享
     * @return InspectionTaskDetailDto 对象数据
     */
    @RequestMapping(value = "/queryInspectionTaskDetails", method = RequestMethod.POST)
    List<InspectionTaskDetailDto> queryInspectionTaskDetails(@RequestBody InspectionTaskDetailDto inspectionTaskDetailDto);
    /**
     * 查询<p>小区楼</p>总记录数
     *
     * @param inspectionTaskDetailDto 数据对象分享
     * @return 小区下的小区楼记录数
     */
    @RequestMapping(value = "/queryInspectionTaskDetailsCount", method = RequestMethod.POST)
    int queryInspectionTaskDetailsCount(@RequestBody InspectionTaskDetailDto inspectionTaskDetailDto);
}
java110-db/src/main/resources/mapper/community/InspectionTaskDetailServiceDaoImplMapper.xml
New file
@@ -0,0 +1,187 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="inspectionTaskDetailServiceDaoImpl">
    <!-- 保存巡检任务明细信息 add by wuxw 2018-07-03 -->
       <insert id="saveBusinessInspectionTaskDetailInfo" parameterType="Map">
           insert into business_inspection_task_detail(
inspection_id,operate,inspection_name,state,community_id,b_id,task_id,task_detail_id
) values (
#{inspectionId},#{operate},#{inspectionName},#{state},#{communityId},#{bId},#{taskId},#{taskDetailId}
)
       </insert>
       <!-- 查询巡检任务明细信息(Business) add by wuxw 2018-07-03 -->
       <select id="getBusinessInspectionTaskDetailInfo" parameterType="Map" resultType="Map">
           select  t.inspection_id,t.inspection_id inspectionId,t.operate,t.inspection_name,t.inspection_name inspectionName,t.state,t.community_id,t.community_id communityId,t.b_id,t.b_id bId,t.task_id,t.task_id taskId,t.task_detail_id,t.task_detail_id taskDetailId
from business_inspection_task_detail t
where 1 =1
<if test="inspectionId !=null and inspectionId != ''">
   and t.inspection_id= #{inspectionId}
</if>
<if test="operate !=null and operate != ''">
   and t.operate= #{operate}
</if>
<if test="inspectionName !=null and inspectionName != ''">
   and t.inspection_name= #{inspectionName}
</if>
<if test="state !=null and state != ''">
   and t.state= #{state}
</if>
<if test="communityId !=null and communityId != ''">
   and t.community_id= #{communityId}
</if>
<if test="bId !=null and bId != ''">
   and t.b_id= #{bId}
</if>
<if test="taskId !=null and taskId != ''">
   and t.task_id= #{taskId}
</if>
<if test="taskDetailId !=null and taskDetailId != ''">
   and t.task_detail_id= #{taskDetailId}
</if>
       </select>
    <!-- 保存巡检任务明细信息至 instance表中 add by wuxw 2018-07-03 -->
    <insert id="saveInspectionTaskDetailInfoInstance" parameterType="Map">
        insert into inspection_task_detail(
inspection_id,status_cd,inspection_name,state,community_id,b_id,task_id,task_detail_id
) select t.inspection_id,'0',t.inspection_name,t.state,t.community_id,t.b_id,t.task_id,t.task_detail_id from business_inspection_task_detail t where 1=1
<if test="inspectionId !=null and inspectionId != ''">
   and t.inspection_id= #{inspectionId}
</if>
   and t.operate= 'ADD'
<if test="inspectionName !=null and inspectionName != ''">
   and t.inspection_name= #{inspectionName}
</if>
<if test="state !=null and state != ''">
   and t.state= #{state}
</if>
<if test="communityId !=null and communityId != ''">
   and t.community_id= #{communityId}
</if>
<if test="bId !=null and bId != ''">
   and t.b_id= #{bId}
</if>
<if test="taskId !=null and taskId != ''">
   and t.task_id= #{taskId}
</if>
<if test="taskDetailId !=null and taskDetailId != ''">
   and t.task_detail_id= #{taskDetailId}
</if>
    </insert>
    <!-- 查询巡检任务明细信息 add by wuxw 2018-07-03 -->
    <select id="getInspectionTaskDetailInfo" parameterType="Map" resultType="Map">
        select  t.inspection_id,t.inspection_id inspectionId,t.status_cd,t.status_cd statusCd,t.inspection_name,t.inspection_name inspectionName,t.state,t.community_id,t.community_id communityId,t.b_id,t.b_id bId,t.task_id,t.task_id taskId,t.task_detail_id,t.task_detail_id taskDetailId
from inspection_task_detail t
where 1 =1
<if test="inspectionId !=null and inspectionId != ''">
   and t.inspection_id= #{inspectionId}
</if>
<if test="statusCd !=null and statusCd != ''">
   and t.status_cd= #{statusCd}
</if>
<if test="inspectionName !=null and inspectionName != ''">
   and t.inspection_name= #{inspectionName}
</if>
<if test="state !=null and state != ''">
   and t.state= #{state}
</if>
<if test="communityId !=null and communityId != ''">
   and t.community_id= #{communityId}
</if>
<if test="bId !=null and bId != ''">
   and t.b_id= #{bId}
</if>
<if test="taskId !=null and taskId != ''">
   and t.task_id= #{taskId}
</if>
<if test="taskDetailId !=null and taskDetailId != ''">
   and t.task_detail_id= #{taskDetailId}
</if>
order by t.create_time desc
<if test="page != -1 and page != null ">
   limit #{page}, #{row}
</if>
    </select>
    <!-- 修改巡检任务明细信息 add by wuxw 2018-07-03 -->
    <update id="updateInspectionTaskDetailInfoInstance" parameterType="Map">
        update  inspection_task_detail t set t.status_cd = #{statusCd}
<if test="newBId != null and newBId != ''">
,t.b_id = #{newBId}
</if>
<if test="inspectionId !=null and inspectionId != ''">
, t.inspection_id= #{inspectionId}
</if>
<if test="inspectionName !=null and inspectionName != ''">
, t.inspection_name= #{inspectionName}
</if>
<if test="state !=null and state != ''">
, t.state= #{state}
</if>
<if test="communityId !=null and communityId != ''">
, t.community_id= #{communityId}
</if>
<if test="taskId !=null and taskId != ''">
, t.task_id= #{taskId}
</if>
 where 1=1 <if test="bId !=null and bId != ''">
and t.b_id= #{bId}
</if>
<if test="taskDetailId !=null and taskDetailId != ''">
and t.task_detail_id= #{taskDetailId}
</if>
    </update>
    <!-- 查询巡检任务明细数量 add by wuxw 2018-07-03 -->
     <select id="queryInspectionTaskDetailsCount" parameterType="Map" resultType="Map">
        select  count(1) count
from inspection_task_detail t
where 1 =1
<if test="inspectionId !=null and inspectionId != ''">
   and t.inspection_id= #{inspectionId}
</if>
<if test="statusCd !=null and statusCd != ''">
   and t.status_cd= #{statusCd}
</if>
<if test="inspectionName !=null and inspectionName != ''">
   and t.inspection_name= #{inspectionName}
</if>
<if test="state !=null and state != ''">
   and t.state= #{state}
</if>
<if test="communityId !=null and communityId != ''">
   and t.community_id= #{communityId}
</if>
<if test="bId !=null and bId != ''">
   and t.b_id= #{bId}
</if>
<if test="taskId !=null and taskId != ''">
   and t.task_id= #{taskId}
</if>
<if test="taskDetailId !=null and taskDetailId != ''">
   and t.task_detail_id= #{taskDetailId}
</if>
     </select>
</mapper>
java110-utils/src/main/java/com/java110/utils/constant/BusinessTypeConstant.java
@@ -914,11 +914,28 @@
     * 3保存
     */
    public static final String BUSINESS_TYPE_SAVE_FASTUSER="666666668888888";
    /**
     *  保存巡检任务
     *  3保存
     */
    public static final String BUSINESS_TYPE_SAVE_INSPECTION_TASK="530200030001";
    /**
     *  保存巡检任务
     *  3保存
     */
    public static final String BUSINESS_TYPE_SAVE_INSPECTION_TASK_DETAIL="540200030001";
    /**
     *  保存巡检任务
     *  3保存
     */
    public static final String BUSINESS_TYPE_UPDATE_INSPECTION_TASK_DETAIL="540200040001";
    public static final String BUSINESS_TYPE_DELETE_INSPECTION_TASK_DETAIL="540200050001";
}
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeInspectionTaskDetailConstant.java
New file
@@ -0,0 +1,31 @@
package com.java110.utils.constant;
/**
 * 巡检任务明细常量类
 * Created by wuxw on 2017/5/20.
 */
public class ServiceCodeInspectionTaskDetailConstant {
    /**
     * 添加 巡检任务明细
     */
    public static final String ADD_INSPECTIONTASKDETAIL = "inspectionTaskDetail.saveInspectionTaskDetail";
    /**
     * 修改 巡检任务明细
     */
    public static final String UPDATE_INSPECTIONTASKDETAIL = "inspectionTaskDetail.updateInspectionTaskDetail";
    /**
     * 删除 巡检任务明细
     */
    public static final String DELETE_INSPECTIONTASKDETAIL = "inspectionTaskDetail.deleteInspectionTaskDetail";
    /**
     * 查询 巡检任务明细
     */
    public static final String LIST_INSPECTIONTASKDETAILS = "inspectionTaskDetail.listInspectionTaskDetails";
}