package com.chinaztt.mes.production.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.basic.entity.Template; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.mes.plan.entity.CustomerOrder; import com.chinaztt.mes.plan.service.CustomerOrderService; import com.chinaztt.mes.production.dto.*; import com.chinaztt.mes.production.entity.OperationTask; import com.chinaztt.mes.production.entity.OperationTaskAttachment; import com.chinaztt.mes.production.entity.OperationTaskMaterial; import com.chinaztt.mes.production.service.OperationTaskService; import com.chinaztt.ztt.common.core.util.R; import com.chinaztt.ztt.common.log.annotation.SysLog; import com.chinaztt.ztt.common.security.annotation.Inner; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * 工序任务 * * @author zhangxy * @date 2020-09-18 09:26:35 */ @RestController @AllArgsConstructor @RequestMapping("/operationTask") @Api(value = "operationTask", tags = "工序任务管理") public class OperationTaskController { private final OperationTaskService operationTaskService; private final CustomerOrderService customerOrderService; /** * 查询工单任务 * * @param operationTaskDTO 工序任务 * @return */ @ApiOperation(value = "查询工单任务", notes = "查询工单任务") @GetMapping("/getOperationTask") @PreAuthorize("@pms.hasPermission('operationTask_operationtask_view','product_workbench')") public R getOperationTask(OperationTaskDTO operationTaskDTO) { return R.ok(operationTaskService.getOperationTask(operationTaskDTO.getWorkstationId(), operationTaskDTO.getProductSn(), operationTaskDTO.getSalesOrder(), operationTaskDTO.getProductName(), operationTaskDTO.getOutBatchNo(), operationTaskDTO.getMpsNo())); } /** * 分页查询 * * @param page 分页对象 * @param operationTask 工序任务 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('operationTask_operationtask_view','product_workbench')") public R getOperationTaskPage(Page page, OperationTaskDTO operationTask) { return R.ok(operationTaskService.getPage(page, QueryWrapperUtil.gen(operationTask))); } /** * 通过id查询工单是否完成 * * @param id id * @return R */ @ApiOperation(value = "通过id查询工单是否完成", notes = "通过id查询工单是否完成") @GetMapping("/getOperationTaskById/{id}") @Inner(value = false) public R getOperationTaskById(@PathVariable("id") Long id) { return R.ok(operationTaskService.getOperationTaskById(id)); } /** * 通过id查询工序任务 * * @param id id * @return R */ @ApiOperation(value = "通过id查询", notes = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('operationTask_operationtask_view','product_workbench')") public R getById(@PathVariable("id") Long id) { return R.ok(operationTaskService.getOperation(id)); } /** * 通过id查询工单供应表 * * @param id id * @return R */ @ApiOperation(value = "通过id查询工单供应表", notes = "通过id查询工单供应表") @GetMapping("/operationSupply/{id}") public R getOperationSupplyById(@PathVariable("id") Long id) { return R.ok(operationTaskService.getOperationSupplyById(id)); } /** * 通过工序任务ID查询工单所需物料 * * @param id id * @return R */ @ApiOperation(value = "通过工序任务ID查询工单所需物料", notes = "通过工序任务ID查询工单所需物料") @GetMapping("/operationMaterial/{id}") public R getOperationMaterialById(@PathVariable("id") Long id) { return R.ok(operationTaskService.getOperationMaterialById(id)); } /** * 通过id查询工单所需物料 * * @param id id * @return R */ @ApiOperation(value = "通过id查询工单所需物料", notes = "通过id查询工单所需物料") @GetMapping("/operationTaskMaterial/{id}") public R getOperationMaterialByMaterialId(@PathVariable("id") Long id) { return R.ok(operationTaskService.getOperationMaterialByMaterialId(id)); } /** * 新增工单所需物料 * * @param operationTaskMaterial * @return R */ @ApiOperation(value = "新增工单所需物料", notes = "新增工单所需物料") @PostMapping("/operationTaskMaterial/add") public R addOperationMaterial(@RequestBody OperationTaskMaterial operationTaskMaterial) { return operationTaskService.addOperationMaterial(operationTaskMaterial); } /** * 修改工单所需物料 * * @param operationTaskMaterial * @return R */ @ApiOperation(value = "修改工单所需物料", notes = "修改工单所需物料") @PutMapping("/operationTaskMaterial/update") public R updateOperationMaterial(@RequestBody OperationTaskMaterial operationTaskMaterial) { return operationTaskService.updateOperationMaterial(operationTaskMaterial); } /** * 删除工单所需物料 * * @param id * @return R */ @ApiOperation(value = "删除工单所需物料", notes = "删除工单所需物料") @DeleteMapping("/operationTaskMaterial/{id}") public R deleteOperationMaterial(@PathVariable Long id) { return operationTaskService.deleteOperationMaterial(id); } /** * 新增工序任务 * * @param operationTaskDTO 工序任务 * @return R */ @ApiOperation(value = "新增工序任务", notes = "新增工序任务") @SysLog("新增工序任务") @PostMapping @PreAuthorize("@pms.hasPermission('operationTask_operationtask_add')") public R save(@RequestBody OperationTaskDTO operationTaskDTO) { return R.ok(operationTaskService.fullSave(operationTaskDTO)); } /** * 批量新增工序任务 * * @param operationTaskDTOList 工序任务 * @return R */ @ApiOperation(value = "新增工序任务", notes = "新增工序任务") @SysLog("新增工序任务") @PostMapping("/batch") @PreAuthorize("@pms.hasPermission('operationTask_operationtask_add')") public R save(@RequestBody List operationTaskDTOList) { return R.ok(operationTaskService.batchFullSave(operationTaskDTOList)); } /** * 修改工序任务 * * @param operationTaskDTO 工序任务 * @return R */ @ApiOperation(value = "修改工序任务", notes = "修改工序任务") @SysLog("修改工序任务") @PutMapping @PreAuthorize("@pms.hasPermission('operationTask_operationtask_edit')") public R updateById(@RequestBody OperationTaskDTO operationTaskDTO) { return R.ok(operationTaskService.fullUpdate(operationTaskDTO)); } /** * 通过id删除工序任务 * * @param id id * @return R */ @ApiOperation(value = "通过id删除工序任务", notes = "通过id删除工序任务") @SysLog("通过id删除工序任务") @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('operationTask_operationtask_del')") public R removeById(@PathVariable Long id) { return R.ok(operationTaskService.fullDelete(id)); } /** * 改变工单状态 * * @param ids * @return */ @ApiOperation(value = "改变工单状态", notes = "改变工单状态") @PostMapping("/changeState/{event}") public R changeState(@RequestBody List ids, @PathVariable String event) { return R.ok(operationTaskService.changeState(ids, event)); } /** * 改变工单状态 * * @param ids * @return */ @ApiOperation(value = "改变工单状态", notes = "改变工单状态") @PostMapping("/product/changeState/{event}") public R changeOperationTaskState(@RequestBody List ids, @PathVariable String event) { return R.ok(operationTaskService.changeState(ids, event)); } /** * 改变后台工单状态 * * @param id * @return */ @ApiOperation(value = "改变后台工单状态", notes = "改变后台工单状态") @GetMapping("/product/changeBackState/{event}") public R changeBackOperationTaskState(@RequestParam(value = "id") Long id, @PathVariable String event) { operationTaskService.checkStatus(id, event); return R.ok(operationTaskService.changeState(id, event)); } /** * 通过id查询工单所需物料 * * @param operationTaskMaterialDTO 工单所需物料 * @return R */ @ApiOperation(value = "通过id查询工单所需物料", notes = "通过id查询工单所需物料") @GetMapping("/getMaterial") public R getMaterial(OperationTaskMaterialDTO operationTaskMaterialDTO) { return R.ok(operationTaskService.getMaterial(QueryWrapperUtil.gen(operationTaskMaterialDTO))); } /** * 通过id查询工单所关联的模板和参数 * * @param id 工单所需物料 * @return R */ @ApiOperation(value = "通过id查询工单所关联的模板和参数", notes = "通过id查询工单所关联的模板和参数") @GetMapping("/getTemplate/{id}") public R getTemplate(@PathVariable("id") Long id) { return R.ok(operationTaskService.getTemplate(id)); } /** * 通过工序id、模板类型、所在页面查询工单所关联的模板(类型为生产记录可以修改) * * @param id 工单所需物料 * @return R */ @ApiOperation(value = "通过工序id、模板类型、所在页面查询工单所关联的模板(类型为生产记录可以修改)", notes = "通过工序id、模板类型、所在页面查询工单所关联的模板(类型为生产记录可以修改)") @GetMapping("/getTemplateUpdate/{id}") public R getTemplateUpdate(Page page, @PathVariable("id") Long id, Template template) { return R.ok(operationTaskService.getTemplateUpdate(page, id, template)); } /** * 通过模板类型查询模板 * * @return R */ @ApiOperation(value = "通过模板类型查询模板", notes = "通过模板类型查询模板") @GetMapping("/getTemplateByType") public R getTemplateByType(Page page, Template template) { return R.ok(operationTaskService.getTemplateByType(page, QueryWrapperUtil.gen(template))); } /** * 根据工单、当班记录、参数集模板,查询点巡检或原始记录的主表 * * @param operationTaskRecordDTO 工单所需物料 * @return R */ @ApiOperation(value = "根据工单、当班记录、参数集模板,查询点巡检或原始记录的主表", notes = "根据工单、当班记录、参数集模板,查询点巡检或原始记录的主表") @GetMapping("/getTemplateRecord") public R getTemplateRecord(OperationTaskRecordDTO operationTaskRecordDTO) { return R.ok(operationTaskService.getTemplateRecord(operationTaskRecordDTO)); } /** * 根据点巡检或原始记录的主表id,查询具体的点巡检或原始记录的从表信息 * * @param operationTaskParamDTO 工单所需物料 * @return R */ @ApiOperation(value = "根据点巡检或原始记录的主表id,查询具体的点巡检或原始记录的从表信息和附件", notes = "根据点巡检或原始记录的主表id,查询具体的点巡检或原始记录的从表信息和附件") @GetMapping("/getTemplateParam") public R getTemplateParam(OperationTaskParamDTO operationTaskParamDTO) { return R.ok(operationTaskService.getTemplateParam(operationTaskParamDTO)); } /** * 新增点巡检或原始记录的主从表 * * @param operationTaskId * @param dutyRecordId * @param operationTaskParamList * @param operationTemplateId * @param id * @param file * @return */ @ApiOperation(value = "新增点巡检或原始记录的主从表", notes = "新增点巡检或原始记录的主从表") @PostMapping("/addTemplateRecord") public R addTemplateParam(Long operationTaskId, Long dutyRecordId, Long workstationId, Long productOutId, String operationTaskParamList, Long operationTemplateId, Long id, @RequestParam("file") List file) { return R.ok(operationTaskService.addTemplateParam(operationTaskId, dutyRecordId, workstationId, productOutId, operationTaskParamList, operationTemplateId, id, file)); } /** * 批量新增生产记录 * * @param templateRecordInputDTO * @return */ @ApiOperation(value = "批量新增生产记录", notes = "批量新增生产记录") @PostMapping("/batchAddTemplateRecord") public R batchAddTemplateRecord(@RequestBody TemplateRecordInputDTO templateRecordInputDTO) { return R.ok(operationTaskService.batchAddTemplateRecord(templateRecordInputDTO)); } /** * 批量更新生产记录参数 * * @param templateRecordInputDTO * @return */ @ApiOperation(value = "批量更新生产记录参数", notes = "批量更新生产记录参数") @PostMapping("/batchUpdateTemplateRecord") public R batchUpdateTemplateRecord(@RequestBody TemplateRecordInputDTO templateRecordInputDTO) { return R.ok(operationTaskService.batchUpdateTemplateRecord(templateRecordInputDTO)); } /** * 通过id删除点巡检或原始记录的主从表 * * @param operationTaskRecordDTO * @return R */ @ApiOperation(value = "通过id删除点巡检或原始记录的主从表", notes = "通过id删除点巡检或原始记录的主从表") @SysLog("通过id删除点巡检或原始记录的主从表") @PostMapping("/deleteTemplateRecord") public R deleteTemplateRecord(@RequestBody OperationTaskRecordDTO operationTaskRecordDTO) { return R.ok(operationTaskService.deleteTemplateRecord(operationTaskRecordDTO)); } /** * 批量删除点巡检或原始记录的主从表 * * @param idList * @return R */ @ApiOperation(value = "批量删除点巡检或原始记录的主从表", notes = "批量删除点巡检或原始记录的主从表") @SysLog("批量删除点巡检或原始记录的主从表") @PostMapping("/deleteBatchTemplateRecord") public R deleteBatchTemplateRecord(@RequestBody List idList) { return R.ok(operationTaskService.deleteBatchTemplateRecord(idList)); } /** * PDA查询工单所需物料 * * @param operationTaskMaterialDTO 工单所需物料 * @return */ @ApiOperation(value = "PDA查询工单所需物料", notes = "PDA查询工单所需物料") @GetMapping("/pda/material") @Inner(false) public R pdaMaterial(OperationTaskMaterialDTO operationTaskMaterialDTO) { return R.ok(operationTaskService.pdaMaterial(QueryWrapperUtil.gen(operationTaskMaterialDTO))); } /** * PDA查询所有 * * @param operationTaskDTO 工单 * @return */ @ApiOperation(value = "PDA查询所有", notes = "PDA查询所有") @GetMapping("/pda/list") public R pdaPage(Page page, OperationTaskDTO operationTaskDTO) { return R.ok(operationTaskService.pdaPage(page, QueryWrapperUtil.gen(operationTaskDTO))); } /** * 上传文件 * * @param file * @param operationTaskRecordId * @return */ @PostMapping("/upload") public R upload(@RequestParam("file") List file, @RequestParam("operationTaskRecordId") Long operationTaskRecordId) { return operationTaskService.uploadFile(file, operationTaskRecordId); } @ApiOperation(value = "通过文件名删除附件", notes = "通过文件名删除附件") @SysLog("通过文件名删除附件") @DeleteMapping("/removeFile") public R removeFileById(OperationTaskAttachment operationTaskAttachment) { return operationTaskService.deleteFile(operationTaskAttachment); } /** * 获取文件 * * @param bucket 桶名称 * @param fileName 文件空间/名称 * @param response * @return */ @Inner(false) @GetMapping("/{bucket}/{fileName}") public void file(@PathVariable String bucket, @PathVariable String fileName, HttpServletResponse response) { operationTaskService.getFile(bucket, fileName, response); } /** * 合并工单 * * @param ids 工单id * @return */ @ApiOperation("合并工单") @PostMapping("/combineOperationTask") public R combineOperationTask(@RequestBody List ids) { if (ids.isEmpty()) { return R.failed("未选择工单"); } return operationTaskService.combineOperationTask(ids); } /** * 查询被合并工单信息 * * @param id * @return */ @ApiOperation("查询被合并工单信息") @GetMapping("/getCombinedOperationTaskInfo") public R getCombinedOperationTaskInfo(Long id) { return R.ok(operationTaskService.getCombinedOperationTaskInfo(id)); } //*************************************************************************对接数据采集终端 /** * 根据SN号查询数据采集终端服务程序所需信息 * * @param productOutput * @return */ @Inner(value = false) @ApiOperation(value = "根据SN号查询数据采集终端服务程序所需信息", notes = "根据SN号查询数据采集终端服务程序所需信息") @GetMapping("/quality/getAllMessage") public R getAllMessage(ProductOutputDTO productOutput) { return operationTaskService.getAllMessage(productOutput); } /** * 根据采集服务程序推送的检测信息创建检测汇报 * * @param infosOfferDetectionTerminalDTO * @return */ @Inner(value = false) @ApiOperation(value = "根据采集服务程序推送的检测信息创建检测汇报", notes = "根据采集服务程序推送的检测信息创建检测汇报") @SysLog("根据采集服务程序推送的检测信息创建检测汇报") @PostMapping("/report") public R saveReport(@RequestBody InfosOfferDetectionTerminalDTO infosOfferDetectionTerminalDTO) { return operationTaskService.saveReport(infosOfferDetectionTerminalDTO); } /** * 查询检测汇报类型基础数据 * * @param * @return */ @Inner(value = false) @ApiOperation(value = "查询检测汇报类型基础数据", notes = "查询检测汇报类型基础数据") @GetMapping("/quality/getApplyReportType") public R getApplyReportType() { return operationTaskService.getApplyReportType(); } //*************************************************************************对接数据采集终端 /** * 根据车间订单id 查询临时工单 * * @param moId * @return */ @ApiOperation("根据车间订单id 查询临时工单") @GetMapping("/getFromMoOptionByMoId/{moId}") public R getFromMoOptionByMoId(@PathVariable Long moId) { return operationTaskService.getFromMoOptionByMoId(moId); } /** * 根据工单ids查询领料数据 * * @param ids * @return */ @ApiOperation("根据工单ids查询领料数据") @PostMapping("/addReserve") public R addReserve(@RequestBody List ids) { return operationTaskService.addReserve(ids); } /** * 根据工单ids查询货盘运输任务 * * @param ids id * @return R */ @ApiOperation(value = "根据工单ids查询货盘运输任务", notes = "根据工单ids查询货盘运输任务") @SysLog("根据工单ids查询货盘运输任务") @PostMapping("/getOptaskCode") public R getPalletOptaskCode(@RequestBody List ids) { return operationTaskService.getPalletOptaskCode(ids); } /** * 根据工作站编号获取可用的工单(进行中、等待中)&&线边仓库位 * * @param workstationNo 工作站编号 * @return */ @ApiOperation(value = "根据工作站编号获取可用的工单&&对应的线边仓", notes = "必传参数:工作站编号") @SysLog("根据工作站编号获取可用的工单&&线边仓") @GetMapping("/getBasicInfoForPdaFeedByWorkstationNo") public R getBasicInfoForPdaFeedByWorkstationNo(@RequestParam("workstationNo") String workstationNo) { return operationTaskService.getBasicInfoForPdaFeedByWorkstationNo(workstationNo); } /** * 根据货盘id获取工单 * * @param id 工作站编号 * @return */ @ApiOperation(value = "根据货盘id获取工单", notes = "根据货盘id获取工单") @SysLog("根据货盘id获取工单") @GetMapping("/getByPalletTransId/{id}") public R getByPalletTransId(@PathVariable("id") Long id) { return R.ok(operationTaskService.getByPalletTransId(id)); } /** * 批量更新工单优先级 * * @param operationTaskList * @return */ @ApiOperation(value = "批量更新工单优先级", notes = "批量更新工单优先级") @SysLog("批量更新工单优先级") @PostMapping("/batchUpdatePriority") public R batchUpdatePriority(@RequestBody List operationTaskList) { return R.ok(this.operationTaskService.batchUpdatePriority(operationTaskList)); } /** * 判断该工单是否可以开始 * * @param id * @param workstationId * @return */ @ApiOperation(value = "判断该工单是否可以开始", notes = "判断该工单是否可以开始") @GetMapping("/checkIsStart") public R checkIsStart(Long id, Long workstationId) { return R.ok(this.operationTaskService.checkIsStart(id, workstationId)); } /** * 查询工艺文件结构图 * * @param technologyDocumentId * @return */ @ApiOperation(value = "查询工艺文件结构图", notes = "查询工艺文件结构图") @GetMapping("/getDocumentJgt") public R getDocumentJgt(Long technologyDocumentId) { return customerOrderService.getDocumentJgt(technologyDocumentId); } /** * 查询工艺附件 * * @param customerOrderNo * @return */ @ApiOperation(value = "查询工艺附件", notes = "查询工艺附件") @GetMapping("/getProcessConfigFiles") public R getProcessConfigFiles(String customerOrderNo) { return customerOrderService.getProcessConfigFiles(customerOrderNo); } /** * 更改批量提交状态 * * @param id * @param isSubmit * @return */ @ApiOperation(value = "更改批量提交状态", notes = "更改批量提交状态") @GetMapping("/changeSubmitState") public R changeSubmitState(@RequestParam("id") Long id, @RequestParam("isSubmit") Boolean isSubmit) { operationTaskService.update(Wrappers.lambdaUpdate().set(OperationTask::getIsSubmit, isSubmit).eq(OperationTask::getId, id)); return R.ok(); } /** * 查询批量提交状态 * * @param id * @return */ @ApiOperation(value = "查询批量提交状态", notes = "查询批量提交状态") @GetMapping("/selectSubmitState") public R selectSubmitState(@RequestParam("id") Long id) { OperationTask operationTask = operationTaskService.getById(id); return R.ok(operationTask.getIsSubmit()); } /** * 根据客户订单id查询工单信息 * * @param customerOrderId * @return */ @ApiOperation(value = "根据客户订单id查询工单信息", notes = "根据客户订单id查询工单信息") @GetMapping("/getByCustomerOrderId") public R getByCustomerOrderId(Long customerOrderId) { return R.ok(operationTaskService.getByCustomerOrderId(customerOrderId)); } }