瀏覽代碼

设施新增,修改变更

zdm 6 年之前
父節點
當前提交
7640c46e1e

+ 3 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/health/house/HealthyHouseMapping.java

@ -54,6 +54,9 @@ public class HealthyHouseMapping {
            public static final String GET_FACILITIELIST = "/list/getAppFacilities";
            public static final String GET_ALL_FACILITIELISTS_COUNT = "/list/getAllFacilitiesCount";
            public static final String UPDATE_FACILITIES_AND_RELATION = "/update/facilitieAndRelations";
        }
        //设施服务

+ 125 - 40
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/facilities/FacilitiesController.java

@ -72,16 +72,17 @@ public class FacilitiesController extends EnvelopRestEndpoint {
        return success(facilityList, (null == facilityList) ? 0 : facilityList.size(), page, size);
    }
    @ApiOperation(value = "创建/更新(id存在)设施,包含设施与服务的关联关系")
    @ApiOperation(value = "创建设施,包含设施与服务的关联关系")
    @Transactional(rollbackFor = Exception.class)
    @PostMapping(value = HealthyHouseMapping.HealthyHouse.Facilities.CREATE)
    public ObjEnvelop<Facility> createFacilities(
            @ApiParam(name = "facility", value = "设施JSON结构")
            @RequestParam(value = "facility") String facility,
            @ApiParam(name = "facilityServerJson", value = "设施与服务关联关系")
            @ApiParam(name = "facilityServerJson", value = "设施关联的服务字符串用,号隔开")
            @RequestParam(value = "facilityServerJson") String facilityServerJson) throws IOException {
        Facility facility1 = toEntity(facility, Facility.class);
        List<Facility> facilityList = null;
        List<FacilityServerRelation> facilityServerRelationList = new ArrayList<>();
        if (StringUtils.isEmpty(facility1.getCode())) {
            return failed("设施编码不能为空!", ObjEnvelop.class);
        } else {
@ -108,24 +109,62 @@ public class FacilitiesController extends EnvelopRestEndpoint {
            return failed("设施类别不正确,请参考系统字典:设施类别!", ObjEnvelop.class);
        }
        Facility facilityBack = facilityService.save(facility1);
        JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, FacilityServerRelation.class);
        List<FacilityServerRelation> models = objectMapper.readValue(facilityServerJson, javaType);
        if (null != models && models.size() > 0) {
            for (FacilityServerRelation facilityServerRelation : models) {
                facilityServerRelationService.save(facilityServerRelation);
                //添加设施的时候,追加改服务的使用设施数量。
                List<FacilityServer> facilityServerList = facilityServerService.findByField("code", facilityServerRelation.getServiceCode());
                for (FacilityServer facilityServer : facilityServerList) {
                    Integer num = Integer.valueOf(facilityServer.getNum()) + 1;
                    facilityServer.setNum(num.toString());
                    facilityServerService.save(facilityServer);
                }
        createRelationByServerCode(facility1,facilityServerJson);
        facilityBack.setFacilityServerRelation(facilityServerRelationList);
        return success(facilityBack);
    }
    @ApiOperation(value = "更新(id存在)设施,包含设施与服务的关联关系")
    @Transactional(rollbackFor = Exception.class)
    @PostMapping(value = HealthyHouseMapping.HealthyHouse.Facilities.UPDATE_FACILITIES_AND_RELATION)
    public ObjEnvelop<Facility> updateFacilitieAndRelations(
            @ApiParam(name = "facility", value = "设施JSON结构")
            @RequestParam(value = "facility") String facility,
            @ApiParam(name = "facilityServerJson", value = "设施关联的服务字符串用,号隔开")
            @RequestParam(value = "facilityServerJson") String facilityServerJson) throws Exception {
        Facility facility1 = toEntity(facility, Facility.class);
        List<Facility> facilityList = null;
        List<FacilityServerRelation> facilityServerRelationList = new ArrayList<>();
        List<Facility> faList = facilityService.findByField("id", facility1.getId());
        if (!(faList != null && faList.size() > 0)) {
            return failed("设施不存在!", ObjEnvelop.class);
        }
        if (StringUtils.isNotEmpty(facility1.getId())) {
            //删除设施,设施关联关系,设施服务使用设施数
            deleteFacilityByCode(facility1);
        }
        if (StringUtils.isEmpty(facility1.getCode())) {
            return failed("设施编码不能为空!", ObjEnvelop.class);
        } else {
            facilityList = facilityService.findByField("code", facility1.getCode());
            if (null != facilityList && facilityList.size() > 0) {
                return failed("设施编码已存在!", ObjEnvelop.class);
            }
        }
        if (StringUtils.isEmpty(facility1.getName())) {
            return failed("设施名称不能为空!", ObjEnvelop.class);
        } else {
            facilityList = facilityService.findByField("name", facility1.getName());
            if (null != facilityList && facilityList.size() > 0) {
                return failed("设施名称已存在!", ObjEnvelop.class);
            }
        }
        facilityBack.setFacilityServerRelation(models);
        if (!(facility1.getLongitude() > 0)) {
            return failed("设施经度不能为空!", ObjEnvelop.class);
        }
        if (!(facility1.getLatitude() > 0)) {
            return failed("设施纬度不能为空!", ObjEnvelop.class);
        }
        if (StringUtils.isEmpty(facility1.getCategory().toString())) {
            return failed("设施类别不正确,请参考系统字典:设施类别!", ObjEnvelop.class);
        }
        Facility facilityBack = facilityService.save(facility1);
        createRelationByServerCode(facility1,facilityServerJson);
        facilityBack.setFacilityServerRelation(facilityServerRelationList);
        return success(facilityBack);
    }
    @ApiOperation(value = "获取设施")
    @GetMapping(value = HealthyHouseMapping.HealthyHouse.Facilities.GET_FACILITIES_BY_ID)
    public ObjEnvelop<Facility> getFacilitie(
@ -188,18 +227,7 @@ public class FacilitiesController extends EnvelopRestEndpoint {
        if (null == facility) {
            return failed("设施不存在!");
        }
        List<FacilityServerRelation> facilityServerRelationList = facilityServerRelationService.findByField("facilitieCode", facility.getCode());
        //通过设施与服务关系,变更设施服务使用数量
        for (FacilityServerRelation facilityServerRelation : facilityServerRelationList) {
            List<FacilityServer> facilityServiceList = facilityServerService.findByField("code", facilityServerRelation.getServiceCode());
            for (FacilityServer facilityServer : facilityServiceList) {
                Integer num = Integer.valueOf(facilityServer.getNum()) - 1;
                facilityServer.setNum(num.toString());
                facilityServerService.save(facilityServer);
            }
        }
        facilityServerRelationService.deleteByFacilitieCode(facility.getCode());
        facilityService.delete(facility);
        deleteFacilityByCode(facility);
        return success("success");
    }
@ -248,16 +276,16 @@ public class FacilitiesController extends EnvelopRestEndpoint {
    @ApiOperation(value = "设施列表导出excel")
    public void exportToExcel(
            HttpServletResponse response,
            @ApiParam(name = "filters", value = "过滤条件", required = false)@RequestParam(required = false, name = "filters") String filters,
            @ApiParam(name = "sorts", value = "排序", required = false)@RequestParam(required = false, name = "sorts") String sorts) throws ManageException {
            @ApiParam(name = "filters", value = "过滤条件", required = false) @RequestParam(required = false, name = "filters") String filters,
            @ApiParam(name = "sorts", value = "排序", required = false) @RequestParam(required = false, name = "sorts") String sorts) throws ManageException {
        //获取设施数据
        List<Facility> facilityList = null;
        try {
           facilityList = facilityService.search( filters, sorts);
            facilityList = facilityService.search(filters, sorts);
        } catch (ParseException e) {
            throw new ManageException("获取设施列表异常",e);
            throw new ManageException("获取设施列表异常", e);
        }
        facilityService.exportFacilityExcel(response,facilityList);
        facilityService.exportFacilityExcel(response, facilityList);
    }
@ -269,13 +297,13 @@ public class FacilitiesController extends EnvelopRestEndpoint {
            AExcelReader excelReader = new FacilityMsgReader();
            excelReader.read(file);
            List<FacilityMsg> dataList = excelReader.getCorrectLs();
            if(dataList.size()>0) {
                Map<String,Object> result = facilityService.batchInsertFacility(dataList);
                return ObjEnvelop.getSuccess("导入成功!",result);
            if (dataList.size() > 0) {
                Map<String, Object> result = facilityService.batchInsertFacility(dataList);
                return ObjEnvelop.getSuccess("导入成功!", result);
            }
        } catch (Exception e) {
            throw new ManageException("导入设施列表异常!",e);
            throw new ManageException("导入设施列表异常!", e);
        }
        return ObjEnvelop.getError("导入失败");
    }
@ -300,15 +328,15 @@ public class FacilitiesController extends EnvelopRestEndpoint {
        Map<String, Long> map = new HashMap<>();
        //今日使用设施数
        long countUsedFacilitieToday = facilityServerRelationService.countDistinctByFacilitieCodeAndCreateTimeBetween();
        map.put("countUsedFacilitieToday",countUsedFacilitieToday);
        map.put("countUsedFacilitieToday", countUsedFacilitieToday);
        long countAllFacilitie = facilityService.getCount("");
        map.put("countAllFacilitie",countAllFacilitie);
        map.put("countAllFacilitie", countAllFacilitie);
        //今日新增设施:false
        String todayStart = DateUtil.getStringDateShort() + " " + "00:00:00";
        String todayEnd = DateUtil.getStringDateShort() + " " + "23:59:59";
        String  filters = "createTime>=" + todayStart + ";createTime<=" + todayEnd;
        String filters = "createTime>=" + todayStart + ";createTime<=" + todayEnd;
        long countCreatedFacilitieToday = facilityService.getCount(filters);
        map.put("countCreatedFacilitieToday",countCreatedFacilitieToday);
        map.put("countCreatedFacilitieToday", countCreatedFacilitieToday);
        return ObjEnvelop.getSuccess("获取成功", map);
    }
@ -329,4 +357,61 @@ public class FacilitiesController extends EnvelopRestEndpoint {
//    }
    /**
     * 根据设施,删除设施关联服务,变更设施服务关联设施数,删除设施
     * @param facility 设施
     * @throws Exception
     */
    private void deleteFacilityByCode(Facility facility) throws Exception {
        List<FacilityServerRelation> facilityServerRelationList = facilityServerRelationService.findByField("facilitieCode", facility.getCode());
        //通过设施与服务关系,变更设施服务使用数量
        for (FacilityServerRelation facilityServerRelation : facilityServerRelationList) {
            List<FacilityServer> facilityServiceList = facilityServerService.findByField("code", facilityServerRelation.getServiceCode());
            for (FacilityServer facilityServer : facilityServiceList) {
                Integer num = Integer.valueOf(facilityServer.getNum()) - 1;
                facilityServer.setNum(num.toString());
                facilityServerService.save(facilityServer);
            }
        }
        facilityServerRelationService.deleteByFacilitieCode(facility.getCode());
        facilityService.delete(facility);
    }
    /**
     * 根据设施及服务编码管理关联关系
     *
     * @param facility1 设施
     * @param facilityServerJson 设施服务编码
     * @return
     */
    public List<FacilityServerRelation> createRelationByServerCode(Facility facility1, String facilityServerJson) {
        List<FacilityServerRelation> list = new ArrayList<>();
        if (StringUtils.isNotEmpty(facilityServerJson)) {
            //设施编码
            String[] fs = facilityServerJson.split(",");
            FacilityServerRelation facilityServerRelation;
            for (String code : fs) {
                List<FacilityServer> facilityServerList = facilityServerService.findByField("code", code);
                for (FacilityServer facilityServer : facilityServerList) {
                    facilityServerRelation = new FacilityServerRelation();
                    facilityServerRelation.setFacilitieCode(facility1.getCode());
                    facilityServerRelation.setFacilitieName(facility1.getName());
                    facilityServerRelation.setServiceCode(facilityServer.getCode());
                    facilityServerRelation.setServiceName(facilityServer.getName());
                    facilityServerRelation.setCreateUser(facility1.getCreateUser());
                    facilityServerRelation.setCreateUserName(facility1.getCreateUserName());
                    //追加设施与服务的关联关系
                    facilityServerRelationService.save(facilityServerRelation);
                    //添加设施的时候,追加改服务的使用设施数量。
                    Integer num = Integer.valueOf(facilityServer.getNum()) + 1;
                    facilityServer.setNum(num.toString());
                    facilityServerService.save(facilityServer);
                    list.add(facilityServerRelation);
                }
            }
        }
        return list;
    }
}