package com.jcdm.main.om.productionOrde.controller; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletResponse; import com.jcdm.main.bs.modelNumber.domain.BsModelNumber; import com.jcdm.main.bs.modelNumber.service.IBsModelNumberService; import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling; import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService; import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo; import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; import com.jcdm.main.webservice.service.ReceivingServices; import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.jcdm.common.annotation.Log; import com.jcdm.common.core.controller.BaseController; import com.jcdm.common.core.domain.AjaxResult; import com.jcdm.common.enums.BusinessType; import com.jcdm.common.utils.poi.ExcelUtil; import com.jcdm.common.core.page.TableDataInfo; import static org.apache.commons.lang3.SystemUtils.getUserName; /** * 生产工单Controller * * @author ruimin * @date 2023-12-11 */ @RestController @RequestMapping("/om/productionOrde") public class OmProductionOrdeInfoController extends BaseController { @Autowired private IOmProductionOrdeInfoService omProductionOrdeInfoService; @Autowired private IBsOrderSchedulingService bsOrderSchedulingService; @Autowired private IBsModelNumberService bsModelNumberService; /** * 查询生产工单列表 */ @PreAuthorize("@ss.hasPermi('om:productionOrde:list')") @GetMapping("/list") public TableDataInfo list(OmProductionOrdeInfo omProductionOrdeInfo) { startPage(); List list = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo); return getDataTable(list); } /** * 导出生产工单列表 */ @PreAuthorize("@ss.hasPermi('om:productionOrde:export')") @Log(title = "生产工单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, OmProductionOrdeInfo omProductionOrdeInfo) { List list = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo); ExcelUtil util = new ExcelUtil(OmProductionOrdeInfo.class); util.exportExcel(response, list, "生产工单数据"); } /** * 获取生产工单详细信息 */ @PreAuthorize("@ss.hasPermi('om:productionOrde:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(omProductionOrdeInfoService.selectOmProductionOrdeInfoById(id)); } /** * 新增生产工单 */ @PreAuthorize("@ss.hasPermi('om:productionOrde:add')") @Log(title = "生产工单", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody OmProductionOrdeInfo omProductionOrdeInfo) { return toAjax(omProductionOrdeInfoService.insertOmProductionOrdeInfo(omProductionOrdeInfo)); } /** * 生成按钮 */ @PostMapping("/orderSchedulingForBoxCode") public AjaxResult addOrderSchedulingForBoxCode(@RequestBody OmProductionOrdeInfo omProductionOrdeInfo) { //获取当前时间 LocalDateTime date= LocalDateTime.now(); //创建日期时间对象格式化器,日期格式类似: 2023-05-23 22:18:38 DateTimeFormatter formatter= DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); //将时间转化为对应格式的字符串 String fomateDate=date.format(formatter).toString(); Integer startCode = Integer.parseInt(omProductionOrdeInfo.getStartCode());//开始编号 Integer planQty = Math.toIntExact(omProductionOrdeInfo.getPlanQty());//计划数量 String dateTimeRule = omProductionOrdeInfo.getDateTimeRule(); String engineNo = ""; if(planQty>0) { for (int i = 0; i < planQty; i++) { engineNo = omProductionOrdeInfo.getTypeZ() + " " + dateTimeRule + StringUtils.leftPad(String.valueOf(startCode), 3, "0"); BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); bsOrderScheduling.setOrderNo(omProductionOrdeInfo.getWorkOrderNo()); bsOrderScheduling.setModel(omProductionOrdeInfo.getTypeZ()); bsOrderScheduling.setEngineNo(engineNo); bsOrderScheduling.setProductionStatus("1"); bsOrderScheduling.setOperator(getUserName()); bsOrderScheduling.setOperateTime(fomateDate); bsOrderScheduling.setProductType(omProductionOrdeInfo.getTypeL());//产品类型 bsOrderScheduling.setWhetherOrPrint("0"); bsOrderSchedulingService.insertBsOrderScheduling(bsOrderScheduling); startCode++; } //新增机型序号 BsModelNumber bsModelNumber = new BsModelNumber(); bsModelNumber.setModel(omProductionOrdeInfo.getTypeZ()); bsModelNumber.setModelDate(dateTimeRule); bsModelNumber.setMaxnumValue((startCode - 1) + ""); bsModelNumber.setSaveTime(fomateDate); bsModelNumber.setLastNumber((startCode - 1) + ""); bsModelNumberService.insertBsModelNumber(bsModelNumber); } //更新工单状态 omProductionOrdeInfo.setOrderStatus("2"); return toAjax(omProductionOrdeInfoService.updateOmProductionOrdeInfo(omProductionOrdeInfo)); } /** * 修改生产工单 */ @PreAuthorize("@ss.hasPermi('om:productionOrde:edit')") @Log(title = "生产工单", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody OmProductionOrdeInfo omProductionOrdeInfo) { return toAjax(omProductionOrdeInfoService.updateOmProductionOrdeInfo(omProductionOrdeInfo)); } /** * 删除生产工单 */ @PreAuthorize("@ss.hasPermi('om:productionOrde:remove')") @Log(title = "生产工单", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(omProductionOrdeInfoService.deleteOmProductionOrdeInfoByIds(ids)); } /** * table列上移下移 */ @Log(title = "生产工单", businessType = BusinessType.DELETE) @GetMapping("/upDownMove") public AjaxResult upDownMove(OmProductionOrdeInfo omProductionOrdeInfo) { return omProductionOrdeInfoService.upDownMove(omProductionOrdeInfo); } /** * 接收工单 */ @PreAuthorize("@ss.hasPermi('om:productionOrde:receive')") @GetMapping("/getProductionNotice") public AjaxResult getProductionNotice(OmProductionOrdeInfo omProductionOrdeInfo) { String productionNotice = omProductionOrdeInfo.getProductionNotice(); List omProductionOrdeInfos = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo); if(omProductionOrdeInfos.size() == 0){ try { ReceivingServices.insertWebserviceData(productionNotice); } catch (Exception e) { return error("接收失败!请检查通知单号"); } }else { return warn("该通知单已经接收完毕,不能重复接收!"); } return AjaxResult.success("接收成功!"); } }