package org.jeecg.modules.base.controller; import java.text.ParseException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.base.entity.*; import org.jeecg.modules.base.service.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.service.IQuartzJobService; import org.jeecg.common.system.base.entity.DataVersion; import org.jeecg.modules.system.service.IDataVersionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: mom_base_work_center * @Author: jeecg-boot * @Date: 2022-11-17 * @Version: V1.0 */ @Api(tags="工作中心") @RestController @RequestMapping("/base/workCenter") @Slf4j public class WorkCenterController extends JeecgController { @Autowired private IWorkCenterService workCenterService; @Autowired private IFactoryModelService factoryModelService; @Autowired private IQuartzJobService quartzJobService; @Autowired private IDataVersionService dataVersionService; @Autowired private IWorkCenterUserService workCenterUserService; @Autowired private IWorkCenterEquipmentService workCenterEquipmentService; @Autowired private IEnterpriseService enterpriseService; /** * 根据版本获取版本号 * * */ @GetMapping("/getVersionStatusByVersion") public Result getVersionStatusByVersion(@RequestParam(value = "version",required = false) Integer version){ return Result.OK(workCenterService.getVersionStatusByVersion(version)); } /** * 获取初始版本号 * * @return */ @GetMapping("getInitVersion") public Result getInitVersion(){ return Result.OK(workCenterService.getInitVersion()); } /** * 获取根节点 * * @param eid * @param fid * @return */ @GetMapping("/getTop/{eid}/{fid}") public Result getTop(@PathVariable("eid") String eid,@PathVariable("fid") String fid){ return Result.OK(workCenterService.getTop(eid,fid)); } /** * * 查当前生效企业下有无部门历史版本 * */ @Transactional @GetMapping(value = "/getUpdateVersionPermission") public Result getUpdatePermission(@RequestParam("version") Integer version){ List usableIds = factoryModelService .getUsableList(enterpriseService.getUsableIdList()) .stream() .map(FactoryModel::getId) .collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(usableIds)){ return Result.OK(workCenterService.list(new QueryWrapper() .in("parent_factory_model_id",usableIds) .eq("version",version) .eq("del_flag",0))); } return Result.ok(); } /** * * 查当前生效企业下的生效工厂下有无工作中心历史版本 * */ @Transactional @GetMapping(value = "/getNewVersionPermission") public Result getNewVersionPermission(){ List usableFactoryList = factoryModelService .list(new QueryWrapper() .eq("del_flag",0) .in("enterprise_id",enterpriseService.getUsableIdList())); if(CollectionUtils.isEmpty(usableFactoryList)){ return Result.OK(false); }else { List list = workCenterService .list(new QueryWrapper() .in("parent_factory_model_id",usableFactoryList.stream().map(FactoryModel::getId).collect(Collectors.toList())) .eq("del_flag",0)); if(CollectionUtils.isNotEmpty(list)){ return Result.OK(false); } else { return Result.OK(true); } } } /** * 升版 * 需要一次完成 * @param map * @param * @return */ @PostMapping("/updateVersion") @Transactional public Result updateVersion(@RequestBody Map map){ Integer version = Integer.parseInt((String)map.get("version")); //获取升版数据 List list = workCenterService.getUpdateVersionlist(version); //获取升版数据的版本信息 QueryWrapper queryWrapper = new QueryWrapper() .in("business_id", list.stream().map(WorkCenter::getId).collect(Collectors.toList())) .eq("del_flag",0); List dataVersionList = dataVersionService.list(queryWrapper); Set set = workCenterService.getVersionList(); Optional maxVersion = set.stream().findFirst(); list.stream().forEach(workCenter -> { workCenter.setId(""); workCenter.setVersion(maxVersion.get()+1); }); workCenterService.saveBatch(list); List newList = workCenterService .list(new QueryWrapper() .eq("version",maxVersion.get()+1)); List newDataVersionList = new ArrayList<>(); for(int i=0;i dataVersionBusinessIdList = newDataVersionList.stream().map(DataVersion::getBusinessId).collect(Collectors.toList()); QueryWrapper queryWrapper1 = new QueryWrapper().in("business_id",dataVersionBusinessIdList).eq("del_flag",0); List selectDataVersionList = dataVersionService.list(queryWrapper1); for(int i=0;i updateVersionForChange(){ Set set = workCenterService.getVersionList(); return Result.OK(set.stream().findFirst().get()+1); } /** * 生效 * 需要一次性完成 * @param * @param map * @return */ @PostMapping("/updateVersionStatusToUsable") @Transactional public Result updateVersionStatusToUsable(@RequestBody Map map){ Date date = new Date(System.currentTimeMillis()); QuartzJob quartzJob = quartzJobService.getOne(new QueryWrapper() .eq("job_class_name","org.jeecg.modules.quartz.job.WorkCenterSetUsableJob"),true); if(ObjectUtils.isNotNull(quartzJob)){ quartzJobService.deleteAndStopJob(quartzJob); } String factoryModelId = String.valueOf(map.get("factoryModelId")); Integer version = Integer.parseInt((String)map.get("version")); //获取上次生效版本并将其是否上次生效位置置为否 List lastUsableList = workCenterService.getLastUsableVersion(); if(CollectionUtils.isNotEmpty(lastUsableList)){ QueryWrapper queryWrapper2 = new QueryWrapper() .in("business_id",lastUsableList.stream() .map(WorkCenter::getId) .collect(Collectors.toList())); List lastUsableVersionList = dataVersionService.list(queryWrapper2); lastUsableVersionList.stream().forEach(dataVersion -> { dataVersion .setIsLastUsable("0"); }); dataVersionService.updateBatchById(lastUsableVersionList); } //获取生效版本及版本信息并将其置为失效 List usableList = workCenterService.getUsableList(); if(CollectionUtils.isNotEmpty(usableList)){ QueryWrapper queryWrapper = new QueryWrapper() .in("business_id",usableList.stream() .map(WorkCenter::getId) .collect(Collectors.toList())); List usableDataVersionList = dataVersionService.list(queryWrapper); usableDataVersionList.stream().forEach(dataVersion -> { dataVersion .setVersionStatus("3") .setIsLastUsable("1") .setExpiredTime(date); }); dataVersionService.updateBatchById(usableDataVersionList); } //获取待生效版本及版本信息并将其置为生效 QueryWrapper queryWrapper1 = new QueryWrapper() .in("business_id",workCenterService .getUpdateVersionlist(version) .stream().map(WorkCenter::getId) .collect(Collectors.toList())); List dataVersionList = dataVersionService.list(queryWrapper1); dataVersionList.stream().forEach(dataVersion -> { dataVersion.setVersionStatus("2") .setEffectiveType("2") .setEffectiveTime(date) .setIsLastUsable("0"); }); //存入数据库 dataVersionService.updateBatchById(dataVersionList); return Result.OK("生效成功"); } /** * 定时生效 * 需要一次性完成 * @param quartzJob * @param * @return */ @PostMapping("/updateVersionStatusToUsableBySetTime") @Transactional public Result updateVersionStatusToUsableBySetTime(@RequestBody QuartzJob quartzJob) throws ParseException { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("ss mm HH dd MM ? yyyy"); String jobClassName = quartzJob.getJobClassName(); String time = quartzJob.getCronExpression(); System.out.println(time); LocalDateTime localDateTime = LocalDateTime.parse(time,dateTimeFormatter); String cronStr=dateTimeFormatter1.format(localDateTime); quartzJob.setCronExpression(cronStr); QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("JOB_CLASS_NAME",jobClassName); List quartzJobs = quartzJobService.list(queryWrapper); if(CollectionUtils.isEmpty(quartzJobs)){ quartzJobService.saveAndScheduleJob(quartzJob); quartzJobs = quartzJobService.list(queryWrapper); quartzJob.setId(quartzJobs.get(0).getId()); quartzJobService.resumeJob(quartzJob); return Result.OK(quartzJob); }else{ quartzJob.setId(quartzJobs.get(0).getId()); quartzJobService.resumeJob(quartzJob); return Result.OK(quartzJob); } } /** * 分页列表查询 * * @param workCenterDetail * @param pageNo * @param pageSize * @return */ @ApiOperation(value="mom_base_work_center-分页列表查询", notes="mom_base_work_center-分页列表查询") @GetMapping(value = "/list") public Result> queryPageList(WorkCenterDetail workCenterDetail, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam(name="parentFactoryModelId",required = true,defaultValue = "") String parentFactoryModelId, @RequestParam(name="factoryModelVersion",required = true,defaultValue = "") Integer factoryModelVersion, @RequestParam(name="version",required = true,defaultValue = "") Integer version ) { Page page = new Page(pageNo, pageSize); IPage pageList = workCenterService.getAllWorkCenterByPMFId(page,parentFactoryModelId,factoryModelVersion,version); return Result.OK(pageList); } /** * 获取版本号 * * * @return */ @GetMapping("/versionList") public Result getVersionList(){ return Result.OK( workCenterService.getVersionList()); } /** * 获取工厂建模生效失效列表 * @return */ @GetMapping("/getFactoryVersionList") public Result getFactoryVersionList(){ return Result.OK(workCenterService.getFactoryVersionList()); } /** * 添加 * * @param map * @return */ @AutoLog(value = "mom_base_work_center-添加") @ApiOperation(value="mom_base_work_center-添加", notes="mom_base_work_center-添加") @PostMapping(value = "/add") @Transactional public Result add(@RequestBody Map map) { WorkCenter workCenter = new WorkCenter(); //(设置保存的工作中心数据) workCenter.setCode(String.valueOf(map.get("code"))) .setName(String.valueOf(map.get("name"))) .setServiceCategory(String.valueOf(map.get("serviceCategory"))) .setWorkCenterCategory(String.valueOf(map.get("workCenterCategory"))) .setEquipmentTeamId(String.valueOf(map.get("equipmentTeamId"))) .setFeedingArea(String.valueOf(map.get("feedingArea"))) .setBaitingArea(String.valueOf(map.get("baitingArea"))) .setRemark(String.valueOf(map.get("remark"))) .setVersion(Integer.parseInt(String.valueOf(map.get("version")))) .setFactoryModelId(String.valueOf(map.get("factoryModelId"))) .setParentFactoryModelId(String.valueOf(map.get("parentFactoryModelId"))) .setDelFlag(0); workCenterService.save(workCenter); QueryWrapper queryWrapper = new QueryWrapper() .eq("code",workCenter.getCode()).eq("version",workCenter.getVersion()).eq("del_flag",0); WorkCenter selectWorkCenter = workCenterService.getOne(queryWrapper,true); DataVersion dataVersion = new DataVersion(); dataVersion.setBusinessId(selectWorkCenter.getId()) .setBusinessType("工作中心") .setVersion(selectWorkCenter.getVersion()) .setVersionStatus(String.valueOf(map.get("versionStatus"))) .setDelFlag(0) .setEffectiveType("0") .setIsLastUsable("0"); dataVersionService.save(dataVersion); QueryWrapper queryWrapper1 = new QueryWrapper() .eq("business_id",selectWorkCenter.getId()).eq("del_flag",0); DataVersion selectDataVersion = dataVersionService.getOne(queryWrapper1,true); selectWorkCenter.setDataVersionId(selectDataVersion.getId()); workCenterService.saveOrUpdate(selectWorkCenter); return Result.OK("添加成功!"); } /** * 编辑 * * @param workCenter * @return */ @AutoLog(value = "mom_base_work_center-编辑") @ApiOperation(value="mom_base_work_center-编辑", notes="mom_base_work_center-编辑") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result edit(@RequestBody WorkCenter workCenter) { workCenterService.updateById(workCenter); return Result.OK("编辑成功!"); } /** * 通过id删除 * * @param id * @return */ @AutoLog(value = "mom_base_work_center-通过id删除") @ApiOperation(value="mom_base_work_center-通过id删除", notes="mom_base_work_center-通过id删除") @DeleteMapping(value = "/delete") public Result delete(@RequestParam(name="id",required=true) String id) { dataVersionService.update(new UpdateWrapper() .set("del_flag",1) .eq("business_id",id)); workCenterService.update(new UpdateWrapper(). set("del_flag",1) .eq("id",id)); return Result.OK("删除成功!"); } /** * 批量删除 * * @param ids * @return */ @AutoLog(value = "mom_base_work_center-批量删除") @ApiOperation(value="mom_base_work_center-批量删除", notes="mom_base_work_center-批量删除") @DeleteMapping(value = "/deleteBatch") public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { dataVersionService.update(new UpdateWrapper() .set("del_flag",1) .in("business_id",Arrays.asList(ids.split(",")))); workCenterService. update(new UpdateWrapper() .set("del_flag",1) .in("id",Arrays.asList(ids.split(",")))); return Result.OK("删除成功"); } /** * 通过id查询 * * @param id * @return */ //@AutoLog(value = "mom_base_work_center-通过id查询") @ApiOperation(value="mom_base_work_center-通过id查询", notes="mom_base_work_center-通过id查询") @GetMapping(value = "/queryById") public Result queryById(@RequestParam(name="id",required=true) String id) { WorkCenter workCenter = workCenterService.getById(id); if(workCenter==null) { return Result.error("未找到对应数据"); } return Result.OK(workCenter); } /** * 导出excel * * @param request * @param workCenter */ //@RequiresPermissions("org.jeecg.modules.demo:mom_base_work_center:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, WorkCenter workCenter) { return super.exportXls(request, workCenter, WorkCenter.class, "mom_base_work_center"); } /** * 通过excel导入数据 * * @param request * @param response * @return */ //@RequiresPermissions("mom_base_work_center:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, WorkCenter.class); } /** * 获取该工作中心所在企业的设备组列表 * * @param enterpriseId * @return */ @GetMapping("/equipmentCategorylist") public Result getEquipmentCategoryListByEnterpriseId(@RequestParam(name = "enterpriseId",required = false) String enterpriseId){ return Result.OK(workCenterService.getEquipmentCategoryListByEnterpriseId(enterpriseId)); } /** * 获取当前生效版本和上一次生效版本的版本号 * * @param * @return */ @GetMapping("/getNowAndLastUsableVersion") public Result getNowAndLastUsableVersion(){ return Result.OK(workCenterService.getNowAndLastUsableVersion()); } /** * 校验名称是否重复 * * @param * @return */ @GetMapping("/check") public Result check( @RequestParam(name="parentFactoryModelId",required = false,defaultValue = "") String parentFactoryModelId, @RequestParam(name="version",required = false) Integer version, @RequestParam(name="name") String name ){ QueryWrapper queryWrapper = new QueryWrapper() .eq("parent_factory_model_id",parentFactoryModelId) .eq("name",name) .eq("version",version) .eq("del_flag",0); return Result.OK(workCenterService.list(queryWrapper)); } /** * 删除消息提醒 * * @param delIndexList * @return */ @PostMapping("/checkDel") @Transactional public Result checkDel(@RequestBody List delIndexList){ List workCenterEquipments = workCenterEquipmentService .list(new QueryWrapper() .in("work_center_id",delIndexList) .eq("del_flag",0) ); List workCenterUsers = workCenterUserService.list(new QueryWrapper() .in("work_center_id",delIndexList) .eq("del_flag",0) ); List list1 = workCenterEquipments.stream().map(WorkCenterEquipment::getWorkCenterId).collect(Collectors.toList()); List list2 = workCenterUsers.stream().map(WorkCenterUser::getWorkCenterId).collect(Collectors.toList()); Set set = new TreeSet<>(); set.addAll(list1); set.addAll(list2); if(CollectionUtils.isNotEmpty(set)){ List workCenterList = workCenterService.listByIds(set); final String[] listMessage = {""}; if(CollectionUtils.isNotEmpty(workCenterList)){ workCenterList.stream().forEach(workCenter -> { listMessage[0] = listMessage[0] +workCenter.getCode()+","; }); String trueMessage = "编号为"+listMessage[0] .substring(0, listMessage[0].length()-1)+"的数据被引用,确认删除吗?"; return Result.OK(trueMessage); } } return Result.OK("选中数据没有被引用,可以安全删除,确认删除吗?"); } }