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.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 = "工单信息接口") 
 | 
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<Integer> 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<PageData<WorkorderExtListVO>> findPage (@RequestBody PageWrap<QueryWorkorderExtDTO> pageWrap) { 
 | 
        return ApiResponse.success(workorderExtService.findPage(pageWrap)); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("查询工单统计列表数量") 
 | 
    @PostMapping("/pageCount") 
 | 
    @RequiresPermissions("ext:workorderext:query") 
 | 
    public ApiResponse<WorkorderExtListCountVO> pageCount (@RequestBody QueryWorkorderExtDTO param) { 
 | 
        return ApiResponse.success(workorderExtService.pageCount(param)); 
 | 
    } 
 | 
    @ApiOperation("导出Excel") 
 | 
    @PostMapping("/exportExcel") 
 | 
    @RequiresPermissions("ext:workorderext:exportExcel") 
 | 
    public void exportExcel (@RequestBody PageWrap<QueryWorkorderExtDTO> 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<WorkorderExtListVO> 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<FinishedInBean> 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<FinishedInNewBean> 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<Integer> 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<BeFinishedRecord> 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); 
 | 
    } 
 | 
} 
 |