| | |
| | | package org.jeecg.modules.eam.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.jeecg.dingtalk.api.user.vo.User; |
| | | import com.jeecg.dingtalk.api.user.vo.UserRole; |
| | | import org.jeecg.common.api.dto.message.MessageDTO; |
| | | import org.jeecg.common.system.api.ISysBaseAPI; |
| | | import org.jeecg.common.system.query.QueryGenerator; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.jeecg.common.system.base.controller.JeecgController; |
| | | import org.jeecg.common.api.vo.Result; |
| | | import org.jeecg.modules.eam.entity.*; |
| | | import org.jeecg.modules.eam.service.*; |
| | | import org.jeecg.modules.eam.vo.ButtonVo; |
| | | import org.jeecg.modules.system.entity.*; |
| | | import org.jeecg.modules.system.service.*; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import org.springframework.web.servlet.ModelAndView; |
| | | import java.util.Arrays; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.ZoneId; |
| | | import java.util.*; |
| | | |
| | | import org.jeecg.common.util.oConvertUtils; |
| | | import org.jeecg.modules.eam.entity.StreamOperation; |
| | | import org.jeecg.modules.eam.entity.ABCAssessment; |
| | | import org.jeecg.modules.eam.entity.Stream; |
| | | import org.jeecg.modules.eam.service.IStreamService; |
| | | import org.jeecg.modules.eam.service.IStreamOperationService; |
| | | import org.jeecg.modules.eam.service.IABCAssessmentService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.jeecg.common.aspect.annotation.AutoLog; |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.springframework.web.multipart.MultipartHttpServletRequest; |
| | | import java.io.IOException; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Autowired |
| | | private IABCAssessmentService aBCAssessmentService; |
| | | |
| | | @Autowired |
| | | private ISysUserRoleService userRoleService; |
| | | |
| | | @Autowired |
| | | private ISysRoleService roleService; |
| | | |
| | | @Autowired |
| | | private ISysDictService sysDictService; |
| | | |
| | | @Autowired |
| | | private ISysDictItemService sysDictItemService; |
| | | |
| | | @Autowired |
| | | private ISysBaseAPI sysBaseAPI; |
| | | |
| | | @Autowired |
| | | private ISysUserService userService; |
| | | |
| | | @Autowired |
| | | private IEamEquipmentService equipmentService; |
| | | |
| | | @Autowired |
| | | private IdentityService sysIdentityService; |
| | | |
| | | @Autowired |
| | | private IEquipmentMaintenancePlanDetailService planDetailService; |
| | | |
| | | @Autowired |
| | | private IEquipmentMaintenancePlanService planService; |
| | | |
| | | @Autowired |
| | | private IMaintenanceStandardService maintenanceStandardService; |
| | | @Autowired |
| | | private IEquipmentUpdateInfoService updateInfoService; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /*---------------------------------主表处理-begin-------------------------------------*/ |
| | | |
| | |
| | | @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, |
| | | @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, |
| | | HttpServletRequest req) { |
| | | LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | SysUser sysUser = userService.getById(user.getId()); |
| | | if(StringUtils.isNotBlank(sysUser.getAreaId())){ |
| | | stream.setAreaId(sysUser.getAreaId()); |
| | | } |
| | | QueryWrapper<Stream> queryWrapper = QueryGenerator.initQueryWrapper(stream, req.getParameterMap()); |
| | | Page<Stream> page = new Page<Stream>(pageNo, pageSize); |
| | | IPage<Stream> pageList = streamService.page(page, queryWrapper); |
| | | IPage<Stream> pageList = streamService.myPage(page, stream); |
| | | return Result.OK(pageList); |
| | | } |
| | | |
| | |
| | | streamService.save(stream); |
| | | List<ABCAssessment> abcAssessmentList = stream.getAssessmentList(); |
| | | for(ABCAssessment abcAssessment:abcAssessmentList){ |
| | | Equipment equipment = equipmentService.getById(abcAssessment.getEquipmentId()); |
| | | boolean isD = "D".equals(abcAssessment.getFinalStandard()); |
| | | boolean a = StringUtils.isNotBlank(equipment.getStandardA())&&StringUtils.isNotBlank(abcAssessment.getStandardA())&&equipment.getStandardA().equals(abcAssessment.getStandardA()); |
| | | boolean b = StringUtils.isNotBlank(equipment.getStandardB())&&StringUtils.isNotBlank(abcAssessment.getStandardB())&&equipment.getStandardB().equals(abcAssessment.getStandardB()); |
| | | boolean c = StringUtils.isNotBlank(equipment.getStandardC())&&StringUtils.isNotBlank(abcAssessment.getStandardC())&&equipment.getStandardC().equals(abcAssessment.getStandardC()); |
| | | boolean d = StringUtils.isNotBlank(equipment.getStandardD())&&StringUtils.isNotBlank(abcAssessment.getStandardD())&&equipment.getStandardD().equals(abcAssessment.getStandardD()); |
| | | boolean e = StringUtils.isNotBlank(equipment.getStandardE())&&StringUtils.isNotBlank(abcAssessment.getStandardE())&&equipment.getStandardE().equals(abcAssessment.getStandardE()); |
| | | boolean f = StringUtils.isNotBlank(equipment.getStandardF())&&StringUtils.isNotBlank(abcAssessment.getStandardF())&&equipment.getStandardF().equals(abcAssessment.getStandardF()); |
| | | if(isD&&a&&b&&c&&d&&e&&f){ |
| | | abcAssessment.setStandardA(null); |
| | | abcAssessment.setStandardB(null); |
| | | abcAssessment.setStandardC(null); |
| | | abcAssessment.setStandardD(null); |
| | | abcAssessment.setStandardE(null); |
| | | abcAssessment.setStandardF(null); |
| | | } |
| | | abcAssessment.setStreamId(stream.getId()); |
| | | } |
| | | aBCAssessmentService.saveBatch(abcAssessmentList); |
| | |
| | | List<ABCAssessment> aBCAssessmentList = aBCAssessmentService.selectByMainId(id); |
| | | return Result.OK(aBCAssessmentList); |
| | | } |
| | | @GetMapping("getPreInfo") |
| | | public Result<Map<String,Object>> getPreInfo(){ |
| | | Map<String,Object> map = new HashMap<>(3); |
| | | LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | SysDict roleNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","abc_stream_node_role"),false); |
| | | SysDict nodeOperation = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node_operation"),false); |
| | | SysDict operation = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_operation"),false); |
| | | if(ObjectUtils.isNotNull(roleNode)){ |
| | | List<SysDictItem> roleNodeItems = sysDictItemService.selectItemsByMainId(roleNode.getId()); |
| | | List<String> roleCodes = roleNodeItems.stream().map(SysDictItem::getItemText).collect(Collectors.toList()); |
| | | if(ObjectUtils.isNotNull(nodeOperation)){ |
| | | List<SysDictItem> nodeOperationItems = sysDictItemService.selectItemsByMainId(nodeOperation.getId()); |
| | | List<SysUserRole> userRoles = userRoleService.list(new QueryWrapper<SysUserRole>().eq("user_id",user.getId())); |
| | | List<String> roleIds = userRoles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()); |
| | | List<SysRole> roles = roleService.list(new QueryWrapper<SysRole>().in("id",roleIds).in("role_code",roleCodes)); |
| | | if(roles.size()==1){ |
| | | for(SysDictItem roleNodeItem:roleNodeItems){ |
| | | if(roles.get(0).getRoleCode().equals(roleNodeItem.getItemText())){ |
| | | for(SysDictItem nodeOperationItem:nodeOperationItems){ |
| | | if(roleNodeItem.getItemValue().equals(nodeOperationItem.getItemValue())){ |
| | | if(ObjectUtils.isNotNull(operation)){ |
| | | List<String> buttonValues = Arrays.asList(nodeOperationItem.getItemText().split(",")); |
| | | List<SysDictItem> operations = sysDictItemService.selectItemsByMainId(operation.getId()); |
| | | List<ButtonVo> buttons = new ArrayList<>(); |
| | | for(String value:buttonValues){ |
| | | for(SysDictItem name:operations){ |
| | | |
| | | if(name.getItemValue().equals(value)){ |
| | | ButtonVo button = new ButtonVo(); |
| | | button.setName(name.getItemText()); |
| | | button.setValue(value); |
| | | buttons.add(button); |
| | | } |
| | | } |
| | | } |
| | | map.put("buttons",buttons); |
| | | map.put("nodeValue",nodeOperationItem.getItemValue()); |
| | | map.put("nodeSort",roleNodeItem.getSortOrder()); |
| | | map.put("msg","ok"); |
| | | return Result.OK(map); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | map.put("msg","该用户无签审角色"); |
| | | return Result.OK(map); |
| | | } |
| | | @PostMapping("next") |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | | public Result<?> handleNext(@RequestBody ButtonVo buttonVo){ |
| | | LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | List<StreamOperation> streamOperations = streamOperationService.list(new QueryWrapper<StreamOperation>().eq("stream_id",buttonVo.getStreamId()).orderByDesc("sort")); |
| | | SysDict streamNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node"),false); |
| | | if(ObjectUtils.isNotNull(streamNode)){ |
| | | List<SysDictItem> nodes = sysDictItemService.selectItemsByMainId(streamNode.getId()); |
| | | if(buttonVo.getNodeSort()+1==nodes.size()){ |
| | | List<ABCAssessment> abcAssessments = aBCAssessmentService.selectByMainId(buttonVo.getStreamId()); |
| | | EquipmentMaintenancePlan plan = new EquipmentMaintenancePlan(); |
| | | UUID uuid = UUID.randomUUID(); |
| | | long mostSignificantBits = uuid.getMostSignificantBits(); |
| | | long leastSignificantBits = uuid.getLeastSignificantBits(); |
| | | |
| | | // 将最高位和最低位取出,然后合并为一个long类型的值 |
| | | long combinedBits = mostSignificantBits ^ leastSignificantBits; |
| | | |
| | | // 将合并后的long值转换为16进制字符串 |
| | | String hexString = Long.toHexString(combinedBits); |
| | | String planNum = sysIdentityService.getNumByTypeAndLength("MaintenancePlan",4); |
| | | plan.setId(hexString); |
| | | plan.setNum(planNum); |
| | | plan.setType("3"); |
| | | plan.setStatus("created"); |
| | | plan.setCreateReason("因ABC标识从B或C变更为A而导致下次三保时间过期,就这些设备生成的临时保养计划"); |
| | | List<EquipmentMaintenancePlanDetail> details = new ArrayList<>(); |
| | | for(ABCAssessment abcAssessment:abcAssessments){ |
| | | Equipment equipment = equipmentService.getById(abcAssessment.getEquipmentId()); |
| | | String oldStandard = abcAssessment.getOldStandard(); |
| | | String newStandard = abcAssessment.getFinalStandard(); |
| | | LocalDate currentDate = LocalDate.now(); |
| | | |
| | | // 将当前日期加一天 |
| | | LocalDate nextDay = currentDate.plusDays(1); |
| | | LocalDate nextMonth = currentDate.plusMonths(1); |
| | | |
| | | // 将LocalDate转换为Date |
| | | Date currentDateAsDate = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); |
| | | Date nextDayAsDate =Date.from(nextDay.atStartOfDay(ZoneId.systemDefault()).toInstant()); |
| | | Date nextMonthAsDate = Date.from(nextMonth.atStartOfDay(ZoneId.systemDefault()).toInstant()); |
| | | Date needingDate = equipment.getNextThirdMaintenanceTime(); |
| | | Boolean a = StringUtils.isNotBlank(oldStandard)&&(oldStandard.equals("B")||oldStandard.equals("C")); |
| | | Boolean b = StringUtils.isNotBlank(newStandard)&&newStandard.equals("A");; |
| | | Boolean c = ObjectUtils.isNotNull(needingDate)&&needingDate.compareTo(currentDateAsDate)<0; |
| | | if(a&&b&&c){ |
| | | EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail = new EquipmentMaintenancePlanDetail(); |
| | | equipmentMaintenancePlanDetail.setPlanId(hexString); |
| | | equipmentMaintenancePlanDetail.setEquipmentId(equipment.getId()); |
| | | equipmentMaintenancePlanDetail.setPlanStartTime(nextDayAsDate); |
| | | equipmentMaintenancePlanDetail.setPlanEndTime(nextMonthAsDate); |
| | | MaintenanceStandard maintenanceStandard = maintenanceStandardService.getOne(new QueryWrapper<MaintenanceStandard>() |
| | | .eq("equipment_id",equipment.getId()) |
| | | .eq("maintenance_type","3") |
| | | .eq("version_status","2") |
| | | .eq("del_flag",0),false); |
| | | if(ObjectUtils.isNotNull(maintenanceStandard)){ |
| | | equipmentMaintenancePlanDetail.setStandardId(maintenanceStandard.getId()); |
| | | details.add(equipmentMaintenancePlanDetail); |
| | | } |
| | | } |
| | | equipment.setEquipmentImportanceId(abcAssessment.getFinalStandard()); |
| | | equipment.setStandardA(abcAssessment.getStandardA()); |
| | | equipment.setStandardB(abcAssessment.getStandardB()); |
| | | equipment.setStandardC(abcAssessment.getStandardC()); |
| | | equipment.setStandardD(abcAssessment.getStandardD()); |
| | | equipment.setStandardE(abcAssessment.getStandardE()); |
| | | equipment.setStandardF(abcAssessment.getStandardF()); |
| | | equipmentService.updateById(equipment); |
| | | EquipmentUpdateInfo equipmentUpdateInfo = new EquipmentUpdateInfo(); |
| | | equipmentUpdateInfo.setOldAbcTag(oldStandard); |
| | | equipmentUpdateInfo.setNewAbcTag(newStandard); |
| | | equipmentUpdateInfo.setEquipmentId(equipment.getId()); |
| | | equipmentUpdateInfo.setUpdatePerson(user.getId()); |
| | | equipmentUpdateInfo.setUpdateType("ABC"); |
| | | equipmentUpdateInfo.setUpdateDate(currentDateAsDate); |
| | | updateInfoService.save(equipmentUpdateInfo); |
| | | |
| | | } |
| | | if(details.size()>0){ |
| | | planService.save(plan); |
| | | planDetailService.saveBatch(details); |
| | | } |
| | | } |
| | | |
| | | SysDictItem nextStreamNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",streamNode.getId()).eq("sort_order",buttonVo.getNodeSort()+1),false); |
| | | return getResult(buttonVo, user, streamOperations, nextStreamNodeItem); |
| | | } |
| | | return Result.error("签审流系统出现错误,请联系管理员"); |
| | | } |
| | | |
| | | @NotNull |
| | | private Result<?> getResult(@RequestBody ButtonVo buttonVo, LoginUser user, List<StreamOperation> streamOperations, SysDictItem nextStreamNodeItem) { |
| | | SysDict roleNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","abc_stream_node_role"),false); |
| | | SysDictItem roleNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",roleNode.getId()).eq("item_value",nextStreamNodeItem.getItemValue())); |
| | | SysRole nextRole = roleService.getOne(new QueryWrapper<SysRole>().eq("role_code",roleNodeItem.getItemText())); |
| | | return getResult(buttonVo, user, streamOperations, nextStreamNodeItem,nextRole); |
| | | } |
| | | |
| | | @NotNull |
| | | private Result<?> getResult(@RequestBody ButtonVo buttonVo, LoginUser user, List<StreamOperation> streamOperations, SysDictItem nextStreamNodeItem,SysRole role) { |
| | | if(ObjectUtils.isNotNull(nextStreamNodeItem)){ |
| | | Stream stream = streamService.getById(buttonVo.getStreamId()); |
| | | stream.setStatus(nextStreamNodeItem.getItemValue()); |
| | | streamService.updateById(stream); |
| | | StreamOperation streamOperation = new StreamOperation(); |
| | | streamOperation.setOperation(buttonVo.getValue()); |
| | | streamOperation.setStreamId(stream.getId()); |
| | | streamOperation.setOperationNode(buttonVo.getNode()); |
| | | streamOperation.setUserId(user.getId()); |
| | | streamOperation.setCreateTime(new Date()); |
| | | streamOperation.setRemark(buttonVo.getRemark()); |
| | | if(streamOperations.size()==0){ |
| | | streamOperation.setSort(0); |
| | | } |
| | | else { |
| | | streamOperation.setSort(streamOperations.get(0).getSort()+1); |
| | | streamOperation.setSourceId(streamOperations.get(0).getId()); |
| | | } |
| | | streamOperationService.save(streamOperation); |
| | | List<String> userIds = userRoleService.list(new QueryWrapper<SysUserRole>().eq("role_id",role.getId())).stream().map(SysUserRole::getUserId).collect(Collectors.toList()); |
| | | for(String uId:userIds){ |
| | | SysUser toU = userService.getById(uId); |
| | | String msg = "单据号为"+stream.getNum()+"的ABC标识变更单需要确认"; |
| | | MessageDTO messageDTO = new MessageDTO(); |
| | | messageDTO.setTitle("ABC标识变更"); |
| | | messageDTO.setContent(msg); |
| | | messageDTO.setCategory("ABC变更"); |
| | | messageDTO.setFromUser(user.getUsername()); |
| | | messageDTO.setToUser(toU.getUsername()); |
| | | sysBaseAPI.sendSysAnnouncement(messageDTO); |
| | | } |
| | | return Result.OK("操作成功"); |
| | | }else { |
| | | return Result.error("签审流系统出现错误,请联系管理员"); |
| | | } |
| | | } |
| | | |
| | | @PostMapping("last") |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | | public Result<?> handleLast(@RequestBody ButtonVo buttonVo){ |
| | | LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | List<StreamOperation> streamOperations = streamOperationService.list(new QueryWrapper<StreamOperation>().eq("stream_id",buttonVo.getStreamId()).orderByDesc("sort")); |
| | | SysDict streamNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node"),false); |
| | | if(ObjectUtils.isNotNull(streamNode)){ |
| | | SysDictItem nextStreamNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",streamNode.getId()).eq("sort_order",buttonVo.getNodeSort()-1),false); |
| | | return getResult(buttonVo, user, streamOperations, nextStreamNodeItem); |
| | | } |
| | | return Result.error("签审流系统出现错误,请联系管理员"); |
| | | } |
| | | |
| | | |
| | | } |