| | |
| | | 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 cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.jcdm.common.annotation.Log; |
| | | import com.jcdm.common.core.controller.BaseController; |
| | | import com.jcdm.common.core.domain.AjaxResult; |
| | | import com.jcdm.common.core.page.TableDataInfo; |
| | | import com.jcdm.common.enums.BusinessType; |
| | | import com.jcdm.common.exception.ServiceException; |
| | | import com.jcdm.common.utils.poi.ExcelUtil; |
| | | 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.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 org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.Comparator; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static org.apache.commons.lang3.SystemUtils.getUserName; |
| | | |
| | |
| | | public TableDataInfo list(OmProductionOrdeInfo omProductionOrdeInfo) |
| | | { |
| | | startPage(); |
| | | if (StrUtil.isNotBlank(omProductionOrdeInfo.getEngineNo())){ |
| | | BsOrderScheduling bsOrderScheduling = bsOrderSchedulingService.selectBsOrderSchedulingSNCode(omProductionOrdeInfo.getEngineNo()); |
| | | if (ObjectUtil.isNotEmpty(bsOrderScheduling)){ |
| | | String orderNo = bsOrderScheduling.getOrderNo(); |
| | | if (StrUtil.isNotBlank(orderNo)){ |
| | | omProductionOrdeInfo.setWorkOrderNo(orderNo); |
| | | } |
| | | } |
| | | } |
| | | List<OmProductionOrdeInfo> list = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo); |
| | | return getDataTable(list); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取生产工单详细信息 |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('om:productionOrde:query')") |
| | | @GetMapping("/ids/{ids}") |
| | | public AjaxResult getInfo(@PathVariable Long[] ids) |
| | | { |
| | | List<OmProductionOrdeInfo> omProductionOrdeInfos = omProductionOrdeInfoService.selectOmProductionOrderListById(ids); |
| | | if (CollUtil.isNotEmpty(omProductionOrdeInfos)){ |
| | | List<String> collect = omProductionOrdeInfos.stream().map(OmProductionOrdeInfo::getProductCode).distinct().collect(Collectors.toList()); |
| | | if (CollUtil.isNotEmpty(collect)){ |
| | | if (collect.size()>1){ |
| | | return error("存在多个不同的产品编号,请检查"); |
| | | } |
| | | } |
| | | List<String> collect1 = omProductionOrdeInfos.stream().map(OmProductionOrdeInfo::getOrderStatus).distinct().collect(Collectors.toList()); |
| | | if (CollUtil.isNotEmpty(collect1)){ |
| | | if (collect1.size()>1){ |
| | | return error("存在多个不同的工单状态,请检查"); |
| | | } |
| | | } |
| | | } |
| | | return success(omProductionOrdeInfoService.selectOmProductionOrdeInfoByIds(ids)); |
| | | } |
| | | |
| | | /** |
| | | * 新增生产工单 |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('om:productionOrde:add')") |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增生产工单 |
| | | * 生成按钮 |
| | | */ |
| | | @PostMapping("/orderSchedulingForBoxCode") |
| | | public AjaxResult addOrderSchedulingForBoxCode(@RequestBody OmProductionOrdeInfo omProductionOrdeInfo) |
| | | { |
| | | |
| | | //获取当前时间 |
| | | LocalDateTime date= LocalDateTime.now(); |
| | | //创建日期时间对象格式化器,日期格式类似: 2023-05-23 22:18:38 |
| | |
| | | //将时间转化为对应格式的字符串 |
| | | 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());//产品类型 |
| | | bsOrderSchedulingService.insertBsOrderScheduling(bsOrderScheduling); |
| | | startCode++; |
| | | //校验编号重复 |
| | | BsModelNumber bsModelNumberCheck = new BsModelNumber(); |
| | | bsModelNumberCheck.setModel(omProductionOrdeInfo.getTypeZ()); |
| | | bsModelNumberCheck.setModelDate(dateTimeRule); |
| | | List<BsModelNumber> numbers = bsModelNumberService.selectBsModelNumberList(bsModelNumberCheck); |
| | | BsModelNumber bsModelNumber = new BsModelNumber(); |
| | | Integer maxNum = 0; |
| | | if (CollUtil.isNotEmpty(numbers)){ |
| | | bsModelNumber = numbers.get(0); |
| | | String maxnumValue = bsModelNumber.getMaxnumValue(); |
| | | if (StrUtil.isNotBlank(maxnumValue)){ |
| | | maxNum = Integer.parseInt(maxnumValue); |
| | | } |
| | | |
| | | //新增机型序号 |
| | | BsModelNumber bsModelNumber = new BsModelNumber(); |
| | | bsModelNumber.setModel(omProductionOrdeInfo.getTypeZ()); |
| | | bsModelNumber.setModelDate(dateTimeRule); |
| | | } |
| | | if (startCode<=maxNum){ |
| | | return AjaxResult.error("编号重复,请检查!"); |
| | | } |
| | | Long[] id=omProductionOrdeInfo.getIdNums(); |
| | | List<OmProductionOrdeInfo> omProductionOrdeInfoList = omProductionOrdeInfoService.selectOmProductionOrderListById(id); |
| | | if (CollUtil.isNotEmpty(omProductionOrdeInfoList)){ |
| | | omProductionOrdeInfoList.forEach(x -> { |
| | | if (ObjectUtil.isNotNull(x.getWorkOrderNo())){ |
| | | long l = Long.parseLong(x.getWorkOrderNo()); |
| | | x.setWorkOrderNoLong(l); |
| | | } |
| | | }); |
| | | List<OmProductionOrdeInfo> sortList = omProductionOrdeInfoList.stream().sorted(Comparator.comparing(OmProductionOrdeInfo::getWorkOrderNoLong)).collect(Collectors.toList()); |
| | | for (OmProductionOrdeInfo ProductionOrde : sortList) { |
| | | Integer planQty = Math.toIntExact(ProductionOrde.getPlanQty());//计划数量 |
| | | if(planQty>0) { |
| | | for (int i = 0; i < planQty; i++) { |
| | | String engineNo = omProductionOrdeInfo.getTypeZ() + " " + dateTimeRule + StringUtils.leftPad(String.valueOf(startCode), 3, "0"); |
| | | BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); |
| | | bsOrderScheduling.setOrderNo(ProductionOrde.getWorkOrderNo()); |
| | | bsOrderScheduling.setWorkingHours(String.valueOf(i+1)); |
| | | bsOrderScheduling.setModel(ProductionOrde.getTypeZ()); |
| | | bsOrderScheduling.setEngineNo(engineNo); |
| | | bsOrderScheduling.setProductionStatus("1"); |
| | | bsOrderScheduling.setOperator(getUserName()); |
| | | bsOrderScheduling.setOperateTime(fomateDate); |
| | | bsOrderScheduling.setProductType(ProductionOrde.getTypeL());//产品类型 |
| | | bsOrderScheduling.setWhetherOrPrint("0"); |
| | | bsOrderSchedulingService.insertBsOrderScheduling(bsOrderScheduling); |
| | | startCode++; |
| | | } |
| | | } |
| | | //更新工单状态 |
| | | ProductionOrde.setOrderStatus("2"); |
| | | omProductionOrdeInfoService.updateOmProductionOrdeInfo(ProductionOrde); |
| | | } |
| | | } |
| | | //新增机型序号 |
| | | if (ObjectUtil.isNotNull(bsModelNumber.getId())){ |
| | | bsModelNumber.setMaxnumValue((startCode - 1) + ""); |
| | | bsModelNumber.setSaveTime(fomateDate); |
| | | bsModelNumber.setLastNumber((startCode - 1) + ""); |
| | | bsModelNumberService.insertBsModelNumber(bsModelNumber); |
| | | bsModelNumberService.updateBsModelNumber(bsModelNumber); |
| | | } else { |
| | | BsModelNumber bsModelNumberSave = new BsModelNumber(); |
| | | bsModelNumberSave.setModel(omProductionOrdeInfo.getTypeZ()); |
| | | bsModelNumberSave.setModelDate(dateTimeRule); |
| | | bsModelNumberSave.setMaxnumValue((startCode - 1) + ""); |
| | | bsModelNumberSave.setSaveTime(fomateDate); |
| | | bsModelNumberSave.setLastNumber((startCode - 1) + ""); |
| | | bsModelNumberService.insertBsModelNumber(bsModelNumberSave); |
| | | } |
| | | //更新工单状态 |
| | | omProductionOrdeInfo.setOrderStatus("2"); |
| | | return toAjax(omProductionOrdeInfoService.updateOmProductionOrdeInfo(omProductionOrdeInfo)); |
| | | |
| | | |
| | | return toAjax(1); |
| | | } |
| | | |
| | | /** |
| | |
| | | @GetMapping("/getProductionNotice") |
| | | public AjaxResult getProductionNotice(OmProductionOrdeInfo omProductionOrdeInfo) |
| | | { |
| | | String factory = omProductionOrdeInfo.getWorkshopCode(); |
| | | String productionNotice = omProductionOrdeInfo.getProductionNotice(); |
| | | List<OmProductionOrdeInfo> omProductionOrdeInfos = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo); |
| | | if(omProductionOrdeInfos.size() == 0){ |
| | | if (StrUtil.isBlank(productionNotice)){ |
| | | throw new ServiceException("请输入生产通知单号"); |
| | | } |
| | | if (StrUtil.isBlank(factory)){ |
| | | throw new ServiceException("请选择工厂编号"); |
| | | } |
| | | OmProductionOrdeInfo queryProductOrder = new OmProductionOrdeInfo(); |
| | | queryProductOrder.setWorkshopCode(factory); |
| | | queryProductOrder.setProductionNotice(productionNotice); |
| | | List<OmProductionOrdeInfo> omProductionOrdeInfos = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(queryProductOrder); |
| | | if(CollUtil.isEmpty(omProductionOrdeInfos)){ |
| | | try { |
| | | ReceivingServices.insertWebserviceData(productionNotice); |
| | | logger.info("接收工单号:,{}",productionNotice); |
| | | ReceivingServices.insertWebserviceData(factory,productionNotice); |
| | | } catch (Exception e) { |
| | | return error("接收失败!请检查通知单号"); |
| | | } |
| | | }else { |
| | | return warn("该订单已接收完毕,不能重复接收!"); |
| | | return warn("该通知单已经接收完毕,不能重复接收!"); |
| | | } |
| | | return AjaxResult.success("接收成功!"); |
| | | } |