package doumeemes.api.ext; import com.alibaba.fastjson.JSONObject; import doumeemes.config.rocketmq.MqConfig; import doumeemes.config.rocketmq.RocketMessageProducer; import doumeemes.core.utils.DateUtil; import doumeemes.dao.business.model.Workorder; import doumeemes.dao.ext.vo.PlansExtListCountVO; import doumeemes.dao.ext.vo.PlansExtListH5VO; import doumeemes.service.ext.WorkorderExtService; import org.apache.poi.ss.usermodel.Cell; import doumeemes.api.BaseController; import doumeemes.core.annotation.excel.ExcelExporter; import doumeemes.core.annotation.pr.PreventRepeat; import doumeemes.core.model.ApiResponse; import doumeemes.core.model.PageWrap; import doumeemes.core.model.PageData; import doumeemes.core.utils.Constants; import doumeemes.dao.business.model.Plans; import doumeemes.dao.ext.dto.QueryPlansExtDTO; import doumeemes.dao.ext.vo.PlansExtListVO; import doumeemes.service.business.PlansService; import doumeemes.service.ext.PlansExtService; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 生产计划接口 * @author 江蹄蹄 * @date 2022/04/20 11:01 */ @RestController @RequestMapping("/ext/plansExt") @Api(tags = "生产计划接口") public class PlansExtController extends BaseController { @Autowired private PlansExtService plansExtService; @Autowired private WorkorderExtService workorderExtService; @Autowired private PlansService plansService; @PreventRepeat @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("ext:plansext:create") public ApiResponse create(@RequestBody Plans plans) { return ApiResponse.success(plansExtService.create(plans)); } @ApiOperation("根据ID删除") @GetMapping("/delete/{id}") @RequiresPermissions("ext:plansext:delete") public ApiResponse deleteById(@PathVariable Integer id) { plansExtService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("批量删除") @GetMapping("/delete/batch") @RequiresPermissions("ext:plansext:delete") public ApiResponse deleteByIds(@RequestParam String ids) { String [] idArray = ids.split(","); List idList = new ArrayList<>(); for (String id : idArray) { idList.add(Integer.valueOf(id)); } plansExtService.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("根据ID修改") @PostMapping("/updateById") @RequiresPermissions("ext:plansext:update") public ApiResponse updateById(@RequestBody Plans plans) { plansExtService.updateById(plans); return ApiResponse.success(null); } @ApiOperation("根据ID关闭计划") @PostMapping("/closeById") @RequiresPermissions("ext:plansext:control") public ApiResponse closeById(@RequestBody Plans plans) { plansExtService.closeById(plans); return ApiResponse.success(null); } @ApiOperation("根据ID分配计划") @PostMapping("/distributeById") @RequiresPermissions("ext:plansext:distribute") public ApiResponse distributeById(@RequestBody Workorder order) { plansExtService.distributeById(order); //发送消息队列处理分享操作 workorderExtService.statisticNum(order); // RocketMessageProducer.producerMsg(Constants.MQ_TAG.statistics,null, JSONObject.toJSONString(order)); // rabbitTemplate.convertAndSend(Constants.MqTopicKeys.TOPIC_STATISTIC_NUM, Constants.MqTopicKeys.TOPIC_STATISTIC_NUM, JSONObject.toJSONString(order)); return ApiResponse.success(null); } @ApiOperation("根据ID发布计划") @PostMapping("/publishById") @RequiresPermissions("ext:plansext:publish") public ApiResponse publishById(@RequestBody Plans plans) { plansExtService.publishById(plans); return ApiResponse.success(null); } @ApiOperation("根据ID撤回计划") @PostMapping("/backById") @RequiresPermissions("ext:plansext:control") public ApiResponse backById(@RequestBody Plans plans) { plansExtService.backById(plans); return ApiResponse.success(null); } @ApiOperation("根据ID暂停计划") @PostMapping("/pauseById") @RequiresPermissions("ext:plansext:control") public ApiResponse pauseById(@RequestBody Plans plans) { plansExtService.pauseById(plans); return ApiResponse.success(null); } @ApiOperation("根据ID恢复计划") @PostMapping("/regainById") @RequiresPermissions("ext:plansext:control") public ApiResponse regainById(@RequestBody Plans plans) { plansExtService.regainById(plans); return ApiResponse.success(null); } @ApiOperation("根据ID取消计划") @PostMapping("/cancelById") @RequiresPermissions("ext:plansext:control") public ApiResponse cancelById(@RequestBody Plans plans) { plansExtService.cancelById(plans); return ApiResponse.success(null); } @ApiOperation("批量发布计划") @GetMapping("/publish/batch") @RequiresPermissions("ext:plansext:publish") public ApiResponse publishByIds(@RequestParam String ids) { String [] idArray = ids.split(","); List idList = new ArrayList<>(); for (String id : idArray) { idList.add(Integer.valueOf(id)); } plansExtService.publishByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("批量分配计划") @PostMapping("/distribute/batch") @RequiresPermissions("ext:plansext:distribute") public ApiResponse distributeByOrders(@RequestBody List orders) { plansExtService.distributeByBatch(orders); if(orders!=null){ for(Workorder order :orders){ //发送消息队列处理分享操作 workorderExtService.statisticNum(order); // RocketMessageProducer.producerMsg(Constants.MQ_TAG.statistics,null, JSONObject.toJSONString(order)); // rabbitTemplate.convertAndSend(Constants.MqTopicKeys.TOPIC_STATISTIC_NUM, Constants.MqTopicKeys.TOPIC_STATISTIC_NUM, JSONObject.toJSONString(order)); } } return ApiResponse.success(null); } @ApiOperation("批量撤回计划") @GetMapping("/back/batch") @RequiresPermissions("ext:plansext:control") public ApiResponse backByIds(@RequestParam String ids) { String [] idArray = ids.split(","); List idList = new ArrayList<>(); for (String id : idArray) { idList.add(Integer.valueOf(id)); } plansExtService.backByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("分页查询") @PostMapping("/page") @RequiresPermissions("ext:plansext:query") public ApiResponse> findPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(plansExtService.findPage(pageWrap)); } @ApiOperation("导出Excel") @PostMapping("/exportExcel") @RequiresPermissions("ext:plansext:exportExcel") public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) throws Exception{ ExcelExporter.build(PlansExtListVO.class).export(plansExtService.findPage(pageWrap).getRecords(), "生产计划"+ DateUtil.getNowLongTime(), response); } @ApiOperation("根据ID查询") @GetMapping("/{id}") @RequiresPermissions("ext:plansext:query") public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(plansExtService.findById(id)); } @ApiOperation("根据ID查询(H5端)") @GetMapping("/h5/{id}") @RequiresPermissions("ext:plansext:query") public ApiResponse findByIdH5(@PathVariable Integer id) { return ApiResponse.success(plansExtService.findByIdH5(id)); } @ApiOperation("查询统计列表数量") @PostMapping("/pageCount") @RequiresPermissions("ext:plansext:query") public ApiResponse pageCount (@RequestBody QueryPlansExtDTO param) { return ApiResponse.success(plansExtService.pageCount(param)); } /** * 批量导入计划 * * @param request * @param response * @throws Exception */ @ApiOperation(value = "批量导入计划", notes = "批量导入计划", httpMethod = "POST", position = 6) @ApiImplicitParams({ @ApiImplicitParam(name = "folder", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), }) @PostMapping(value = "/importBatch", headers = "content-type=multipart/form-data") @RequiresPermissions("ext:plansext:create") public ApiResponse importBatch(String folder,HttpServletRequest request, HttpServletResponse response) throws Exception { CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver(); if (multipartResovler.isMultipart(request)) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator it = multipartRequest.getFileNames(); while (it.hasNext()) { MultipartFile file = multipartRequest.getFile((String) it.next());// file plansExtService.importPlans(file); break; } } return ApiResponse.success( null); } }