package com.chinaztt.mes.plan.controller; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.basic.service.IfsLogService; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.mes.plan.dto.ManufacturingOrderDTO; import com.chinaztt.mes.plan.dto.MoStructureComponentDTO; import com.chinaztt.mes.plan.dto.UploadRefreshIfsOrderNoResultDTO; import com.chinaztt.mes.plan.entity.ManufacturingOrderOperationTemplate; import com.chinaztt.mes.plan.excel.ManufacturingOderUploadData; import com.chinaztt.mes.plan.excel.ManufacturingOrderUploadListener; import com.chinaztt.mes.plan.service.ManufacturingOrderService; 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 lombok.extern.slf4j.Slf4j; 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 javax.validation.Valid; import javax.validation.constraints.NotNull; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * 制造订单表 * * @author cxf * @date 2020-09-24 14:26:01 */ @RestController @AllArgsConstructor @RequestMapping("/plan/manufacturingOrder") @Api(value = "manufacturingOrder", tags = "制造订单表管理") @Slf4j public class ManufacturingOrderController { private final ManufacturingOrderService manufacturingOrderService; private IfsLogService ifsLogService; /** * 分页查询 * * @param page 分页对象 * @param manufacturingOrderDTO 制造订单表 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('plan_manufacturingorder_view')") public R getManufacturingOrderPage(Page page, ManufacturingOrderDTO manufacturingOrderDTO) { List list = new ArrayList<>(); if (CollectionUtil.isNotEmpty(manufacturingOrderDTO.getCustomerList())) { list = manufacturingOrderDTO.getCustomerList(); } return R.ok(manufacturingOrderService.getManufacturingOrderPage(page, QueryWrapperUtil.gen(manufacturingOrderDTO), list)); } /** * 车间订单导出 * * @return */ @ApiOperation(value = "车间订单导出", notes = "车间订单导出") @GetMapping("/export") public void export(HttpServletResponse response, ManufacturingOrderDTO manufacturingOrderDTO) throws IOException { List list = new ArrayList<>(); if (CollectionUtil.isNotEmpty(manufacturingOrderDTO.getCustomerList())) { list = manufacturingOrderDTO.getCustomerList(); } manufacturingOrderService.export(response, QueryWrapperUtil.gen(manufacturingOrderDTO),list); } /** * 分页查询制造订单报表 * * @param page 分页查询制造订单报表 * @param manufacturingOrderDTO 分页查询制造订单报表 * @return */ @ApiOperation(value = "分页查询制造订单报表", notes = "分页查询制造订单报表") @GetMapping("/statementPage") public R getStatementPage(Page page, ManufacturingOrderDTO manufacturingOrderDTO) { return R.ok(manufacturingOrderService.getStatementPage(page, QueryWrapperUtil.gen(manufacturingOrderDTO))); } /** * @param page * @param manufacturingOrderDTO * @return */ @ApiOperation(value = "分页查询未排产制造订单", notes = "分页查询未排产制造订单") @GetMapping("/apsPage") @PreAuthorize("@pms.hasPermission('plan_manufacturingorder_view')") public R getApsManufacturingOrderPage(Page page, ManufacturingOrderDTO manufacturingOrderDTO) { List list = new ArrayList<>(); if (CollectionUtil.isNotEmpty(manufacturingOrderDTO.getCustomerList())) { list = manufacturingOrderDTO.getCustomerList(); } manufacturingOrderDTO.setPlanned(false); return R.ok(manufacturingOrderService.getManufacturingOrderPage(page, QueryWrapperUtil.gen(manufacturingOrderDTO), list)); } /** * 通过id查询制造订单表 * * @param id id * @return R */ @ApiOperation(value = "通过id查询", notes = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('plan_manufacturingorder_view')") public R getById(@PathVariable("id") Long id) { return R.ok(manufacturingOrderService.selectById(id)); } /** * 根据零件判断是否存在工艺路线/工艺结构 * * @param partId partId * @return R */ @ApiOperation(value = "根据零件判断是否存在工艺路线/工艺结构", notes = "根据零件判断是否存在工艺路线/工艺结构") @GetMapping("/checkPart/{partId}/{workshopTypeCode}") public R checkPart(@PathVariable("partId") Long partId, @PathVariable("workshopTypeCode") String workshopTypeCode) { return R.ok(manufacturingOrderService.checkPart(partId, workshopTypeCode)); } /** * 新增制造订单表 * * @param manufacturingOrderDTO 制造订单表 * @return R */ @ApiOperation(value = "新增制造订单表", notes = "新增制造订单表") @SysLog("新增制造订单表") @PostMapping @PreAuthorize("@pms.hasPermission('plan_manufacturingorder_add')") public R save(@RequestBody ManufacturingOrderDTO manufacturingOrderDTO) { return manufacturingOrderService.fullSave(manufacturingOrderDTO); } /** * 从主计划新增车间订单 * * @param manufacturingOrderDTO 制造订单表 * @return R */ @ApiOperation(value = "从主计划新增车间订单", notes = "从主计划新增车间订单") @SysLog("从主计划新增车间订单") @PostMapping("/saveFromSchdule") public R saveFromSchdule(@RequestBody ManufacturingOrderDTO manufacturingOrderDTO) { return manufacturingOrderService.fullSave(manufacturingOrderDTO); } /** * 修改制造订单表 * * @param manufacturingOrderDTO 制造订单表 * @return R */ @ApiOperation(value = "修改制造订单表", notes = "修改制造订单表") @SysLog("修改制造订单表") @PutMapping @PreAuthorize("@pms.hasPermission('plan_manufacturingorder_edit')") public R updateById(@RequestBody ManufacturingOrderDTO manufacturingOrderDTO) { return manufacturingOrderService.updateDtoById(manufacturingOrderDTO); } /** * 通过id删除制造订单表 * * @param id id * @return R */ @ApiOperation(value = "通过id删除制造订单表", notes = "通过id删除制造订单表") @SysLog("通过id删除制造订单表") @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('plan_manufacturingorder_del')") public R removeById(@PathVariable Long id) { return R.ok(manufacturingOrderService.removeById(id)); } /** * 状态变更 * * @param ids * @return R */ @ApiOperation(value = "状态变更", notes = "状态变更") @SysLog("状态变更") @PostMapping("/changeState/{event}") public R changeMarkPlanned(@RequestBody List ids, @PathVariable String event) { return R.ok(manufacturingOrderService.changeState(ids, event)); } /** * 根据制造订单id和工艺id校验该制造订单对应的工艺是否一致 * * @param manufacturingOrderDTO 制造订单表 * @return */ @ApiOperation(value = "根据制造订单id和工艺id校验该制造订单对应的工艺是否一致", notes = "根据制造订单id和工艺id校验该制造订单对应的工艺是否一致") @GetMapping("/checkout") public R checkoutManufacturingOrder(ManufacturingOrderDTO manufacturingOrderDTO) { return R.ok(manufacturingOrderService.checkoutManufacturingOrder(manufacturingOrderDTO)); } /** * 根据工艺id和工序id获取复制的工序模板 * * @param manufacturingOrderDTO 制造订单表 * @return */ @ApiOperation(value = "根据工艺id和工序id获取复制的工序模板", notes = "根据工艺id和工序id获取复制的工序模板") @GetMapping("/planRoutingOperationTemplate") public R getOperationTemplate(ManufacturingOrderDTO manufacturingOrderDTO) { return R.ok(manufacturingOrderService.getOperationTemplate(manufacturingOrderDTO)); } /** * 根据复制工序模板的id删除工序模板 * * @param id id * @return R */ @ApiOperation(value = "根据复制工序模板的id删除工序模板", notes = "根据复制工序模板的id删除工序模板") @SysLog("根据复制工序模板的id删除工序模板") @DeleteMapping("/deleteRoutingTemplate/{id}") public R deleteRoutingTemplate(@PathVariable Long id) { return R.ok(manufacturingOrderService.deleteRoutingTemplate(id)); } /** * 修改制造订单模板 * * @param manufacturingOrderOperationTemplate 修改制造订单模板 * @return R */ @ApiOperation(value = "修改制造订单模板", notes = "修改制造订单模板") @SysLog("修改制造订单模板") @PutMapping("updateTemplate") public R updateTemplate(@RequestBody ManufacturingOrderOperationTemplate manufacturingOrderOperationTemplate) { return R.ok(manufacturingOrderService.updateTemplate(manufacturingOrderOperationTemplate)); } /** * 根据工艺工序id关联添加工序模板 * * @param manufacturingOrderDTO * @return */ @ApiOperation(value = "根据工艺工序id关联添加工序模板", notes = "根据工艺工序id关联添加工序模板") @PostMapping("/addRoutingTemplate") public R addOperationTemplate(@RequestBody ManufacturingOrderDTO manufacturingOrderDTO) { return R.ok(manufacturingOrderService.addOperationTemplate(manufacturingOrderDTO)); } /** * 根据工艺工序id和工序模板id获取工序参数 * * @param manufacturingOrderDTO 制造订单表 * @return */ @ApiOperation(value = "根据工艺工序id和工序模板id获取工序参数", notes = "根据工艺工序id和工序模板id获取工序参数") @GetMapping("/planRoutingOperationTemplateParam") public R getOperationTemplateParam(ManufacturingOrderDTO manufacturingOrderDTO) { return R.ok(manufacturingOrderService.getOperationTemplateParam(manufacturingOrderDTO)); } /** * 根据复制工序参数的id删除工序参数 * * @param id id * @return R */ @ApiOperation(value = "根据复制工序参数的id删除工序参数", notes = "根据复制工序参数的id删除工序参数") @SysLog("根据复制工序参数的id删除工序参数") @DeleteMapping("/deleteRoutingTemplateParam/{id}") public R deleteRoutingTemplateParam(@PathVariable Long id) { return R.ok(manufacturingOrderService.deleteRoutingTemplateParam(id)); } /** * 根据工艺工序id和工序模板id关联添加工序参数 * * @param manufacturingOrderDTO * @return */ @ApiOperation(value = "根据工艺工序id和工序模板id关联添加工序参数", notes = "根据工艺工序id和工序模板id关联添加工序参数") @PostMapping("/addRoutingTemplateParam") public R addOperationTemplateParam(@RequestBody ManufacturingOrderDTO manufacturingOrderDTO) { return R.ok(manufacturingOrderService.addOperationTemplateParam(manufacturingOrderDTO)); } /** * 工序参数的参数值的修改 * * @param manufacturingOrderDTO 工艺 * @return R */ @ApiOperation(value = "工序参数的参数值的修改", notes = "工序参数的参数值的修改") @SysLog("工序参数的参数值的修改") @PutMapping("routingTemplateParam") public R updateRoutingTemplateParamById(@RequestBody ManufacturingOrderDTO manufacturingOrderDTO) { return R.ok(manufacturingOrderService.updateRoutingTemplateParamById(manufacturingOrderDTO)); } /** * bom切换,查询相关信息 * * @param bomId * @return */ @GetMapping("/bomSelectChange/{bomId}") public R bomSelectChange(@PathVariable Long bomId) { return R.ok(manufacturingOrderService.bomSelectChange(bomId)); } /** * 通过制造订单id查询客户订单 * * @param id id * @return R */ @ApiOperation(value = "通过制造订单id查询客户订单", notes = "通过制造订单id查询客户订单") @GetMapping("/getCustomer/{id}") public R getCustomer(@PathVariable("id") Long id) { return R.ok(manufacturingOrderService.getCustomer(id)); } /** * 通过制造订单id和零件id找到产出所需数量 * * @param id 制造订单id * @param partId 零件id * @return */ @ApiOperation(value = "通过制造订单id和零件id找到产出所需数量") @GetMapping("/getQpaNumber") public R getQpaNumber(@Valid @NotNull Long id, @Valid @NotNull Long partId) { return R.ok(manufacturingOrderService.getQpaNumber(id, partId)); } /** * ifs查询车间订单申请 * * @param manufacturingOrderDTO partNo 零件编号 * partName 零件描述 * workshopTypeCode 车间订单类型 * state 状态 * createUser 计划人 * @return */ @ApiOperation(value = "ifs查询车间订单申请") @GetMapping("/queryShopOrderReqStd") public R queryShopOrderReqStd(ManufacturingOrderDTO manufacturingOrderDTO) { return manufacturingOrderService.queryShopOrderReqStd(manufacturingOrderDTO); } /** * ifs车间订单更新/新增接口 * * @param ids * @return */ @ApiOperation(value = "ifs车间订单更新/新增接口") @PostMapping("/importShopOrderStd") public R importShopOrderStd(@RequestBody List ids) { return manufacturingOrderService.importShopOrderStd(ids); } /** * ifs车间订单物料更新 * * @param ids * @return */ @ApiOperation(value = "ifs车间订单物料更新") @PostMapping("/modifyShopMaterialAllocStd") public R modifyShopMaterialAllocStd(@RequestBody List ids) { return manufacturingOrderService.modifyShopMaterialAllocStd(ids); } /** * ifs车间订单工序更新 * * @param ids * @return */ @ApiOperation(value = "ifs车间订单工序更新") @PostMapping("/modifyShopOperationStd") public R modifyShopOperationStd(@RequestBody List ids) { return manufacturingOrderService.modifyShopOperationStd(ids); } /** * 批量创建车间订单 * * @param manufacturingOrderDTOS * @return */ @ApiOperation(value = "批量创建车间订单") @PostMapping("/addBatch") public R addBatch(@RequestBody List manufacturingOrderDTOS) { return manufacturingOrderService.addBatch(manufacturingOrderDTOS); } /** * 车间订单BOM修改 * * @param moStructureComponentDTO * @return */ @ApiOperation(value = "车间订单BOM修改") @PutMapping("/updateMoBom") public R updateMoBom(@RequestBody MoStructureComponentDTO moStructureComponentDTO) { return R.ok(manufacturingOrderService.updateMoBom(moStructureComponentDTO)); } /** * 删除车间订单bom节点 * * @param id * @return */ @ApiOperation(value = "删除车间订单") @DeleteMapping("/delMoBom/{id}") public R delMoBom(@PathVariable("id") Long id) { return R.ok(manufacturingOrderService.delMoBom(id)); } /** * 新增车间订单bom节点 * * @param moStructureComponent bom节点 * @return */ @ApiOperation(value = "新增车间订单bom节点") @PostMapping("/addMoBomCompont") public R addMoBomCompont(@RequestBody MoStructureComponentDTO moStructureComponent) { return R.ok(manufacturingOrderService.addMoBomCompont(moStructureComponent)); } /** * 判断车间订单是否可以合并 * * @param ids bom节点 * @return */ @ApiOperation(value = "判断车间订单是否可以合并") @PostMapping("/mergeCheck") public R mergeCheck(@RequestBody List ids) { return R.ok(manufacturingOrderService.mergeCheck(ids)); } /** * 后台拼接合并车间订单 * * @param id 目标订单id * @param ids 被合并订单id * @return */ @ApiOperation(value = "订单合并数据") @PostMapping("/mergeOrder/{id}") public R mergeOrder(@PathVariable("id") Long id, @RequestBody List ids) { return R.ok(manufacturingOrderService.mergeOrder(id, ids)); } /** * 合并后的车间订单 * * @return */ @PostMapping("/mergeUpdate") public R mergeUpdate(@RequestBody ManufacturingOrderDTO manufacturingOrderDTO) { return R.ok(manufacturingOrderService.mergeUpdate(manufacturingOrderDTO)); } /** * 月结拆单后,更新车间订单和ifs缓存中的ifs订单号 * @return */ @PostMapping("/refreshIfsOrderNo") public R refreshIfsOrderNo() { try { manufacturingOrderService.refreshIfsOrderNo(); } catch (Exception e) { log.error(e.getMessage(), e); } manufacturingOrderService.refreshIfsLogOrderNo(); return R.ok(); } @Inner(value = false) @PostMapping("/uploadRefreshIfsOrderNo") @ApiOperation(value = "上传文件更新月结ifs订单号") public R uploadRefreshIfsOrderNo(@RequestParam("file") MultipartFile file) { try { List resultDTOList = new ArrayList<>(); EasyExcel.read(file.getInputStream(), ManufacturingOderUploadData.class, new ManufacturingOrderUploadListener(manufacturingOrderService, resultDTOList)).sheet().doRead(); manufacturingOrderService.refreshIfsLogOrderNo(); return R.ok(resultDTOList); } catch (Exception e) { log.error(e.getMessage(), e); return R.failed(e.getMessage()); } } }