package doumeemes.api.ext; import com.alibaba.fastjson.JSONObject; import doumeemes.api.BaseController; import doumeemes.config.rocketmq.RocketMessageProducer; import doumeemes.core.annotation.excel.ExcelExporter; import doumeemes.core.annotation.pr.PreventRepeat; import doumeemes.core.annotation.trace.Trace; import doumeemes.core.model.ApiResponse; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.core.utils.Constants; import doumeemes.core.utils.DateUtil; import doumeemes.dao.business.model.BeFinishedRecord; import doumeemes.dao.business.model.Plans; import doumeemes.dao.business.model.Workorder; import doumeemes.dao.ext.bean.FinishedInBean; import doumeemes.dao.ext.bean.FinishedInNewBean; import doumeemes.dao.ext.dto.QueryWorkorderExtDTO; import doumeemes.dao.ext.vo.WorkorderExtListCountVO; import doumeemes.dao.ext.vo.WorkorderExtListVO; import doumeemes.service.business.PlansService; import doumeemes.service.business.WorkorderService; import doumeemes.service.ext.BeFinishedRecordExtService; import doumeemes.service.ext.PlansExtService; import doumeemes.service.ext.WorkorderExtService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.util.ThreadContext; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; /** * 工单信息接口 * @author 江蹄蹄 * @date 2022/04/20 10:56 */ @RestController @RequestMapping("/ext/workorderExt") @Api(tags = "工单信息接口") @Trace(withRequestResult = false,withRequestParameters = false) public class WorkorderExtController extends BaseController { @Autowired private WorkorderExtService workorderExtService; @Autowired private WorkorderService workorderService; @Autowired private PlansExtService plansExtService; @Autowired private BeFinishedRecordExtService beFinishedRecordExtService; @PreventRepeat @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("ext:workorderext:create") public ApiResponse create(@RequestBody Workorder workorder) { return ApiResponse.success(workorderService.create(workorder)); } @ApiOperation("根据ID删除") @GetMapping("/delete/{id}") @RequiresPermissions("ext:workorderext:delete") public ApiResponse deleteById(@PathVariable Integer id) { workorderService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("批量删除") @GetMapping("/delete/batch") @RequiresPermissions("ext:workorderext:delete") public ApiResponse deleteByIds(@RequestParam String ids) { String [] idArray = ids.split(","); List idList = new ArrayList<>(); for (String id : idArray) { idList.add(Integer.valueOf(id)); } workorderService.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("根据ID修改") @PostMapping("/updateById") @RequiresPermissions("ext:workorderext:update") public ApiResponse updateById(@RequestBody Workorder workorder) { workorderService.updateById(workorder); return ApiResponse.success(null); } @ApiOperation("工单重新分配") @PostMapping("/distributeById") @RequiresPermissions("ext:workorderext:update") public ApiResponse distributeById(@RequestBody Workorder order) { workorderExtService.distributeById(order); return ApiResponse.success(null); } @ApiOperation("关闭工单") @PostMapping("/closeById") @RequiresPermissions("ext:workorderext:update") public ApiResponse closeById(@RequestBody Workorder order) { workorderExtService.closeById(order); return ApiResponse.success(null); } @ApiOperation("取消工单") @PostMapping("/cancelById") @RequiresPermissions("ext:workorderext:update") public ApiResponse cancelById(@RequestBody Workorder order) { workorderExtService.cancelById(order); workorderExtService.statisticNum(order); // RocketMessageProducer.producerMsg(Constants.MQ_TAG.statistics,null, JSONObject.toJSONString(order)); return ApiResponse.success(null); } @ApiOperation("分页查询") @PostMapping("/page") @RequiresPermissions("ext:workorderext:query") public ApiResponse> findPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(workorderExtService.findPage(pageWrap)); } @ApiOperation("查询工单统计列表数量") @PostMapping("/pageCount") @RequiresPermissions("ext:workorderext:query") public ApiResponse pageCount (@RequestBody QueryWorkorderExtDTO param) { return ApiResponse.success(workorderExtService.pageCount(param)); } @ApiOperation("导出Excel") @PostMapping("/exportExcel") @RequiresPermissions("ext:workorderext:exportExcel") public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) throws Exception{ ExcelExporter.build(WorkorderExtListVO.class).export(workorderExtService.findPage(pageWrap).getRecords(), "工单信息"+ DateUtil.getNowLongTime(), response); } @ApiOperation("根据ID查询") @GetMapping("/{id}") @RequiresPermissions("ext:workorderext:query") public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(workorderExtService.findById(id)); } @ApiOperation("批量备料 - 生成转库单") @GetMapping("/preparationWTransfer") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "ids", value = "工单主键(多个,分割)" , required = true), }) // @RequiresPermissions("ext:workorderext:preparationWTransfer") public ApiResponse preparationWTransfer(@RequestParam String ids) { return workorderExtService.preparationWTransfer(ids,getLoginUser()); } @ApiOperation("完工入库详情") @GetMapping("/finishedDetail") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "deviceIds", value = "设备主键(多个,分割)" , required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "inIds", value = "入库单据id(多个,分割)" , required = false), }) public ApiResponse finishedDetail(@RequestParam String deviceIds,String inIds) { return workorderExtService.finishedDetail(deviceIds,inIds,getLoginUser()); } @ApiOperation("完工入库详情 - NEW") @GetMapping("/finishedDetailNew") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "deviceIds", value = "设备主键(多个,分割)" , required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "inIds", value = "入库单据id(多个,分割)" , required = false), }) public ApiResponse finishedDetailNew(@RequestParam String deviceIds, String inIds) { return workorderExtService.finishedDetailNew(deviceIds,inIds,getLoginUser()); } @ApiOperation("完工入库提交") @GetMapping("/finished") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "deviceIds", value = "设备主键(多个,分割)" , required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "inIds", value = "入库单据id(多个,分割)" , required = false), }) public ApiResponse finished(@RequestParam String deviceIds,String inIds) { return workorderExtService.dataToWtWO(deviceIds,inIds,getLoginUser()); } @ApiOperation(value = "完工入库详情记录", notes = "完工入库详情记录 - H5") @PostMapping("/saveFinishRecord") public ApiResponse saveFinishRecord(@RequestBody BeFinishedRecord beFinishedRecord) { beFinishedRecordExtService.saveBeFinishedRecord(beFinishedRecord,getLoginUser()); return ApiResponse.success(null); } @ApiOperation(value = "完工入库详情", notes = "完工入库详情") @GetMapping("/getFinishRecord") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "转库单主键" , required = true), }) public ApiResponse getFinishRecord(@RequestParam Integer id) { return ApiResponse.success(beFinishedRecordExtService.getBeFinishedRecord(id)); } @PreventRepeat @ApiOperation("测试计划关闭") @PostMapping("/testPlanClose") public ApiResponse testPlanClose() { plansExtService.autoClose(); return ApiResponse.success(null); } @PreventRepeat @ApiOperation("测试统计1") @PostMapping("/testStatistic") public ApiResponse testStatistic(@RequestBody Workorder param) { workorderExtService.statisticNum(param); return ApiResponse.success(null); } @PreventRepeat @ApiOperation("测试统计2") @PostMapping("/testStatistic2") public ApiResponse testStatistic2(@RequestBody Workorder param) { workorderExtService.statisticNum(param); // RocketMessageProducer.producerMsg(Constants.MQ_TAG.statistics,null, JSONObject.toJSONString(param)); return ApiResponse.success(null); } }