package org.jeecg.modules.eam.controller; import java.util.*; import java.util.stream.Collectors; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.model.InspectionCycleVo; import org.jeecg.modules.eam.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.modules.system.entity.SysUpload; //import org.jeecg.modules.system.entity.SysUploadRela; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: mom_eam_specialty_inspection_order * @Author: jeecg-boot * @Date: 2023-04-24 * @Version: V1.0 */ @Api(tags="mom_eam_specialty_inspection_order") @RestController @RequestMapping("/eam/specialtyInspectionOrder") @Slf4j public class SpecialtyInspectionOrderController extends JeecgController { @Autowired private ISpecialtyInspectionOrderService specialtyInspectionOrderService; @Autowired private ISpecialtyInspectionOrderDetailService specialtyInspectionOrderDetailService; @Autowired private IEquipmentReportRepairService equipmentReportRepairService; /** * 分页列表查询 * * @param specialtyInspectionOrder * @param pageNo * @param pageSize * @param req * @return */ //@AutoLog(value = "mom_eam_specialty_inspection_order-分页列表查询") @ApiOperation(value="mom_eam_specialty_inspection_order-分页列表查询", notes="mom_eam_specialty_inspection_order-分页列表查询") @GetMapping(value = "/list") public Result> queryPageList(SpecialtyInspectionOrder specialtyInspectionOrder, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(specialtyInspectionOrder, req.getParameterMap()); Page page = new Page(pageNo, pageSize); IPage pageList = specialtyInspectionOrderService.page(page, queryWrapper); return Result.OK(pageList); } /** *获取专业点检工单 * 2023-4-25 qsw */ @GetMapping(value = "/getInspectionOrderList") public Result getInspectionOrderList(@RequestParam("pageNo") Integer pageNo, @RequestParam("pageSize") Integer pageSize, @RequestParam Map params) { IPage> specialtyInspectionOrderList = specialtyInspectionOrderService.getSpecialtyInspectionOrderList(pageNo, pageSize, params); for (Map record : specialtyInspectionOrderList.getRecords()) { String id = (String)record.get("id"); String status = (String)record.get("status"); // if("5".equals(status)){ List failCount = specialtyInspectionOrderDetailService.lambdaQuery() .eq(SpecialtyInspectionOrderDetail::getSpecialtyInspectionOrderId, id) .eq(SpecialtyInspectionOrderDetail::getJudgmentResult,"fail") .eq(SpecialtyInspectionOrderDetail::getDelFlag, 0).list(); List passCount = specialtyInspectionOrderDetailService.lambdaQuery() .eq(SpecialtyInspectionOrderDetail::getSpecialtyInspectionOrderId, id) .eq(SpecialtyInspectionOrderDetail::getJudgmentResult,"pass") .eq(SpecialtyInspectionOrderDetail::getDelFlag, 0).list(); record.put("result","正常:"+passCount.size()+","+"异常:"+failCount.size()); // } if("2".equals(status)){ record.put("distable",false); }else{ record.put("distable",true); } } return Result.ok(specialtyInspectionOrderList); } /** * 添加 * * @param specialtyInspectionOrder * @return */ @AutoLog(value = "mom_eam_specialty_inspection_order-添加") @ApiOperation(value="mom_eam_specialty_inspection_order-添加", notes="mom_eam_specialty_inspection_order-添加") //@RequiresPermissions("org.jeecg.modules.demo:mom_eam_specialty_inspection_order:add") @PostMapping(value = "/add") public Result add(@RequestBody SpecialtyInspectionOrder specialtyInspectionOrder) { boolean b = specialtyInspectionOrderService.add(specialtyInspectionOrder); if (b){ return Result.OK("添加成功!"); }else{ return Result.error("添加失败!"); } } /** * 编辑 * * @param specialtyInspectionOrder * @return */ @AutoLog(value = "mom_eam_specialty_inspection_order-编辑") @ApiOperation(value="mom_eam_specialty_inspection_order-编辑", notes="mom_eam_specialty_inspection_order-编辑") //@RequiresPermissions("org.jeecg.modules.demo:mom_eam_specialty_inspection_order:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result edit(@RequestBody SpecialtyInspectionOrder specialtyInspectionOrder) { boolean b = specialtyInspectionOrderService.edit(specialtyInspectionOrder); if (b){ return Result.OK("编辑成功!"); }else{ return Result.error("编辑失败!"); } } /** *改派 专业点检工单 * 2023-8-7 */ @RequestMapping(value = "/assign", method = {RequestMethod.PUT,RequestMethod.POST}) public Result assign(@RequestBody SpecialtyInspectionOrder specialtyInspectionOrder) { boolean b = specialtyInspectionOrderService.assign(specialtyInspectionOrder); if (b){ return Result.OK("改派成功!"); }else{ return Result.error("改派失败!"); } } @RequestMapping(value = "/editStatus", method = {RequestMethod.PUT,RequestMethod.POST}) public Result editStatus(@RequestBody SpecialtyInspectionOrder specialtyInspectionOrder) { if("4".equals(specialtyInspectionOrder.getStatus())){ specialtyInspectionOrder.setActualStartTime(new Date()); } boolean b = specialtyInspectionOrderService.updateById(specialtyInspectionOrder); if (b){ return Result.OK("编辑成功!"); }else{ return Result.error("编辑失败!"); } } @RequestMapping(value = "/orderGet", method = {RequestMethod.PUT,RequestMethod.POST}) public Result orderGet(@RequestBody SpecialtyInspectionOrder specialtyInspectionOrder) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = sysUser.getId(); // specialtyInspectionOrder.setRecipientUserId(userId); specialtyInspectionOrder.setInspectionUserId(userId); specialtyInspectionOrder.setStatus("3"); boolean b = specialtyInspectionOrderService.updateById(specialtyInspectionOrder); if (b){ return Result.OK("领取成功!"); }else{ return Result.error("领取失败!"); } } @RequestMapping(value = "/revocation", method = {RequestMethod.PUT,RequestMethod.POST}) public Result revocation(@RequestBody SpecialtyInspectionOrder specialtyInspectionOrder) { String id = specialtyInspectionOrder.getId(); SpecialtyInspectionOrder inspectionOrder = specialtyInspectionOrderService.getById(id); String status = inspectionOrder.getStatus(); if("5".equals(status)){ List specialtyInspectionOrderDetails = specialtyInspectionOrderDetailService.lambdaQuery() .eq(SpecialtyInspectionOrderDetail::getSpecialtyInspectionOrderId, id) .eq(SpecialtyInspectionOrderDetail::getDelFlag, 0).list(); ArrayList strings = new ArrayList<>(); for (SpecialtyInspectionOrderDetail specialtyInspectionOrderDetail : specialtyInspectionOrderDetails) { strings.add(specialtyInspectionOrderDetail.getId()); } List equipmentReportRepairs = equipmentReportRepairService.lambdaQuery() .in(EquipmentReportRepair::getSourceId, strings) .eq(EquipmentReportRepair::getDelFlag, 0).list(); if(equipmentReportRepairs.size()>0){ String repairNums = ""; for (EquipmentReportRepair equipmentReportRepair : equipmentReportRepairs) { repairNums +=equipmentReportRepair.getNum()+","; } return Result.error("已生成报修单"+repairNums+"不支持撤销,请先手动删除再撤销!"); }else{ specialtyInspectionOrder.setStatus("4"); specialtyInspectionOrder.setActualEndTime(null); boolean b = specialtyInspectionOrderService.updateById(specialtyInspectionOrder); if (b){ return Result.OK("撤销成功!"); }else{ return Result.error("撤销失败!"); } } }else{ return Result.error("仅限已完工状态撤销完成操作!"); } } @RequestMapping(value = "/report", method = {RequestMethod.PUT,RequestMethod.POST}) public Result report(@RequestBody SpecialtyInspectionOrder specialtyInspectionOrder) { String id = specialtyInspectionOrder.getId(); List inspectionOrderDetails = specialtyInspectionOrderDetailService.lambdaQuery() .eq(SpecialtyInspectionOrderDetail::getSpecialtyInspectionOrderId, id) .eq(SpecialtyInspectionOrderDetail::getDelFlag,'0') .and(r->r.eq(SpecialtyInspectionOrderDetail::getInspectionProjectResult, "").or().isNull(SpecialtyInspectionOrderDetail::getInspectionProjectResult)) .list(); if(inspectionOrderDetails.size() == 0){ //专业点检工单报工时生成生成故障报修单 List orderDetails = specialtyInspectionOrderDetailService.lambdaQuery() .eq(SpecialtyInspectionOrderDetail::getSpecialtyInspectionOrderId, id) .eq(SpecialtyInspectionOrderDetail::getDelFlag,'0').list(); for (SpecialtyInspectionOrderDetail orderDetail : orderDetails) { String treatmentMeasure = orderDetail.getTreatmentMeasure();//1:自行处置 2: 故障报修 if ("2".equals(treatmentMeasure)) { this.createEquipmentReportRepair(orderDetail); } } //更新最后保养时间 specialtyInspectionOrder.setActualEndTime(new Date()); boolean b = specialtyInspectionOrderService.updateById(specialtyInspectionOrder); if(!b){ return Result.error("报工失败!"); }else{ return Result.ok("报工成功!"); } }else{ return Result.error("部分点检项未完成,不允许报工!"); } } void createEquipmentReportRepair(SpecialtyInspectionOrderDetail specialtyInspectionOrderDetail){ EquipmentReportRepair equipmentReportRepair = new EquipmentReportRepair(); equipmentReportRepair.setNum("ZYNum001"); equipmentReportRepair.setEquipmentId(specialtyInspectionOrderDetail.getEquipmentId()); equipmentReportRepair.setFaultDescription(specialtyInspectionOrderDetail.getAbnormalDesc()); equipmentReportRepair.setFaultTime(new Date(System.currentTimeMillis())); equipmentReportRepair.setIsStop("1"); equipmentReportRepair.setStatus("1"); equipmentReportRepair.setSource("2"); equipmentReportRepair.setSourceId(specialtyInspectionOrderDetail.getId()); equipmentReportRepairService.save(equipmentReportRepair); } @Transactional(rollbackFor = { Exception.class }) @RequestMapping(value = "/orderAssign", method = {RequestMethod.PUT,RequestMethod.POST}) public Result orderAssign(@RequestBody SpecialtyInspectionOrder specialtyInspectionOrder) { List specialtyInspectionOrderList = specialtyInspectionOrder.getSpecialtyInspectionOrderList(); for (SpecialtyInspectionOrder inspectionOrder : specialtyInspectionOrderList) { inspectionOrder.setStatus("3"); boolean b = specialtyInspectionOrderService.updateById(inspectionOrder); if(!b){ return Result.error("工单指派失败!"); } } return Result.OK("订单指派成功!"); } /** * 通过id删除 * * @param id * @return */ @AutoLog(value = "mom_eam_specialty_inspection_order-通过id删除") @ApiOperation(value="mom_eam_specialty_inspection_order-通过id删除", notes="mom_eam_specialty_inspection_order-通过id删除") //@RequiresPermissions("org.jeecg.modules.demo:mom_eam_specialty_inspection_order:delete") @DeleteMapping(value = "/delete") public Result delete(@RequestParam(name="id",required=true) String id) { specialtyInspectionOrderService.removeById(id); return Result.OK("删除成功!"); } /** * 批量删除 * * @param ids * @return */ @AutoLog(value = "mom_eam_specialty_inspection_order-批量删除") @ApiOperation(value="mom_eam_specialty_inspection_order-批量删除", notes="mom_eam_specialty_inspection_order-批量删除") //@RequiresPermissions("org.jeecg.modules.demo:mom_eam_specialty_inspection_order:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.specialtyInspectionOrderService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("批量删除成功!"); } /** * 通过id查询 * * @param id * @return */ //@AutoLog(value = "mom_eam_specialty_inspection_order-通过id查询") @ApiOperation(value="mom_eam_specialty_inspection_order-通过id查询", notes="mom_eam_specialty_inspection_order-通过id查询") @GetMapping(value = "/queryById") public Result queryById(@RequestParam(name="id",required=true) String id) { SpecialtyInspectionOrder specialtyInspectionOrder = specialtyInspectionOrderService.getById(id); if(specialtyInspectionOrder==null) { return Result.error("未找到对应数据"); } return Result.OK(specialtyInspectionOrder); } /** * 导出excel * * @param request * @param specialtyInspectionOrder */ //@RequiresPermissions("org.jeecg.modules.demo:mom_eam_specialty_inspection_order:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, SpecialtyInspectionOrder specialtyInspectionOrder) { return super.exportXls(request, specialtyInspectionOrder, SpecialtyInspectionOrder.class, "mom_eam_specialty_inspection_order"); } /** * 通过excel导入数据 * * @param request * @param response * @return */ //@RequiresPermissions("mom_eam_specialty_inspection_order:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, SpecialtyInspectionOrder.class); } }