diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java index 5d1cc66..a94f235 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java @@ -10,6 +10,7 @@ import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.agv.ndcone.AgvNdcOneDeviceDriver; import org.nl.acs.device_driver.agv.ndctwo.AgvNdcTwoDeviceDriver; import org.nl.acs.device_driver.autodoor.standard_autodoor.StandardAutodoorDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.lamp_three_color.LampThreecolorDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.domain.Instruction; @@ -171,6 +172,8 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { String emptyNum = null; //自动门 StandardAutodoorDeviceDriver standardAutodoorDeviceDriver; + //报警灯 + LampThreecolorDeviceDriver lampThreecolorDeviceDriver; if (agvaddr != 0) { old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); if (StrUtil.contains(old_device_code, "-")) { @@ -201,7 +204,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } //任务完毕 //(无车id及状态) - else if (phase == 0x14) { + else if (phase == 0x0A) { if (ObjectUtil.isEmpty(inst)) { log.info("未找到指令号{}对应的指令", ikey); } else { @@ -248,18 +251,41 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (ObjectUtil.isNotEmpty(device)) { if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - try { - standardAutodoorDeviceDriver.writing("to_open", "1"); - standardAutodoorDeviceDriver.writing("to_close", "0"); - } catch (Exception e) { - log.info("下发电气信号失败:" + e.getMessage()); - e.printStackTrace(); - } - if (standardAutodoorDeviceDriver.getOpen() == 1 && standardAutodoorDeviceDriver.getToOpen() == 1) { - log.info("下发开门信号值为:{},读取开门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getOpen()); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + String link_three_lamp = device.getExtraValue().get("link_three_lamp").toString(); + if (StrUtil.isNotEmpty(link_three_lamp)) { + Device code = deviceAppService.findDeviceByCode(link_three_lamp); + if (code.getDeviceDriver() instanceof LampThreecolorDeviceDriver) { + lampThreecolorDeviceDriver = (LampThreecolorDeviceDriver) code.getDeviceDriver(); + lampThreecolorDeviceDriver.writing("to_command", "1"); + } + Thread.sleep(5000); + try { + standardAutodoorDeviceDriver.writing("to_open", "0"); + standardAutodoorDeviceDriver.writing("to_close", "1"); + } catch (Exception e) { + log.info("下发电气信号失败:" + e.getMessage()); + e.printStackTrace(); + } + if (standardAutodoorDeviceDriver.getClose() == 1) { + log.info("读取关门信号值为:{}", standardAutodoorDeviceDriver.getClose()); + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } else { + log.info("未下发NDC信号原因: 读取关门信号值为:{}", standardAutodoorDeviceDriver.getClose()); + } } else { - log.info("未下发NDC信号原因: 下发开门信号值为:{},读取开门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getToClose()); + try { + standardAutodoorDeviceDriver.writing("to_open", "1"); + standardAutodoorDeviceDriver.writing("to_close", "0"); + } catch (Exception e) { + log.info("下发电气信号失败:" + e.getMessage()); + e.printStackTrace(); + } + if (standardAutodoorDeviceDriver.getOpen() == 1 && standardAutodoorDeviceDriver.getToOpen() == 1) { + log.info("下发开门信号值为:{},读取开门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getOpen()); + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } else { + log.info("未下发NDC信号原因: 下发开门信号值为:{},读取开门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getToClose()); + } } } } else { @@ -274,18 +300,35 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (ObjectUtil.isNotEmpty(device)) { if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - try { - standardAutodoorDeviceDriver.writing("to_close", "1"); - standardAutodoorDeviceDriver.writing("to_open", "0"); - } catch (Exception e) { - log.info("下发电气信号失败:" + e.getMessage()); - e.printStackTrace(); - } - if (standardAutodoorDeviceDriver.getClose() == 1) { - log.info("读取关门信号值为:{}", standardAutodoorDeviceDriver.getClose()); + String link_three_lamp = device.getExtraValue().get("link_three_lamp").toString(); + if (StrUtil.isNotEmpty(link_three_lamp)) { + Device code = deviceAppService.findDeviceByCode(link_three_lamp); + if (code.getDeviceDriver() instanceof LampThreecolorDeviceDriver) { + lampThreecolorDeviceDriver = (LampThreecolorDeviceDriver) code.getDeviceDriver(); + lampThreecolorDeviceDriver.writing("to_command", "0"); + } + try { + standardAutodoorDeviceDriver.writing("to_open", "0"); + standardAutodoorDeviceDriver.writing("to_close", "0"); + } catch (Exception e) { + log.info("下发电气信号失败:" + e.getMessage()); + e.printStackTrace(); + } data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); } else { - log.info("未下发NDC信号原因: 读取关门信号值为:{}", standardAutodoorDeviceDriver.getClose()); + try { + standardAutodoorDeviceDriver.writing("to_close", "1"); + standardAutodoorDeviceDriver.writing("to_open", "0"); + } catch (Exception e) { + log.info("下发电气信号失败:" + e.getMessage()); + e.printStackTrace(); + } + if (standardAutodoorDeviceDriver.getClose() == 1) { + log.info("读取关门信号值为:{}", standardAutodoorDeviceDriver.getClose()); + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } else { + log.info("未下发NDC信号原因: 读取关门信号值为:{}", standardAutodoorDeviceDriver.getClose()); + } } } } else { @@ -304,9 +347,6 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (device.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) device.getDeviceDriver(); agvNdcTwoDeviceDriver.processSocket(arr); - } else if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { - agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); - agvNdcOneDeviceDriver.processSocket(arr); } } else { log.info("当前phase:" + phase + "未找到对应设备"); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java index ba3609b..d136e02 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java @@ -20,6 +20,7 @@ public class CommonFinalParam { public static final String ONE = "1"; public static final String TWO = "2"; + public static final String FINISHED = "2"; public static final String THREE = "3"; public static final String FOUR = "4"; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/controller/MaterialbaseController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/controller/MaterialbaseController.java new file mode 100644 index 0000000..0fcfd6e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/controller/MaterialbaseController.java @@ -0,0 +1,75 @@ +package org.nl.acs.data.controller; + + +import com.alibaba.fastjson.JSONArray; +import org.nl.acs.data.domain.Materialbase; +import org.nl.acs.data.domain.MaterialbaseQuery; +import org.nl.acs.data.service.IMaterialbaseService; +import org.nl.acs.point.domain.AcsPoint; +import org.nl.acs.point.domain.PointQuery; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Set; + +/** + *

+ * 物料基本信息表 前端控制器 + *

+ * + * @author tuqiang + * @since 2024-10-10 + */ +@RestController +@RequestMapping("/api/materialbase") +public class MaterialbaseController { + + @Autowired + private IMaterialbaseService materialbaseService; + + @GetMapping + @Log("查询物料管理") + //@SaCheckPermission("@el.check('schBasePoint:list')") + public ResponseEntity query(MaterialbaseQuery whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(materialbaseService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增物料管理") + //@SaCheckPermission("@el.check('schBasePoint:add')") + public ResponseEntity create(@Validated @RequestBody Materialbase entity) { + materialbaseService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改物料管理") + //@SaCheckPermission("@el.check('schBasePoint:edit')") + public ResponseEntity update(@Validated @RequestBody Materialbase entity) { + materialbaseService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除物料管理") + //@SaCheckPermission("@el.check('schBasePoint:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + materialbaseService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/getBoxIvt") + @Log("查询所有物料") + + public ResponseEntity getBoxIvt() { + return new ResponseEntity<>(materialbaseService.getBoxIvt(), HttpStatus.OK); + } + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/domain/Materialbase.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/domain/Materialbase.java new file mode 100644 index 0000000..bf8ff57 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/domain/Materialbase.java @@ -0,0 +1,69 @@ +package org.nl.acs.data.domain; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + *

+ * 物料基本信息表 + *

+ * + * @author tuqiang + * @since 2024-10-10 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("materialbase") +@ApiModel(value="Materialbase对象", description="物料基本信息表") +public class Materialbase implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "物料标识") + @TableId + private String material_id; + + @ApiModelProperty(value = "物料编码") + private String material_code; + + @ApiModelProperty(value = "物料名称 ") + private String material_name; + + @ApiModelProperty(value = "基本计量单位") + private String base_unit_id; + + @ApiModelProperty(value = "创建人") + private Long create_id; + + @ApiModelProperty(value = "创建人姓名") + private String create_name; + + @ApiModelProperty(value = "创建时间") + private String create_time; + + @ApiModelProperty(value = "修改人") + private Long update_optid; + + @ApiModelProperty(value = "修改人姓名") + private String update_optname; + + @ApiModelProperty(value = "修改时间") + private String update_time; + + private float qty; + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/domain/MaterialbaseQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/domain/MaterialbaseQuery.java new file mode 100644 index 0000000..c57245a --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/domain/MaterialbaseQuery.java @@ -0,0 +1,10 @@ +package org.nl.acs.data.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class MaterialbaseQuery implements Serializable { + private String search; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/mapper/MaterialbaseMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/mapper/MaterialbaseMapper.java new file mode 100644 index 0000000..a68e7cf --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/mapper/MaterialbaseMapper.java @@ -0,0 +1,16 @@ +package org.nl.acs.data.mapper; + +import org.nl.acs.data.domain.Materialbase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 物料基本信息表 Mapper 接口 + *

+ * + * @author tuqiang + * @since 2024-10-10 + */ +public interface MaterialbaseMapper extends BaseMapper { + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/service/IMaterialbaseService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/service/IMaterialbaseService.java new file mode 100644 index 0000000..d95ce19 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/service/IMaterialbaseService.java @@ -0,0 +1,59 @@ +package org.nl.acs.data.service; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.fasterxml.jackson.core.JsonProcessingException; +import org.nl.acs.data.domain.Materialbase; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.data.domain.MaterialbaseQuery; +import org.nl.acs.data.mapper.MaterialbaseMapper; +import org.nl.acs.point.domain.AcsPoint; +import org.nl.acs.point.domain.PointQuery; +import org.nl.common.domain.query.PageQuery; + +import java.util.Set; + +/** + *

+ * 物料基本信息表 服务类 + *

+ * + * @author tuqiang + * @since 2024-10-10 + */ +public interface IMaterialbaseService extends IService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(MaterialbaseQuery whereJson, PageQuery pageable); + + /** + * 创建 + * + * @param entity / + */ + void create(Materialbase entity); + + /** + * 编辑 + * + * @param entity / + */ + void update(Materialbase entity); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); + + JSONArray getBoxIvt(); + + Materialbase findByCode(String code); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/service/impl/MaterialbaseServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/service/impl/MaterialbaseServiceImpl.java new file mode 100644 index 0000000..0d32445 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/data/service/impl/MaterialbaseServiceImpl.java @@ -0,0 +1,115 @@ +package org.nl.acs.data.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.nl.acs.data.domain.Materialbase; +import org.nl.acs.data.domain.MaterialbaseQuery; +import org.nl.acs.data.mapper.MaterialbaseMapper; +import org.nl.acs.data.service.IMaterialbaseService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.acs.point.domain.AcsPoint; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; + +/** + *

+ * 物料基本信息表 服务实现类 + *

+ * + * @author tuqiang + * @since 2024-10-10 + */ +@Service +public class MaterialbaseServiceImpl extends ServiceImpl implements IMaterialbaseService { + + @Autowired + private MaterialbaseMapper materialbaseMapper; + + @Override + public IPage queryAll(MaterialbaseQuery whereJson, PageQuery page) { + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + LambdaQueryWrapper materialbaseLambdaQueryWrapper = Wrappers.lambdaQuery(Materialbase.class); + if (StrUtil.isNotEmpty(whereJson.getSearch())) { + materialbaseLambdaQueryWrapper.and(wrapper -> { + wrapper.like(StrUtil.isNotEmpty(whereJson.getSearch()), Materialbase::getMaterial_code, whereJson.getSearch()) + .or() + .like(StrUtil.isNotEmpty(whereJson.getSearch()), Materialbase::getMaterial_name, whereJson.getSearch()); + }); + } + pages = materialbaseMapper.selectPage(pages, materialbaseLambdaQueryWrapper); + return pages; + } + + @Override + public void create(Materialbase entity) { + String material_code = entity.getMaterial_code(); + Materialbase materialbase = materialbaseMapper.selectOne(new LambdaQueryWrapper().eq(Materialbase::getMaterial_code, material_code)); + if (ObjectUtil.isNotEmpty(materialbase)) { + throw new RuntimeException("存在相同的物料编码"); + } + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + String currentUserId = SecurityUtils.getCurrentUserId(); + entity.setMaterial_id(IdUtil.getSnowflake(1, 1).nextId()+""); + entity.setCreate_id(Long.getLong(currentUserId)); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_optid(Long.getLong(currentUserId)); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + materialbaseMapper.insert(entity); + } + + @Override + public void update(Materialbase entity) { + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + String currentUserId = SecurityUtils.getCurrentUserId(); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + entity.setUpdate_optid(Long.getLong(currentUserId)); + materialbaseMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + materialbaseMapper.deleteBatchIds(ids); + } + + @Override + public JSONArray getBoxIvt() { + List list = materialbaseMapper.selectList(null); + if (list != null){ + ObjectMapper objectMapper = new ObjectMapper(); + String value = null; + try { + value = objectMapper.writeValueAsString(list); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return JSON.parseArray(value); + } + return null; + } + + @Override + public Materialbase findByCode(String code) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper().eq(Materialbase::getMaterial_code, code); + return materialbaseMapper.selectOne(wrapper); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index 8052ea6..25ee36a 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -15,15 +15,8 @@ import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.FeedLmsRealFailed; import org.nl.acs.device_driver.agv.utils.TwoAgvPhase; -import org.nl.acs.device_driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; -import org.nl.acs.device_driver.paper_tube_pick_site.PaperTubePickSiteDeviceDriver; -import org.nl.acs.device_driver.storage.standard_storage.StandardStorageDeviceDriver; import org.nl.acs.device_driver.driver.AbstractDeviceDriver; -import org.nl.acs.device_driver.two_conveyor.hongxiang_conveyor.HongXiangStationDeviceDriver; -import org.nl.acs.device_driver.two_conveyor.manipulator_agv_station.ManipulatorAgvStationDeviceDriver; -import org.nl.acs.device_driver.two_conveyor.ranging_stations.RangingStationsDeviceDriver; -import org.nl.acs.device_driver.two_conveyor.waste_foil_weighing_station.WasteFoilWeighingStationDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.history.ErrorUtil; @@ -41,14 +34,10 @@ import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; import org.nl.config.lucene.service.LuceneExecuteLogService; import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.config.thread.ThreadPoolExecutorUtil; import org.nl.system.service.param.ISysParamService; import org.nl.config.SpringContextHolder; - -import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.Map; -import java.util.concurrent.ThreadPoolExecutor; + /** @@ -165,20 +154,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //普通站点 StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - //货架 - StandardStorageDeviceDriver standardStorageDeviceDriver; - //纸管抓取位 - PaperTubePickSiteDeviceDriver paperTubePickSiteDeviceDriver; - //标准-光电检测 - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - //烘箱对接位 - HongXiangStationDeviceDriver hongXiangStationDeviceDriver; - //行架-agv对接位 - ManipulatorAgvStationDeviceDriver manipulatorAgvStationDeviceDriver; - //行架-agv对接位 - RangingStationsDeviceDriver rangingStationsDeviceDriver; - //废箔称重位 - WasteFoilWeighingStationDriver wasteFoilWeighingStationDriver; + if (phase == 0x02) { if (ObjectUtil.isEmpty(inst)) { @@ -236,129 +212,8 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (ObjectUtil.isNotEmpty(device.getExtraValue().get("wait")) - && StrUtil.equals("true", device.getExtraValue().get("wait").toString()) - && StrUtil.equals(task.getTask_type(), "1")) { - if (standardOrdinarySiteDeviceDriver.getOption() == 1) { - String task_code = standardOrdinarySiteDeviceDriver.getTask_code(); - log.info("当前任务号{},创建任务号{}", task.getTask_code(), task_code); - if (StrUtil.isEmpty(task_code) || !task_code.equals(task.getTask_code())) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("任务号为空") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - log.info("等待LMS系统进行确认允许取货,设备号{},option值{}", standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); - logServer.deviceExecuteLog(this.device_code, "", "", "等待LMS系统进行确认允许取货,设备号" + device.getDevice_code() + ",指令号" + ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) - .content("等待LMS系统进行确认允许取货,设备号" + standardOrdinarySiteDeviceDriver.getDevice_code() + ",option当前值" + standardOrdinarySiteDeviceDriver.getOption()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - try { - standardInspectSiteDeviceDriver.writing(1); - } catch (Exception e) { - e.printStackTrace(); - } - if ((standardInspectSiteDeviceDriver.getMove() == 1 && standardInspectSiteDeviceDriver.getAction() == 1 - && standardInspectSiteDeviceDriver.getError() == 0)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + "报警信号:" + standardInspectSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - try { - manipulatorAgvStationDeviceDriver.writing(2); - } catch (Exception e) { - e.printStackTrace(); - } - if ((manipulatorAgvStationDeviceDriver.getAction() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - log.info("设备{},动作信号{} ,不满足取货条件,指令号{}", manipulatorAgvStationDeviceDriver.getDeviceCode(), manipulatorAgvStationDeviceDriver.getAction(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDeviceCode()) - .content(manipulatorAgvStationDeviceDriver.getDevice_code() + "动作信号不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - try { - hongXiangStationDeviceDriver.writing(1); - } catch (Exception e) { - e.printStackTrace(); - } - if (hongXiangStationDeviceDriver.getMove() > 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + hongXiangStationDeviceDriver.getMove() + "无货不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { - paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); - try { - paperTubePickSiteDeviceDriver.writing(2); - } catch (Exception e) { - e.printStackTrace(); - } - if (paperTubePickSiteDeviceDriver.getAction() == 1 - && paperTubePickSiteDeviceDriver.getError() == 0 && paperTubePickSiteDeviceDriver.getMode() == 2) { + //放货确认 + if (standardOrdinarySiteDeviceDriver.getOption() == 1) { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(this.getDeviceCode()) @@ -366,95 +221,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); + standardOrdinarySiteDeviceDriver.setOption(0); } else { - message = "设备号:" + device_code + ",动作信号:" + paperTubePickSiteDeviceDriver.getAction() + "报警信号:" + paperTubePickSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - }/* else if (device.getDeviceDriver() instanceof RangingStationsDeviceDriver) { - rangingStationsDeviceDriver = (RangingStationsDeviceDriver) device.getDeviceDriver(); - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - String device_code1 = device.getDevice_code(); - String length1 = rangingStationsDeviceDriver.getLength1(); - String length2 = rangingStationsDeviceDriver.getLength2(); - Float len1 = 0.0F; - Float len2 = 0.0F; - if (ObjectUtil.isNotEmpty(length1) && !"null".equals(length1) && ObjectUtil.isNotEmpty(length2) && !"null".equals(length2)) { - len1 = Float.parseFloat(length1); - len2 = Float.parseFloat(length2); - } - if (len1 * len2 < 0) { - if (ObjectUtil.isNotEmpty(device_code1) && (('A') == (device_code1.charAt(device_code1.length() - 1)))) { - String offSet_A = paramService.findByCode(AcsConfig.OFFSET_A).getValue(); - if (ObjectUtil.isNotEmpty(offSet_A) && !"null".equals(offSet_A)) { - Integer integer = Integer.valueOf(offSet_A); - len1 = len1 - integer; - } - } else if (ObjectUtil.isNotEmpty(device_code1) && (('B') == (device_code1.charAt(device_code1.length() - 1)))) { - String offSet_B = paramService.findByCode(AcsConfig.OFFSET_B).getValue(); - if (ObjectUtil.isNotEmpty(offSet_B) && !"null".equals(offSet_B)) { - Integer integer = Integer.valueOf(offSet_B); - len1 = integer + len1; - } - } else { - log.info("{}设备名不符合条件,指令号{}", device_code, ikey); - } - int roundedNumber = ObjectUtil.isNotEmpty(len1) ? NumberUtil.round(len1, 0).intValue() : 0; - if (roundedNumber == 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, roundedNumber); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (roundedNumber > -50 || roundedNumber < 50) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 1, roundedNumber); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (roundedNumber > 50 || roundedNumber < -50) { - log.info("设备{},偏移数据超出范围导致未反馈{},指令号{}", device_code, roundedNumber, ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content(device_code + "设备,偏移数据超出范围导致未反馈" + roundedNumber + "指令号" + ikey) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - log.info("设备{},偏移数据出错导致未反馈{},指令号{}", device_code, rangingStationsDeviceDriver.getLength1() + "," + rangingStationsDeviceDriver.getLength2(), ikey); - } - }*/ else if (device.getDeviceDriver() instanceof WasteFoilWeighingStationDriver) { - wasteFoilWeighingStationDriver = (WasteFoilWeighingStationDriver) device.getDeviceDriver(); - if (wasteFoilWeighingStationDriver.getMove() == 1 && wasteFoilWeighingStationDriver.getAction() == 1 - && wasteFoilWeighingStationDriver.getError() == 0 && wasteFoilWeighingStationDriver.getMode() == 2) { - try { - Map map = new LinkedHashMap<>(); - map.put("to_command", "2"); - wasteFoilWeighingStationDriver.writing(map); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } catch (Exception e) { - e.printStackTrace(); - } - } else { - message = "设备号:" + device_code + "光电信号:" + wasteFoilWeighingStationDriver.getMove() + ",动作信号:" + wasteFoilWeighingStationDriver.getAction() + "报警信号:" + wasteFoilWeighingStationDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; + log.info("等待一体机进行放货确认,设备号{},option值{}", standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); + logServer.deviceExecuteLog(this.device_code, "", "", "等待一体机进行放货确认,设备号" + device.getDevice_code() + ",指令号" + ikey); LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) + .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) + .content("等待一体机进行放货确认,设备号" + standardOrdinarySiteDeviceDriver.getDevice_code() + ",option当前值" + standardOrdinarySiteDeviceDriver.getOption()) .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); @@ -522,169 +295,6 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (ObjectUtil.isNotEmpty(this.device.getExtraValue().get("wait")) - && StrUtil.equals("true", this.device.getExtraValue().get("wait").toString()) - && StrUtil.equals(task.getTask_type(), "1")) { - standardOrdinarySiteDeviceDriver.setOption(0); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - String task_code = inst.getTask_code(); - if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("feedbackToLms")) - && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("feedbackToLms").toString())) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("task_code", task_code); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) - .content("取货完成反馈:" + jsonObject.toJSONString() + ";设备:" + standardOrdinarySiteDeviceDriver.getDeviceCode()) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - acsToWmsService.actionFinishRequest2(jsonObject); - } - this.setPhase(phase); - } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - try { - manipulatorAgvStationDeviceDriver.writing(3); - } catch (Exception e) { - e.printStackTrace(); - } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - String task_code = inst.getTask_code(); - if (ObjectUtil.isNotEmpty(manipulatorAgvStationDeviceDriver.getDevice().getExtraValue().get("feedbackToLms")) - && StrUtil.equals("true", manipulatorAgvStationDeviceDriver.getDevice().getExtraValue().get("feedbackToLms").toString())) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("task_code", task_code); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDevice_code()) - .content("取货完成反馈:" + jsonObject.toJSONString() + ";设备:" + manipulatorAgvStationDeviceDriver.getDeviceCode()) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - acsToWmsService.actionFinishRequest2(jsonObject); - } - } else if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - try { - hongXiangStationDeviceDriver.writing(0); - } catch (Exception e) { - e.printStackTrace(); - } - if (hongXiangStationDeviceDriver.getMove() > 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + hongXiangStationDeviceDriver.getMove() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { - paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); - try { - paperTubePickSiteDeviceDriver.writing(3); - } catch (Exception e) { - e.printStackTrace(); - } - if (paperTubePickSiteDeviceDriver.getAction() == 1 - && paperTubePickSiteDeviceDriver.getError() == 0 && paperTubePickSiteDeviceDriver.getMode() == 2) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + paperTubePickSiteDeviceDriver.getAction() + "报警信号:" + paperTubePickSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - - try { - standardInspectSiteDeviceDriver.writing(0); - } catch (Exception e) { - e.printStackTrace(); - } - if ((standardInspectSiteDeviceDriver.getMove() != 1 && standardInspectSiteDeviceDriver.getAction() == 1 && standardInspectSiteDeviceDriver.getError() == 0)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + "报警信号:" + standardInspectSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof WasteFoilWeighingStationDriver) { - wasteFoilWeighingStationDriver = (WasteFoilWeighingStationDriver) device.getDeviceDriver(); - if (wasteFoilWeighingStationDriver.getMove() == 0 && wasteFoilWeighingStationDriver.getAction() == 1 - && wasteFoilWeighingStationDriver.getError() == 0 && wasteFoilWeighingStationDriver.getMode() == 2) { - try { - Map map = new LinkedHashMap<>(); - map.put("to_command", "3"); - wasteFoilWeighingStationDriver.writing(map); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } catch (Exception e) { - e.printStackTrace(); - } - } else { - message = "设备号:" + device_code + "光电信号:" + wasteFoilWeighingStationDriver.getMove() + ",动作信号:" + wasteFoilWeighingStationDriver.getAction() + "报警信号:" + wasteFoilWeighingStationDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(this.getDeviceCode()) @@ -692,10 +302,15 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); + standardOrdinarySiteDeviceDriver.setAgvphase(phase); + standardOrdinarySiteDeviceDriver.setIndex(index); + standardOrdinarySiteDeviceDriver.setInst(inst); } } - //到达取货点(Itype=1、3,需要WCS反馈) - else if (phase == 0x08) { + + // 到达放货点 + //(Itype=1/2/3,需要WCS反馈) + else if (phase == 0x07) { if (agvaddr == 0) { agvaddr = agvaddr_copy; } @@ -709,8 +324,8 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic return; } if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); CommonFinalParam commonFinalParam = new CommonFinalParam(); + old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { String[] point = old_device_code.split(commonFinalParam.getBARRE()); device_code = point[0]; @@ -722,6 +337,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic device_code = old_device_code; } } + device = deviceAppService.findDeviceByCode(device_code); if (ObjectUtil.isEmpty(device_code)) { log.info(agvaddr + "对应设备号为空!"); @@ -731,115 +347,10 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic log.info("未找到指令号{}对应的指令", ikey); return; } - if (ObjectUtil.isEmpty(inst.getCarno())) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - - String agv_inst_type = inst.getAgv_inst_type(); if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait")) - && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString())) { - if (standardOrdinarySiteDeviceDriver.getOption() == 1) { - standardOrdinarySiteDeviceDriver.setAgvphase(0); - String task_code = standardOrdinarySiteDeviceDriver.getTask_code(); - log.info("当前任务号{},创建任务号{}", task.getTask_code(), task_code); - if (StrUtil.isEmpty(task_code) || !task_code.equals(task.getTask_code())) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("任务号为空!") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - log.info("等待LMS系统进行确认允许取货,设备号{},option值{}", standardOrdinarySiteDeviceDriver.getDeviceCode(), standardOrdinarySiteDeviceDriver.getOption()); - message = "等待LMS系统进行确认允许取货,设备号:" + standardOrdinarySiteDeviceDriver.getDeviceCode() + ",option值:" + standardOrdinarySiteDeviceDriver.getOption(); - logServer.deviceExecuteLog(standardOrdinarySiteDeviceDriver.getDeviceCode(), "", "", "等待LMS系统进行确认允许取货,设备号" + device.getDevice_code()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(standardOrdinarySiteDeviceDriver.getDeviceCode()) - .content(standardOrdinarySiteDeviceDriver.getDevice_code() + "option值不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - - try { - manipulatorAgvStationDeviceDriver.writing(2); - } catch (Exception e) { - e.printStackTrace(); - } - if ((manipulatorAgvStationDeviceDriver.getAction() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + manipulatorAgvStationDeviceDriver.getAction() + "报警信号:" + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDevice_code()) - .content(manipulatorAgvStationDeviceDriver.getDevice_code() + "动作信号不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { - paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); - try { - paperTubePickSiteDeviceDriver.writing(2); - } catch (Exception e) { - e.printStackTrace(); - } - if (paperTubePickSiteDeviceDriver.getAction() == 1 - && paperTubePickSiteDeviceDriver.getError() == 0 && paperTubePickSiteDeviceDriver.getMode() == 2) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + paperTubePickSiteDeviceDriver.getAction() + "报警信号:" + paperTubePickSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - try { - hongXiangStationDeviceDriver.writing(1); - } catch (Exception e) { - e.printStackTrace(); - } - if (hongXiangStationDeviceDriver.getMove() > 0) { + //卸货确认 + if (standardOrdinarySiteDeviceDriver.getOption() == 2) { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(this.getDeviceCode()) @@ -847,102 +358,33 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); + standardOrdinarySiteDeviceDriver.setOption(0); } else { - message = "设备号:" + device_code + "光电信号:" + hongXiangStationDeviceDriver.getMove() + ",指令号:" + ikey + "不满足取货条件"; + log.info("等待一体机进行卸货确认,设备号{},option值{}", standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); + logServer.deviceExecuteLog(this.device_code, "", "", "等待一体机进行卸货确认,设备号" + device.getDevice_code() + ",指令号" + ikey); LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) + .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) + .content("等待一体机进行卸货确认,设备号" + standardOrdinarySiteDeviceDriver.getDevice_code() + ",option当前值" + standardOrdinarySiteDeviceDriver.getOption()) .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); } - } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - try { - standardInspectSiteDeviceDriver.writing(1); - } catch (Exception e) { - e.printStackTrace(); - } - if ((standardInspectSiteDeviceDriver.getMove() == 1 && standardInspectSiteDeviceDriver.getAction() == 1 && standardInspectSiteDeviceDriver.getError() == 0)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + "报警信号:" + standardInspectSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - }/* else if (device.getDeviceDriver() instanceof RangingStationsDeviceDriver) { - rangingStationsDeviceDriver = (RangingStationsDeviceDriver) device.getDeviceDriver(); - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - String device_code1 = device.getDevice_code(); - String length1 = rangingStationsDeviceDriver.getLength1(); - String length2 = rangingStationsDeviceDriver.getLength2(); - Float len1 = 0.0F; - Float len2 = 0.0F; - if (ObjectUtil.isNotEmpty(length1) && !"null".equals(length1) && ObjectUtil.isNotEmpty(length2) && !"null".equals(length2)) { - len1 = Float.parseFloat(length1); - len2 = Float.parseFloat(length2); - } - if (len1 * len2 < 1) { - if (ObjectUtil.isNotEmpty(device_code1) && device_code1.contains("A")) { - String offSet_A = paramService.findByCode(AcsConfig.OFFSET_A).getValue(); - if (ObjectUtil.isNotEmpty(offSet_A) && !"null".equals(offSet_A)) { - Integer integer = Integer.valueOf(offSet_A); - len1 = len1 - integer; - } - } else if (ObjectUtil.isNotEmpty(device_code1) && device_code1.contains("B")) { - String offSet_B = paramService.findByCode(AcsConfig.OFFSET_B).getValue(); - if (ObjectUtil.isNotEmpty(offSet_B) && !"null".equals(offSet_B)) { - Integer integer = Integer.valueOf(offSet_B); - len1 = integer + len1; - } - } else { - log.info("{}设备名不符合条件,指令号{}", device_code, ikey); - } - int roundedNumber = ObjectUtil.isNotEmpty(len1) ? NumberUtil.round(len1, 0).intValue() : 0; - if (roundedNumber == 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, roundedNumber); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (roundedNumber > -50 || roundedNumber < 50) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 1, roundedNumber); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (roundedNumber > 50 || roundedNumber < -50) { - log.info("设备{},偏移数据超出范围导致未反馈{},指令号{}", device_code, roundedNumber, ikey); - } - } else { - log.info("设备{},偏移数据出错导致未反馈{},指令号{}", device_code, rangingStationsDeviceDriver.getLength1() + "," + rangingStationsDeviceDriver.getLength2(), ikey); - } - }*/ else { + } else { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) + .device_code(this.getDeviceCode()) .content("agvphase:" + phase + "反馈:" + data) .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); } + } + - } else if (phase == 0x4D) { + //放货完成 + //(Itype=1/2/3,需要WCS反馈) + else if (phase == 0x09) { if (agvaddr == 0) { agvaddr = agvaddr_copy; } @@ -979,1159 +421,26 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic log.info("未找到指令号{}对应的指令", ikey); return; } - - String start_device_code = inst.getStart_device_code(); - String next_device_code = inst.getNext_device_code(); - String start_device_code2 = inst.getStart_device_code2(); - String next_device_code2 = inst.getNext_device_code2(); - - if (ObjectUtil.isNotEmpty(start_device_code) && StrUtil.equals(device_code, start_device_code)) { - if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - - try { - manipulatorAgvStationDeviceDriver.writing(2); - } catch (Exception e) { - e.printStackTrace(); - } - if ((manipulatorAgvStationDeviceDriver.getAction() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + manipulatorAgvStationDeviceDriver.getAction() + "报警信号:" + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDeviceCode()) - .content(manipulatorAgvStationDeviceDriver.getDevice_code() + "动作信号不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - } else if (ObjectUtil.isNotEmpty(start_device_code) && StrUtil.equals(device_code, next_device_code)) { - if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - - try { - manipulatorAgvStationDeviceDriver.writing(4); - } catch (Exception e) { - e.printStackTrace(); - } - if ((manipulatorAgvStationDeviceDriver.getAction() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + manipulatorAgvStationDeviceDriver.getAction() + "报警信号:" + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDeviceCode()) - .content(manipulatorAgvStationDeviceDriver.getDevice_code() + "动作信号不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - } else if (ObjectUtil.isNotEmpty(start_device_code) && StrUtil.equals(device_code, start_device_code2)) { - if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - - try { - manipulatorAgvStationDeviceDriver.writing(4); - } catch (Exception e) { - e.printStackTrace(); - } - if ((manipulatorAgvStationDeviceDriver.getAction() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + manipulatorAgvStationDeviceDriver.getAction() + "报警信号:" + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(manipulatorAgvStationDeviceDriver.getDevice_code() + "动作信号不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - } else if (ObjectUtil.isNotEmpty(start_device_code) && StrUtil.equals(device_code, next_device_code2)) { - if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - - try { - manipulatorAgvStationDeviceDriver.writing(2); - } catch (Exception e) { - e.printStackTrace(); - } - if ((manipulatorAgvStationDeviceDriver.getAction() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + manipulatorAgvStationDeviceDriver.getDevice_code() + ",动作信号:" + manipulatorAgvStationDeviceDriver.getAction() + "报警信号:" + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDeviceCode()) - .content(manipulatorAgvStationDeviceDriver.getDevice_code() + "动作信号不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("agvphase:" + phase + "反馈:" + data) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + standardOrdinarySiteDeviceDriver.setAgvphase(phase); + standardOrdinarySiteDeviceDriver.setIndex(index); + standardOrdinarySiteDeviceDriver.setInst(inst); } -// else { -// data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); -// LuceneLogDto logDto = LuceneLogDto.builder() -// .device_code(this.getDeviceCode()) -// .content("agvphase:" + phase + "反馈:" + data) -// .build(); -// logDto.setLog_level(4); -// luceneExecuteLogService.deviceExecuteLog(logDto); -// } } - // 取货完毕 - //(Itype=1、3,需要WCS反馈) - else if (phase == 0x0A) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agv地址参数有误,phase:" + phase) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (agvaddr != 0) { - CommonFinalParam commonFinalParam = new CommonFinalParam(); - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - String agv_inst_type = inst.getAgv_inst_type(); - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait")) - && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString())) { - standardOrdinarySiteDeviceDriver.setOption(0); - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - String task_code = inst.getTask_code(); - if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("feedbackToLms")) - && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("feedbackToLms").toString())) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("task_code", task_code); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) - .content("取货完成反馈:" + jsonObject.toJSONString() + ";设备:" + standardOrdinarySiteDeviceDriver.getDeviceCode()) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - acsToWmsService.actionFinishRequest2(jsonObject); - } - - } else if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - try { - hongXiangStationDeviceDriver.writing(0); - } catch (Exception e) { - e.printStackTrace(); - } - if (hongXiangStationDeviceDriver.getMove() == 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + hongXiangStationDeviceDriver.getMove() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - try { - manipulatorAgvStationDeviceDriver.writing(3); - } catch (Exception e) { - e.printStackTrace(); - } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - String task_code = inst.getTask_code(); - if (ObjectUtil.isNotEmpty(manipulatorAgvStationDeviceDriver.getDevice().getExtraValue().get("feedbackToLms")) - && StrUtil.equals("true", manipulatorAgvStationDeviceDriver.getDevice().getExtraValue().get("feedbackToLms").toString())) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("task_code", task_code); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDevice_code()) - .content("取货完成反馈:" + jsonObject.toJSONString() + ";设备:" + manipulatorAgvStationDeviceDriver.getDeviceCode()) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - acsToWmsService.actionFinishRequest2(jsonObject); - } - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { - paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); - try { - paperTubePickSiteDeviceDriver.writing(3); - } catch (Exception e) { - e.printStackTrace(); - } - if (paperTubePickSiteDeviceDriver.getAction() == 1 - && paperTubePickSiteDeviceDriver.getError() == 0 && paperTubePickSiteDeviceDriver.getMode() == 2) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + paperTubePickSiteDeviceDriver.getAction() + "报警信号:" + paperTubePickSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - - try { - standardInspectSiteDeviceDriver.writing(1); - } catch (Exception e) { - e.printStackTrace(); - } - if ((standardInspectSiteDeviceDriver.getMove() == 1 && standardInspectSiteDeviceDriver.getAction() == 1 && standardInspectSiteDeviceDriver.getError() == 0)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + "报警信号:" + standardInspectSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - - } - //(Itype=1,上传称重数据) - else if (phase == 0x64) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - String instruction_type = inst.getInstruction_type(); - //上传称重数据 - if (StrUtil.equals(instruction_type, CommonFinalParam.ONE)) { - weight = agvaddr; - inst.setWeight(String.valueOf(weight)); - instructionService.update(inst); - - if (ObjectUtil.isNotEmpty(task)) { - logServer.deviceExecuteLog(this.device_code, "", "", "上报满卷重量,weight:" + weight); - message = "上报满卷重量,weight:" + weight + ",指令号:" + ikey; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - task.setWeight(String.valueOf(weight)); - task.setCarno(this.device_code); - taskService.update(task); - } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - // 到达放货点 - //(Itype=1/2/3,需要WCS反馈) - else if (phase == 0x0C) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agv地址参数有误,phase:" + phase) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (agvaddr != 0) { - CommonFinalParam commonFinalParam = new CommonFinalParam(); - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); - - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { - paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); - try { - paperTubePickSiteDeviceDriver.writing(4); - } catch (Exception e) { - e.printStackTrace(); - } - if (paperTubePickSiteDeviceDriver.getAction() == 1 - && paperTubePickSiteDeviceDriver.getError() == 0 && paperTubePickSiteDeviceDriver.getMode() == 2) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + paperTubePickSiteDeviceDriver.getAction() + "报警信号:" + paperTubePickSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},设备状态{},不满足放货条件,指令号{}", device_code, paperTubePickSiteDeviceDriver.getMove(), paperTubePickSiteDeviceDriver.getAction() - , paperTubePickSiteDeviceDriver.getError(), paperTubePickSiteDeviceDriver.getMode(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - - try { - manipulatorAgvStationDeviceDriver.writing(4); - } catch (Exception e) { - e.printStackTrace(); - } - if ((manipulatorAgvStationDeviceDriver.getAction() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + manipulatorAgvStationDeviceDriver.getAction() + "报警信号:" + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{},动作信号{} ,不满足取货条件,指令号{}", device_code, manipulatorAgvStationDeviceDriver.getAction(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDeviceCode()) - .content(manipulatorAgvStationDeviceDriver.getDevice_code() + "动作信号不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - try { - hongXiangStationDeviceDriver.writing(1); - } catch (Exception e) { - e.printStackTrace(); - } - if (hongXiangStationDeviceDriver.getMove() == 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + hongXiangStationDeviceDriver.getMove() + ",动作信号:" + hongXiangStationDeviceDriver.getAction() + "报警信号:" + hongXiangStationDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},不满足取货条件,指令号{}", device_code, hongXiangStationDeviceDriver.getMove(), hongXiangStationDeviceDriver.getAction() - , hongXiangStationDeviceDriver.getError(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - standardInspectSiteDeviceDriver.writing(1); - if ((standardInspectSiteDeviceDriver.getMove() == 0 && standardInspectSiteDeviceDriver.getAction() == 1 && standardInspectSiteDeviceDriver.getError() == 0)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + "报警信号:" + standardInspectSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足放货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,报警信号{},不满足放货条件,指令号{}", device_code, standardInspectSiteDeviceDriver.getMove(), standardInspectSiteDeviceDriver.getAction() - , standardInspectSiteDeviceDriver.getError(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - }/* else if (device.getDeviceDriver() instanceof RangingStationsDeviceDriver) { - rangingStationsDeviceDriver = (RangingStationsDeviceDriver) device.getDeviceDriver(); - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - String device_code1 = device.getDevice_code(); - String length1 = rangingStationsDeviceDriver.getLength1(); - String length2 = rangingStationsDeviceDriver.getLength2(); - Float len1 = 0.0F; - Float len2 = 0.0F; - if (ObjectUtil.isNotEmpty(length1) && !"null".equals(length1) && ObjectUtil.isNotEmpty(length2) && !"null".equals(length2)) { - len1 = Float.parseFloat(length1); - len2 = Float.parseFloat(length2); - } - if (len1 * len2 < 1) { - if (ObjectUtil.isNotEmpty(device_code1) && device_code1.contains("A")) { - String offSet_A = paramService.findByCode(AcsConfig.OFFSET_A).getValue(); - if (ObjectUtil.isNotEmpty(offSet_A) && !"null".equals(offSet_A)) { - Integer integer = Integer.valueOf(offSet_A); - len1 = len1 - integer; - } - } else if (ObjectUtil.isNotEmpty(device_code1) && device_code1.contains("B")) { - String offSet_B = paramService.findByCode(AcsConfig.OFFSET_B).getValue(); - if (ObjectUtil.isNotEmpty(offSet_B) && !"null".equals(offSet_B)) { - Integer integer = Integer.valueOf(offSet_B); - len1 = integer + len1; - } - } else { - log.info("{}设备名不符合条件,指令号{}", device_code, ikey); - } - int roundedNumber = ObjectUtil.isNotEmpty(len1) ? NumberUtil.round(len1, 0).intValue() : 0; - if (roundedNumber == 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, roundedNumber); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (roundedNumber > -50 || roundedNumber < 50) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 1, roundedNumber); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (roundedNumber > 50 || roundedNumber < -50) { - log.info("设备{},偏移数据超出范围导致未反馈{},指令号{}", device_code, roundedNumber, ikey); - } - } else { - log.info("设备{},偏移数据出错导致未反馈{},指令号{}", device_code, rangingStationsDeviceDriver.getLength1() + "," + rangingStationsDeviceDriver.getLength2(), ikey); - } - }*/ else if (device.getDeviceDriver() instanceof WasteFoilWeighingStationDriver) { - wasteFoilWeighingStationDriver = (WasteFoilWeighingStationDriver) device.getDeviceDriver(); - if (wasteFoilWeighingStationDriver.getMove() == 0 && wasteFoilWeighingStationDriver.getAction() == 1 - && wasteFoilWeighingStationDriver.getError() == 0 && wasteFoilWeighingStationDriver.getMode() == 2) { - try { - Map map = new LinkedHashMap<>(); - map.put("to_command", "4"); - wasteFoilWeighingStationDriver.writing(map); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } catch (Exception e) { - e.printStackTrace(); - } - } else { - message = "设备号:" + device_code + "光电信号:" + wasteFoilWeighingStationDriver.getMove() + ",动作信号:" + wasteFoilWeighingStationDriver.getAction() + "报警信号:" + wasteFoilWeighingStationDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},设备状态{},不满足取货条件,指令号{}", device_code, wasteFoilWeighingStationDriver.getMove(), wasteFoilWeighingStationDriver.getAction() - , wasteFoilWeighingStationDriver.getError(), wasteFoilWeighingStationDriver.getMode(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - //放货完成 - //(Itype=1/2/3,需要WCS反馈) - else if (phase == 0x0E) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agv地址参数有误,phase:" + phase) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (agvaddr != 0) { - CommonFinalParam commonFinalParam = new CommonFinalParam(); - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { -// standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); -// if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait")) -// && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString()) -// && StrUtil.equals(task.getTask_type(), "1")) { -// // -// if (standardOrdinarySiteDeviceDriver.getOption() == 2) { -// data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); -// standardOrdinarySiteDeviceDriver.setOption(0); -// } else { -// log.info("等待LMS系统进行确认离开,设备号{},指令号:{}", device_code, ikey); -// message = "等待LMS系统进行确认离开,设备号:" + device_code + ",指令号:" + ikey; -// } -// } else { -// data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); -// } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - this.setPhase(phase); - } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - - try { - manipulatorAgvStationDeviceDriver.writing(5); - } catch (Exception e) { - e.printStackTrace(); - } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - try { - hongXiangStationDeviceDriver.writing(0); - } catch (Exception e) { - e.printStackTrace(); - } - if (hongXiangStationDeviceDriver.getMove() > 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + hongXiangStationDeviceDriver.getMove() + ",动作信号:" + hongXiangStationDeviceDriver.getAction() + "报警信号:" + hongXiangStationDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},不满足放货完成反馈,指令号{}", device_code, hongXiangStationDeviceDriver.getMove(), hongXiangStationDeviceDriver.getAction() - , hongXiangStationDeviceDriver.getError(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { - paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); - try { - TaskDto byTaskCode = taskService.findByTaskCode(inst.getTask_code()); - Map map = new HashMap(); - if (StrUtil.isNotEmpty(byTaskCode.getInteraction_json())) { - String interaction_json = byTaskCode.getInteraction_json(); - JSONObject jsonObject = JSONObject.parseObject(interaction_json); - String to_material = jsonObject.getString("to_material"); - String to_spec = jsonObject.getString("to_spec"); - String to_qty = jsonObject.getString("to_qty"); - map.put("to_command", 5); - map.put("to_material", to_material); - map.put("to_spec", to_spec); - map.put("to_qty", to_qty); - paperTubePickSiteDeviceDriver.writing(map); - } else { - map.put("to_command", 5); - paperTubePickSiteDeviceDriver.writing(map); - } - } catch (Exception e) { - e.printStackTrace(); - } - if (paperTubePickSiteDeviceDriver.getAction() == 1 - && paperTubePickSiteDeviceDriver.getError() == 0 && paperTubePickSiteDeviceDriver.getMode() == 2) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - paperTubePickSiteDeviceDriver.setFlag(3); - } else { - message = "设备号:" + device_code + ",动作信号:" + paperTubePickSiteDeviceDriver.getAction() + "报警信号:" + paperTubePickSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},设备状态{},不满足取货条件,指令号{}", device_code, paperTubePickSiteDeviceDriver.getMove(), paperTubePickSiteDeviceDriver.getAction() - , paperTubePickSiteDeviceDriver.getError(), paperTubePickSiteDeviceDriver.getMode(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - standardInspectSiteDeviceDriver.writing(0); - if ((standardInspectSiteDeviceDriver.getMove() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof WasteFoilWeighingStationDriver) { - wasteFoilWeighingStationDriver = (WasteFoilWeighingStationDriver) device.getDeviceDriver(); - if (wasteFoilWeighingStationDriver.getMove() == 1 && wasteFoilWeighingStationDriver.getAction() == 1 - && wasteFoilWeighingStationDriver.getError() == 0 && wasteFoilWeighingStationDriver.getMode() == 2) { - try { - Map map = new LinkedHashMap<>(); - map.put("to_command", "5"); - wasteFoilWeighingStationDriver.writing(map); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } catch (Exception e) { - e.printStackTrace(); - } - } else { - message = "设备号:" + device_code + "光电信号:" + wasteFoilWeighingStationDriver.getMove() + ",动作信号:" + wasteFoilWeighingStationDriver.getAction() + "报警信号:" + wasteFoilWeighingStationDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},设备状态{},不满足取货条件,指令号{}", device_code, wasteFoilWeighingStationDriver.getMove(), wasteFoilWeighingStationDriver.getAction() - , wasteFoilWeighingStationDriver.getError(), wasteFoilWeighingStationDriver.getMode(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - //到达放货点 - //(Itype=1、3,需要WCS反馈) - else if (phase == 0x10) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agv地址参数有误,phase:" + phase) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (agvaddr != 0) { - CommonFinalParam commonFinalParam = new CommonFinalParam(); - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - String agv_inst_type = inst.getAgv_inst_type(); - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { -// standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); -// if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait")) -// && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString()) -// && StrUtil.equals(task.getTask_type(), "1")) { -// // -// if (standardOrdinarySiteDeviceDriver.getOption() == 2) { -// data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); -// standardOrdinarySiteDeviceDriver.setOption(0); -// } else { -// log.info("等待LMS系统进行确认离开,设备号{},指令号:{}", device_code, ikey); -// message = "等待LMS系统进行确认离开,设备号:" + device_code + ",指令号:" + ikey; -// } -// } else { -// data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); -// } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - this.setPhase(phase); - - } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - - try { - manipulatorAgvStationDeviceDriver.writing(4); - } catch (Exception e) { - e.printStackTrace(); - } - if ((manipulatorAgvStationDeviceDriver.getAction() == 1)) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + ",动作信号:" + manipulatorAgvStationDeviceDriver.getAction() + "报警信号:" + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{},动作信号{} ,不满足取货条件,指令号{}", device_code, manipulatorAgvStationDeviceDriver.getAction(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(manipulatorAgvStationDeviceDriver.getDeviceCode()) - .content(manipulatorAgvStationDeviceDriver.getDevice_code() + "动作信号不为1") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - try { - hongXiangStationDeviceDriver.writing(1); - } catch (Exception e) { - e.printStackTrace(); - } - if (hongXiangStationDeviceDriver.getMove() == 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + hongXiangStationDeviceDriver.getMove() + ",动作信号:" + hongXiangStationDeviceDriver.getAction() + "报警信号:" + hongXiangStationDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},不满足取货条件,指令号{}", device_code, hongXiangStationDeviceDriver.getMove(), hongXiangStationDeviceDriver.getAction() - , hongXiangStationDeviceDriver.getError(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { - paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); - try { - paperTubePickSiteDeviceDriver.writing(4); - } catch (Exception e) { - e.printStackTrace(); - } - if (paperTubePickSiteDeviceDriver.getAction() == 1 - && paperTubePickSiteDeviceDriver.getError() == 0 && paperTubePickSiteDeviceDriver.getMode() == 2) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + paperTubePickSiteDeviceDriver.getMove() + ",动作信号:" + paperTubePickSiteDeviceDriver.getAction() + "报警信号:" + paperTubePickSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},不满足取货条件,指令号{}", device_code, paperTubePickSiteDeviceDriver.getMove(), paperTubePickSiteDeviceDriver.getAction() - , paperTubePickSiteDeviceDriver.getError(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - }/* else if (device.getDeviceDriver() instanceof RangingStationsDeviceDriver) { - rangingStationsDeviceDriver = (RangingStationsDeviceDriver) device.getDeviceDriver(); - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - String device_code1 = device.getDevice_code(); - String length1 = rangingStationsDeviceDriver.getLength1(); - String length2 = rangingStationsDeviceDriver.getLength2(); - Float len1 = 0.0F; - Float len2 = 0.0F; - if (ObjectUtil.isNotEmpty(length1) && !"null".equals(length1) && ObjectUtil.isNotEmpty(length2) && !"null".equals(length2)) { - len1 = Float.parseFloat(length1); - len2 = Float.parseFloat(length2); - } - if (len1 * len2 < 1) { - if (ObjectUtil.isNotEmpty(device_code1) && device_code1.contains("A")) { - String offSet_A = paramService.findByCode(AcsConfig.OFFSET_A).getValue(); - if (ObjectUtil.isNotEmpty(offSet_A) && !"null".equals(offSet_A)) { - Integer integer = Integer.valueOf(offSet_A); - len1 = len1 - integer; - } - } else if (ObjectUtil.isNotEmpty(device_code1) && device_code1.contains("B")) { - String offSet_B = paramService.findByCode(AcsConfig.OFFSET_B).getValue(); - if (ObjectUtil.isNotEmpty(offSet_B) && !"null".equals(offSet_B)) { - Integer integer = Integer.valueOf(offSet_B); - len1 = integer + len1; - } - } else { - log.info("{}设备名不符合条件,指令号{}", device_code, ikey); - } - int roundedNumber = ObjectUtil.isNotEmpty(len1) ? NumberUtil.round(len1, 0).intValue() : 0; - if (roundedNumber == 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, roundedNumber); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (roundedNumber > -50 || roundedNumber < 50) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 1, roundedNumber); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (roundedNumber > 50 || roundedNumber < -50) { - log.info("设备{},偏移数据超出范围导致未反馈{},指令号{}", device_code, roundedNumber, ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("设备" + device_code + "偏移数据超出范围导致未反馈" + roundedNumber + "指令号" + ikey) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - log.info("设备{},偏移数据出错导致未反馈{},指令号{}", device_code, rangingStationsDeviceDriver.getLength1() + "," + rangingStationsDeviceDriver.getLength2(), ikey); - } - }*/ else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - //放货完成 - //(Itype=1、3,需要WCS反馈) - else if (phase == 0x12) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agv地址参数有误,phase:" + phase) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (agvaddr != 0) { - CommonFinalParam commonFinalParam = new CommonFinalParam(); - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - String agv_inst_type = inst.getAgv_inst_type(); - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { -// standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); -// if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait")) -// && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString()) -// && StrUtil.equals(task.getTask_type(), "1")) { -// // -// if (standardOrdinarySiteDeviceDriver.getOption() == 2) { -// data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); -// standardOrdinarySiteDeviceDriver.setOption(0); -// } else { -// log.info("等待LMS系统进行确认离开,设备号{},指令号:{}", device_code, ikey); -// message = "等待LMS系统进行确认离开,设备号:" + device_code + ",指令号:" + ikey; -// } -// } else { -// data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); -// } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - this.setPhase(phase); - - } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { - manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - try { - manipulatorAgvStationDeviceDriver.writing(5); - } catch (Exception e) { - e.printStackTrace(); - } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { - paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); - try { - paperTubePickSiteDeviceDriver.writing(5); - } catch (Exception e) { - e.printStackTrace(); - } - if (paperTubePickSiteDeviceDriver.getAction() == 1 - && paperTubePickSiteDeviceDriver.getError() == 0 && paperTubePickSiteDeviceDriver.getMode() == 2) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + paperTubePickSiteDeviceDriver.getMove() + ",动作信号:" + paperTubePickSiteDeviceDriver.getAction() + "报警信号:" + paperTubePickSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},不满足取货条件,指令号{}", device_code, paperTubePickSiteDeviceDriver.getMove(), paperTubePickSiteDeviceDriver.getAction() - , paperTubePickSiteDeviceDriver.getError(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - try { - hongXiangStationDeviceDriver.writing(0); - } catch (Exception e) { - e.printStackTrace(); - } - if (hongXiangStationDeviceDriver.getMove() > 0) { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - message = "设备号:" + device_code + "光电信号:" + hongXiangStationDeviceDriver.getMove() + ",动作信号:" + hongXiangStationDeviceDriver.getAction() + "报警信号:" + hongXiangStationDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},不满足取货条件,指令号{}", device_code, hongXiangStationDeviceDriver.getMove(), hongXiangStationDeviceDriver.getAction() - , hongXiangStationDeviceDriver.getError(), ikey); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content(message) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } else { - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - //上传AGV电量 else if (phase == 0x70) { //x坐标 x = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) + .device_code(device_code) .content("agvphase:" + phase + "x坐标:" + x) .build(); logDto.setLog_level(4); @@ -2140,7 +449,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //y坐标 y = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) + .device_code(device_code) .content("agvphase:" + phase + "y坐标:" + y) .build(); logDto.setLog_level(4); @@ -2149,7 +458,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //车辆角度 angle = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) + .device_code(device_code) .content("agvphase:" + phase + "车辆角度:" + angle) .build(); logDto.setLog_level(4); @@ -2158,7 +467,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //agv电量 electric_qty = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) + .device_code(device_code) .content("agvphase:" + phase + "agv电量:" + electric_qty) .build(); logDto.setLog_level(4); @@ -2167,7 +476,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //三色灯状态 status = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) + .device_code(device_code) .content("agvphase:" + phase + "三色灯状态:" + status) .build(); logDto.setLog_level(4); @@ -2198,21 +507,9 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic last_status = status; } //进入区域(phase值) else if (phase == 0x50) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "自动门开门") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); } //离开区域(phase值) else if (phase == 0x51) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "自动门关门") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); } //上报异常信息 //(不需要WCS反馈) @@ -2257,12 +554,6 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); -// if (StrUtil.equals(inst.getAgv_system_type(), "2")) { -// TwoNDCSocketConnectionAutoRun.write(data); -// } -// else if (StrUtil.equals(inst.getAgv_system_type(), "3")) { -// TwoNDC2SocketConnectionAutoRun.write(data); -// } if (StrUtil.equals(inst.getAgv_system_type(), "2")) { TwoNDCSocketConnectionAutoRun.write(data); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/ItemProtocol.java index cd262b0..0a86dff 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/ItemProtocol.java @@ -9,6 +9,7 @@ import java.util.List; @Slf4j public class ItemProtocol { + public static String item_mode = "mode"; public static String item_to_command = "to_command"; @@ -18,6 +19,10 @@ public class ItemProtocol { this.driver = driver; } + public int getMode() { + return this.getOpcIntegerValue(item_mode); + } + public int getToCommand() { return this.getOpcIntegerValue(item_to_command); } @@ -35,6 +40,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); + list.add(new ItemDto(item_mode, "模式", "08010")); return list; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/LampThreecolorDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/LampThreecolorDefination.java index 97cf318..cd793a6 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/LampThreecolorDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/LampThreecolorDefination.java @@ -11,7 +11,7 @@ import java.util.LinkedList; import java.util.List; /** - * 标准版-三色灯 + * 标准版-报警灯 */ @Service public class LampThreecolorDefination implements OpcDeviceDriverDefination { @@ -22,12 +22,12 @@ public class LampThreecolorDefination implements OpcDeviceDriverDefination { @Override public String getDriverName() { - return "标准版-三色灯"; + return "标准版-报警灯"; } @Override public String getDriverDescription() { - return "标准版-三色灯"; + return "标准版-报警灯"; } @Override diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/LampThreecolorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/LampThreecolorDeviceDriver.java index a3e6013..0415a80 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/LampThreecolorDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/lamp_three_color/LampThreecolorDeviceDriver.java @@ -30,10 +30,10 @@ public class LampThreecolorDeviceDriver extends AbstractOpcDeviceDriver implemen DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); @Autowired LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - String container; - String container_type_desc; - String last_container_type_desc; - String last_container; + int mode; + int to_command; + int last_mode; + int last_to_command; /** * 放货准备锁 */ @@ -43,16 +43,6 @@ public class LampThreecolorDeviceDriver extends AbstractOpcDeviceDriver implemen */ protected boolean has_goods_tag = false; String devicecode; - int mode = 0; - int action = 0; - int error = 0; - int move = 0; - int task = 0; - int last_action = 0; - int last_mode = 0; - int last_error = 0; - int last_move = 0; - int last_task = 0; boolean hasVehicle = false; boolean isReady = false; @@ -93,6 +83,10 @@ public class LampThreecolorDeviceDriver extends AbstractOpcDeviceDriver implemen public void execute() { String message = null; device_code = this.getDevice().getDevice_code(); + mode = this.itemProtocol.getOpcIntegerValue(ItemProtocol.item_mode); + to_command = this.itemProtocol.getOpcIntegerValue(ItemProtocol.item_to_command); + last_mode = mode; + last_to_command = to_command; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToSpxController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToSpxController.java new file mode 100644 index 0000000..3b3794f --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToSpxController.java @@ -0,0 +1,4 @@ +package org.nl.acs.ext.wms.rest; + +public class AcsToSpxController { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/SpxToAcsController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/SpxToAcsController.java new file mode 100644 index 0000000..02c63eb --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/SpxToAcsController.java @@ -0,0 +1,31 @@ +package org.nl.acs.ext.wms.rest; + +import cn.dev33.satoken.annotation.SaIgnore; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.wms.service.SpxToAcsService; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/spx") +@Slf4j +public class SpxToAcsController { + @Autowired + private SpxToAcsService spxToAcsService; + + @PostMapping("/task") + @Log(value = "ACS接收SPX任务") + @SaIgnore + public ResponseEntity createFromWms(@RequestBody String whereJson) { + return new ResponseEntity<>(spxToAcsService.crateTask(whereJson), HttpStatus.OK); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToSpxService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToSpxService.java new file mode 100644 index 0000000..862b21a --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToSpxService.java @@ -0,0 +1,4 @@ +package org.nl.acs.ext.wms.service; + +public interface AcsToSpxService { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/SpxToAcsService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/SpxToAcsService.java new file mode 100644 index 0000000..00a221c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/SpxToAcsService.java @@ -0,0 +1,7 @@ +package org.nl.acs.ext.wms.service; + +import java.util.Map; + +public interface SpxToAcsService { + Map crateTask(String whereJson); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToSpxServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToSpxServiceImpl.java new file mode 100644 index 0000000..9de723e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToSpxServiceImpl.java @@ -0,0 +1,4 @@ +package org.nl.acs.ext.wms.service.impl; + +public class AcsToSpxServiceImpl { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/SpxToAcsServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/SpxToAcsServiceImpl.java new file mode 100644 index 0000000..4863d42 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/SpxToAcsServiceImpl.java @@ -0,0 +1,149 @@ +package org.nl.acs.ext.wms.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.wms.service.SpxToAcsService; +import org.nl.acs.order.mapper.OrderMapper; +import org.nl.acs.order.service.OrderDetailService; +import org.nl.acs.order.service.OrderService; +import org.nl.acs.order.service.dto.OrderDetailDto; +import org.nl.acs.order.service.dto.OrderDto; +import org.nl.acs.product.domain.Productdtl; +import org.nl.acs.product.service.IProductService; +import org.nl.acs.product.service.IProductdtlService; +import org.nl.acs.sch.task.service.ISchBaseTaskService; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class SpxToAcsServiceImpl implements SpxToAcsService { + + @Autowired + private OrderMapper orderMapper; + + @Autowired + private ISchBaseTaskService schBaseTaskService; + + @Autowired + private OrderDetailService orderDetailService; + + + @Override + public Map crateTask(String whereJson) { + try { + JSONArray datas = JSONArray.parseArray(whereJson); + JSONArray errArr = new JSONArray(); + String currentNickName = SecurityUtils.getCurrentNickName(); + String currentTime = DateUtil.now(); + if (datas.size() > 0) { + for (int i = 0; i < datas.size(); i++) { + processSingleTask(datas.getJSONObject(i), errArr, currentNickName, currentTime); + } + } + return buildResultJson(errArr); + } catch (Exception e) { + // 记录异常日志 + log.error("创建工单时发生异常: ", e); + JSONObject resultJson = new JSONObject(); + resultJson.put("status", HttpStatus.BAD_REQUEST.value()); + resultJson.put("message", "操作失败"); + return resultJson; + } + } + + + private void processSingleTask(JSONObject jsonObject, JSONArray errArr, String currentNickName, String currentTime) { + String id = jsonObject.getString("ID"); + if (orderMapper.selectById(id) != null) { + JSONObject jo = new JSONObject(); + jo.put("ID", id); + jo.put("message", "已存在对应工单"); + errArr.add(jo); + return; + } + String productionNr = jsonObject.getString("ProductionNr"); + String recipeName = jsonObject.getString("RecipeName"); + String recipeCode = jsonObject.getString("RecipeCode"); + Float quantity = jsonObject.getFloatValue("Quantity"); + if (quantity == null) { + quantity = 0.0f; + } + Integer lineID = jsonObject.getIntValue("LineID"); + if (lineID == null) { + lineID = 0; + } + String startTime = jsonObject.getString("StartTime"); + JSONArray components = Optional.ofNullable(jsonObject.getJSONArray("Components")).orElse(new JSONArray()); + List list = new ArrayList<>(); + // 工单明细表插入 + for (int j = 0; j < components.size(); j++) { + JSONObject jo = components.getJSONObject(j); + String product_code = jo.getString("ComponentNr"); + String componentName = jo.getString("ComponentName"); + Float quantity1 = jo.getFloatValue("Quantity"); + if (quantity1 == null) { + quantity1 = 0.0f; + } + String unit = jo.getString("Unit"); + OrderDetailDto orderDetailDto = new OrderDetailDto(); + orderDetailDto.setMaterial_id(IdUtil.getSnowflake(1, 1).nextId() + "") + .setSeq_no(j + 1) + .setMaterial_code(product_code) + .setWorkorder_id(id) + .setMfg_order_name(productionNr) + .setMaterial_name(componentName) + .setBase_unit_id(unit) + .setProductin_qty(quantity1) + .setCreate_by(currentNickName) + .setCreate_time(currentTime); + list.add(orderDetailDto); + } + orderDetailService.saveBatch(list); + // 插入工单表 + OrderDto dto = new OrderDto(); + dto.setWorkorder_id(id) + .setResource_name(String.valueOf(lineID)) + .setMfg_order_name(productionNr) + .setProduct_name(recipeCode) + .setDescription(recipeName) + .setDetail_count(list.size()) + .setTotal_qty(quantity) + .setCreate_time(currentTime) + .setStatus("0") + .setRealstart_time(startTime) + .setCreate_name(currentNickName); + orderMapper.insert(dto); + } + + private JSONObject buildResultJson(JSONArray errArr) { + JSONObject resultJson = new JSONObject(); + if (ObjectUtil.isEmpty(errArr)) { + resultJson.put("status", HttpStatus.OK.value()); + resultJson.put("message", "操作成功"); + } else { + resultJson.put("status", HttpStatus.BAD_REQUEST.value()); + resultJson.put("message", "操作失败"); + if (ObjectUtil.isNotEmpty(errArr)) { + resultJson.put("errArr", errArr); + } + } + return resultJson; + } + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index ee91a38..a90e6e9 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -385,7 +385,6 @@ public class InstructionServiceImpl extends CommonServiceImpl 0 && StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE) && dto.getAgv_system_type().equals(AgvSystemTypeEnum.Two_NDC_System_Type.getIndex())) { + if (shortPathsList.size() > 0 && StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { // 0为输送、立库任务 1 1楼叉车系统 2 2楼1区域AGV系统 3 2楼2区域AGV系统 - if (!StrUtil.equals(task.getAgv_system_type(), "0") - && ObjectUtil.isNotEmpty(task.getAgv_system_type())) { - if (StrUtil.isBlank(dto.getAgv_inst_type())) { - String agv_system_type = task.getAgv_system_type(); - String task_type = task.getTask_type(); - if (!StrUtil.equals(agv_system_type, "1")) { - // task_type - //1、生箔; Itype=1:取空,取满,放空,放满; - //2、分切 Itype=3取满、取空、放满、放空; - //3、普通任务 Itype=2:取货、放货; - //4、叉车任务 - //5、输送任务 - //6、行架 - //7、立库 - if (StrUtil.equals(task_type, "1")) { - dto.setAgv_inst_type("1"); - } else if (StrUtil.equals(task_type, "3")) { - dto.setAgv_inst_type("2"); - } else if (StrUtil.equals(task_type, "2")) { - dto.setAgv_inst_type("3"); - } else if (StrUtil.equals(task_type, "8")) { - dto.setAgv_inst_type("2"); - } else { - log.info("未找到对应的AGV指令类型,任务号:" + task.getTask_code() + ",task_type:" + task.getTask_type()); - } - } else { - dto.setAgv_inst_type("4"); - } - dto.setAgv_system_type(task.getAgv_system_type()); + if (StrUtil.isBlank(dto.getAgv_inst_type())) { + String task_type = task.getTask_type(); + // task_type + //1、生箔; Itype=1:取空,取满,放空,放满; + //2、分切 Itype=3取满、取空、放满、放空; + //3、普通任务 Itype=2:取货、放货; + //4、叉车任务 + //5、输送任务 + //6、行架 + //7、立库 + if (StrUtil.equals(task_type, "1")) { + dto.setAgv_inst_type("1"); + } else if (StrUtil.equals(task_type, "3")) { + dto.setAgv_inst_type("2"); + } else if (StrUtil.equals(task_type, "2")) { + dto.setAgv_inst_type("3"); + } else if (StrUtil.equals(task_type, "8")) { + dto.setAgv_inst_type("2"); + } else { + log.info("未找到对应的AGV指令类型,任务号:" + task.getTask_code() + ",task_type:" + task.getTask_type()); + } + } + NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); + log.warn("下发AGV指令数据," + "指令号:" + dto.getInstruction_code() + ",AGV系统类型:" + dto.getAgv_system_type() + + ",AGV指令类型:" + dto.getInstruction_type()); + try { + if (StrUtil.isEmpty(dto.getAgv_inst_type()) || StrUtil.isEmpty(dto.getAgv_system_type())) { + log.info("sendAgvInstToNDC 指令校验:" + dto.getInstruction_code() + ",inst_type:" + dto.getInstruction_type() + + ",inst_system_type:" + dto.getAgv_system_type()); } - NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); - log.warn("下发AGV指令数据," + "指令号:" + dto.getInstruction_code() + ",AGV系统类型:" + dto.getAgv_system_type() - + ",AGV指令类型:" + dto.getInstruction_type()); - try { - if (StrUtil.isEmpty(dto.getAgv_inst_type()) || StrUtil.isEmpty(dto.getAgv_system_type())) { - log.info("sendAgvInstToNDC 指令校验:" + dto.getInstruction_code() + ",inst_type:" + dto.getInstruction_type() - + ",inst_system_type:" + dto.getAgv_system_type()); - } // log.info("2楼1区域AGV系统链接开始"); // String ip = paramService.findByCode(AcsConfig.AGVURL).getValue(); // int port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT).getValue()); @@ -527,57 +508,21 @@ public class InstructionServiceImpl extends CommonServiceImpl 0 && StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { - Device deviceByCode = deviceAppService.findDeviceByCode(dto.getStart_device_code()); - - if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.XG_System_Type.getIndex())) { - String interactionJson = task.getInteraction_json(); - if (StrUtil.isEmpty(interactionJson)) { - throw new BadRequestException("agv叉车调整长宽参数为空"); - } - InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); - //仙工叉车 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToForklift(dto, interactionJsonDTO); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } else if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.One_NDC_System_Type.getIndex())) { - //一楼agv任务创建运单序列 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToXZ(dto); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } + } catch (Exception e) { + dto.setSend_status("2"); + dto.setRemark(e.getMessage()); + e.printStackTrace(); + log.warn("下发AGV指令异常:" + e); + LuceneLogDto logDto1 = LuceneLogDto.builder() + .device_code(start_device_code) + .content("下发AGV指令异常") + .build(); + logDto1.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto1); } } } catch (Exception e) { @@ -716,46 +661,22 @@ public class InstructionServiceImpl extends CommonServiceImpl 0 && StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { - Device deviceByCode = deviceAppService.findDeviceByCode(dto.getStart_device_code()); - if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.XG_System_Type.getIndex())) { - String interactionJson = task.getInteraction_json(); - if (StrUtil.isEmpty(interactionJson)) { - throw new BadRequestException("agv叉车调整长宽参数为空"); - } - InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); - //仙工叉车 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToForklift(dto, interactionJsonDTO); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } else if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.One_NDC_System_Type.getIndex())) { - //一楼agv任务创建运单序列 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToXZ(dto); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } else if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.Two_NDC_System_Type.getIndex())) { - NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); - log.warn("下发AGV指令数据," + "指令号:" + dto.getInstruction_code() + ",AGV系统类型:" + dto.getAgv_system_type()); - try { - ndcAgvService.sendAgvInstToNDC(task.getAgv_system_type(), dto); - dto.setSend_status("1"); - } catch (Exception e) { - dto.setSend_status("2"); - dto.setRemark(e.getMessage()); - e.printStackTrace(); - log.warn("下发AGV指令异常:" + e); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code(start_device_code) - .content("下发AGV指令异常") - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - } + NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); + log.warn("下发AGV指令数据," + "指令号:" + dto.getInstruction_code() + ",AGV系统类型:" + dto.getAgv_system_type()); + try { + ndcAgvService.sendAgvInstToNDC(task.getAgv_system_type(), dto); + dto.setSend_status("1"); + } catch (Exception e) { + dto.setSend_status("2"); + dto.setRemark(e.getMessage()); + e.printStackTrace(); + log.warn("下发AGV指令异常:" + e); + LuceneLogDto logDto1 = LuceneLogDto.builder() + .device_code(start_device_code) + .content("下发AGV指令异常") + .build(); + logDto1.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto1); } } } catch (Exception e) { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/domain/Materialbase.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/domain/Materialbase.java index ddf6e1e..5255df8 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/domain/Materialbase.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/domain/Materialbase.java @@ -1,127 +1,127 @@ -package org.nl.acs.materialbase.domain; - -import org.nl.acs.common.base.CommonModel; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.IdType; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.bean.copier.CopyOptions; - -import javax.validation.constraints.*; -import java.math.BigDecimal; -import java.io.Serializable; - -/** - * @author jiaolm - * @date 2023-05-09 - */ -@Data -@Builder -@Accessors(chain = true) -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(callSuper = false) -@TableName("acs_materialbase") -public class Materialbase extends CommonModel implements Serializable { - private static final long serialVersionUID = 1L; - - - @TableId(type = IdType.ASSIGN_ID) - private String material_id; - - - @NotBlank - private String material_code; - - - @NotBlank - private String material_name; - - - private String material_spec; - - - private String material_model; - - - @NotBlank - private String base_unit_id; - - - private String print_no; - - - private String len_unit_id; - - - private BigDecimal length; - - - private BigDecimal width; - - - private BigDecimal height; - - - private String weight_unit_id; - - - private BigDecimal gross_weight; - - - private BigDecimal net_weight; - - - private String cubage_unit_id; - - - private BigDecimal cubage; - - - private BigDecimal outer_diameter; - - - private BigDecimal wall_thickness; - - - @NotBlank - @TableField(fill = FieldFill.INSERT) - private String create_by; - - - @NotBlank - @TableField(fill = FieldFill.INSERT) - private String create_time; - - - @TableField(fill = FieldFill.INSERT_UPDATE) - private String update_by; - - - @TableField(fill = FieldFill.INSERT_UPDATE) - private String update_time; - - - private String is_used_time; - - - @NotBlank - private String is_used; - - - @NotBlank - private String is_delete; - - public void copyFrom(Materialbase source) { - BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); - } -} +//package org.nl.acs.materialbase.domain; +// +//import org.nl.acs.common.base.CommonModel; +//import com.baomidou.mybatisplus.annotation.TableName; +//import com.baomidou.mybatisplus.annotation.FieldFill; +//import com.baomidou.mybatisplus.annotation.TableField; +//import com.baomidou.mybatisplus.annotation.TableId; +//import com.baomidou.mybatisplus.annotation.IdType; +// +//import lombok.AllArgsConstructor; +//import lombok.Builder; +//import lombok.Data; +//import lombok.NoArgsConstructor; +//import lombok.EqualsAndHashCode; +//import lombok.experimental.Accessors; +//import cn.hutool.core.bean.BeanUtil; +//import cn.hutool.core.bean.copier.CopyOptions; +// +//import javax.validation.constraints.*; +//import java.math.BigDecimal; +//import java.io.Serializable; +// +///** +// * @author jiaolm +// * @date 2023-05-09 +// */ +//@Data +//@Builder +//@Accessors(chain = true) +//@NoArgsConstructor +//@AllArgsConstructor +//@EqualsAndHashCode(callSuper = false) +//@TableName("acs_materialbase") +//public class Materialbase extends CommonModel implements Serializable { +// private static final long serialVersionUID = 1L; +// +// +// @TableId(type = IdType.ASSIGN_ID) +// private String material_id; +// +// +// @NotBlank +// private String material_code; +// +// +// @NotBlank +// private String material_name; +// +// +// private String material_spec; +// +// +// private String material_model; +// +// +// @NotBlank +// private String base_unit_id; +// +// +// private String print_no; +// +// +// private String len_unit_id; +// +// +// private BigDecimal length; +// +// +// private BigDecimal width; +// +// +// private BigDecimal height; +// +// +// private String weight_unit_id; +// +// +// private BigDecimal gross_weight; +// +// +// private BigDecimal net_weight; +// +// +// private String cubage_unit_id; +// +// +// private BigDecimal cubage; +// +// +// private BigDecimal outer_diameter; +// +// +// private BigDecimal wall_thickness; +// +// +// @NotBlank +// @TableField(fill = FieldFill.INSERT) +// private String create_by; +// +// +// @NotBlank +// @TableField(fill = FieldFill.INSERT) +// private String create_time; +// +// +// @TableField(fill = FieldFill.INSERT_UPDATE) +// private String update_by; +// +// +// @TableField(fill = FieldFill.INSERT_UPDATE) +// private String update_time; +// +// +// private String is_used_time; +// +// +// @NotBlank +// private String is_used; +// +// +// @NotBlank +// private String is_delete; +// +// public void copyFrom(Materialbase source) { +// BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); +// } +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/rest/MaterialbaseController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/rest/MaterialbaseController.java index f5b7cdc..0fd7ccf 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/rest/MaterialbaseController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/rest/MaterialbaseController.java @@ -1,94 +1,94 @@ -package org.nl.acs.materialbase.rest; - -import org.nl.common.logging.annotation.Log; -import org.nl.acs.materialbase.domain.Materialbase; -import org.nl.acs.materialbase.service.MaterialbaseService; -import org.nl.acs.materialbase.service.dto.MaterialbaseDto; -import org.nl.acs.materialbase.service.dto.MaterialbaseQueryParam; -import org.springframework.data.domain.Pageable; -import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - - -import java.util.Set; - -/** - * @author jiaolm - * @date 2023-05-09 - **/ -@RestController -@RequiredArgsConstructor - -@RequestMapping("/api/materialbase") -public class MaterialbaseController { - - private final MaterialbaseService materialbaseService; - - /** - * 查询物料基本信息 - * @param query - * @param pageable - * @return - */ - @GetMapping - @Log("查询物料基本信息") - - //@PreAuthorize("@el.check('materialbase:list')") - public ResponseEntity query(MaterialbaseQueryParam query, Pageable pageable) { - return new ResponseEntity<>(materialbaseService.queryAll(query, pageable), HttpStatus.OK); - } - - /** - * 新增物料基本信息 - * @param resources - * @return - */ - @PostMapping - @Log("新增物料基本信息") - - //@PreAuthorize("@el.check('materialbase:add')") - public ResponseEntity create(@Validated @RequestBody MaterialbaseDto resources) { - return new ResponseEntity<>(materialbaseService.insert(resources), HttpStatus.CREATED); - } - - /** - * 修改物料基本信息 - * @param resources - * @return - */ - @PutMapping - @Log("修改物料基本信息") - - //@PreAuthorize("@el.check('materialbase:edit')") - public ResponseEntity update(@Validated @RequestBody MaterialbaseDto resources) { - materialbaseService.updateById(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - /** - * 删除物料基本信息 - * @param ids - * @return - */ - @DeleteMapping - @Log("删除物料基本信息") - - //@PreAuthorize("@el.check('materialbase:del')") - public ResponseEntity delete(@RequestBody Set ids) { - materialbaseService.removeByIds(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - /* - @Log("导出物料基本信息") - - @GetMapping(value = "/download") - //@PreAuthorize("@el.check('materialbase:list')") - public void download(HttpServletResponse response, MaterialbaseQueryParam query) throws IOException { - materialbaseService.download(materialbaseService.queryAll(query), response); - }*/ - -} +//package org.nl.acs.materialbase.rest; +// +//import org.nl.common.logging.annotation.Log; +//import org.nl.acs.materialbase.domain.Materialbase; +//import org.nl.acs.materialbase.service.MaterialbaseService; +//import org.nl.acs.materialbase.service.dto.MaterialbaseDto; +//import org.nl.acs.materialbase.service.dto.MaterialbaseQueryParam; +//import org.springframework.data.domain.Pageable; +//import lombok.RequiredArgsConstructor; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.*; +// +// +//import java.util.Set; +// +///** +// * @author jiaolm +// * @date 2023-05-09 +// **/ +//@RestController +//@RequiredArgsConstructor +// +//@RequestMapping("/api/materialbase") +//public class MaterialbaseController { +// +// private final MaterialbaseService materialbaseService; +// +// /** +// * 查询物料基本信息 +// * @param query +// * @param pageable +// * @return +// */ +// @GetMapping +// @Log("查询物料基本信息") +// +// //@PreAuthorize("@el.check('materialbase:list')") +// public ResponseEntity query(MaterialbaseQueryParam query, Pageable pageable) { +// return new ResponseEntity<>(materialbaseService.queryAll(query, pageable), HttpStatus.OK); +// } +// +// /** +// * 新增物料基本信息 +// * @param resources +// * @return +// */ +// @PostMapping +// @Log("新增物料基本信息") +// +// //@PreAuthorize("@el.check('materialbase:add')") +// public ResponseEntity create(@Validated @RequestBody MaterialbaseDto resources) { +// return new ResponseEntity<>(materialbaseService.insert(resources), HttpStatus.CREATED); +// } +// +// /** +// * 修改物料基本信息 +// * @param resources +// * @return +// */ +// @PutMapping +// @Log("修改物料基本信息") +// +// //@PreAuthorize("@el.check('materialbase:edit')") +// public ResponseEntity update(@Validated @RequestBody MaterialbaseDto resources) { +// materialbaseService.updateById(resources); +// return new ResponseEntity<>(HttpStatus.NO_CONTENT); +// } +// +// /** +// * 删除物料基本信息 +// * @param ids +// * @return +// */ +// @DeleteMapping +// @Log("删除物料基本信息") +// +// //@PreAuthorize("@el.check('materialbase:del')") +// public ResponseEntity delete(@RequestBody Set ids) { +// materialbaseService.removeByIds(ids); +// return new ResponseEntity<>(HttpStatus.OK); +// } +// +// /* +// @Log("导出物料基本信息") +// +// @GetMapping(value = "/download") +// //@PreAuthorize("@el.check('materialbase:list')") +// public void download(HttpServletResponse response, MaterialbaseQueryParam query) throws IOException { +// materialbaseService.download(materialbaseService.queryAll(query), response); +// }*/ +// +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/MaterialbaseService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/MaterialbaseService.java index 1d5f43d..409a8dd 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/MaterialbaseService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/MaterialbaseService.java @@ -1,89 +1,89 @@ -package org.nl.acs.materialbase.service; - -import org.nl.acs.common.base.PageInfo; -import org.nl.acs.common.base.CommonService; -import org.nl.acs.materialbase.domain.Materialbase; -import org.nl.acs.materialbase.service.dto.MaterialbaseDto; -import org.nl.acs.materialbase.service.dto.MaterialbaseQueryParam; -import org.springframework.data.domain.Pageable; - -import java.util.List; -import java.util.Set; - -/** - * @author jiaolm - * @date 2023-05-09 - */ -public interface MaterialbaseService extends CommonService { - - static final String CACHE_KEY = "materialbase"; - - /** - * 查询数据分页 - * - * @param query 条件 - * @param pageable 分页参数 - * @return PageInfo - */ - PageInfo queryAll(MaterialbaseQueryParam query, Pageable pageable); - - /** - * 查询所有数据不分页 - * - * @param query 条件参数 - * @return List - */ - List queryAll(MaterialbaseQueryParam query); - - /** - * 根据ID查询 - * - * @param id ID - * @return MaterialbaseDto - */ - Materialbase getById(String id); - - /** - * 根据ID查询 - * - * @param id ID - * @return MaterialbaseDto - */ - MaterialbaseDto findById(String id); - - /** - * 插入一条新数据。 - * @param resources - * @return - */ - int insert(MaterialbaseDto resources); - - /** - * 根据id修改 - * @param resources - * @return - */ - int updateById(MaterialbaseDto resources); - - /** - * 根据id删除 - * @param id - * @return - */ - int removeById(String id); - - /** - * 多选删除 - * @param ids - * @return - */ - int removeByIds(Set ids); - - /** - * 导出数据 - * @param all 待导出的数据 - * @param response / - * @throws IOException / - */ - // void download(List all, HttpServletResponse response) throws IOException; -} +//package org.nl.acs.materialbase.service; +// +//import org.nl.acs.common.base.PageInfo; +//import org.nl.acs.common.base.CommonService; +//import org.nl.acs.materialbase.domain.Materialbase; +//import org.nl.acs.materialbase.service.dto.MaterialbaseDto; +//import org.nl.acs.materialbase.service.dto.MaterialbaseQueryParam; +//import org.springframework.data.domain.Pageable; +// +//import java.util.List; +//import java.util.Set; +// +///** +// * @author jiaolm +// * @date 2023-05-09 +// */ +//public interface MaterialbaseService extends CommonService { +// +// static final String CACHE_KEY = "materialbase"; +// +// /** +// * 查询数据分页 +// * +// * @param query 条件 +// * @param pageable 分页参数 +// * @return PageInfo +// */ +// PageInfo queryAll(MaterialbaseQueryParam query, Pageable pageable); +// +// /** +// * 查询所有数据不分页 +// * +// * @param query 条件参数 +// * @return List +// */ +// List queryAll(MaterialbaseQueryParam query); +// +// /** +// * 根据ID查询 +// * +// * @param id ID +// * @return MaterialbaseDto +// */ +// Materialbase getById(String id); +// +// /** +// * 根据ID查询 +// * +// * @param id ID +// * @return MaterialbaseDto +// */ +// MaterialbaseDto findById(String id); +// +// /** +// * 插入一条新数据。 +// * @param resources +// * @return +// */ +// int insert(MaterialbaseDto resources); +// +// /** +// * 根据id修改 +// * @param resources +// * @return +// */ +// int updateById(MaterialbaseDto resources); +// +// /** +// * 根据id删除 +// * @param id +// * @return +// */ +// int removeById(String id); +// +// /** +// * 多选删除 +// * @param ids +// * @return +// */ +// int removeByIds(Set ids); +// +// /** +// * 导出数据 +// * @param all 待导出的数据 +// * @param response / +// * @throws IOException / +// */ +// // void download(List all, HttpServletResponse response) throws IOException; +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/dto/MaterialbaseDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/dto/MaterialbaseDto.java index 1884875..f8bea21 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/dto/MaterialbaseDto.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/dto/MaterialbaseDto.java @@ -1,104 +1,104 @@ -package org.nl.acs.materialbase.service.dto; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.math.BigDecimal; -import java.io.Serializable; -import java.util.Date; -import java.sql.Timestamp; - - - -/** - * @author jiaolm - * @date 2023-05-09 - */ -@Data -@Builder -@Accessors(chain = true) -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(callSuper = false) -public class MaterialbaseDto implements Serializable { - private static final long serialVersionUID = 1L; - - - private String material_id; - - - private String material_code; - - - private String material_name; - - - private String material_spec; - - - private String material_model; - - - private String base_unit_id; - - - private String print_no; - - - private String len_unit_id; - - - private BigDecimal length; - - - private BigDecimal width; - - - private BigDecimal height; - - - private String weight_unit_id; - - - private BigDecimal gross_weight; - - - private BigDecimal net_weight; - - - private String cubage_unit_id; - - - private BigDecimal cubage; - - - private BigDecimal outer_diameter; - - - private BigDecimal wall_thickness; - - - private String create_by; - - - private String create_time; - - - private String update_by; - - - private String update_time; - - - private String is_used_time; - - - private String is_used; - - - private String is_delete; -} +//package org.nl.acs.materialbase.service.dto; +// +//import lombok.AllArgsConstructor; +//import lombok.Builder; +//import lombok.Data; +//import lombok.NoArgsConstructor; +//import lombok.EqualsAndHashCode; +//import lombok.experimental.Accessors; +// +//import java.math.BigDecimal; +//import java.io.Serializable; +//import java.util.Date; +//import java.sql.Timestamp; +// +// +// +///** +// * @author jiaolm +// * @date 2023-05-09 +// */ +//@Data +//@Builder +//@Accessors(chain = true) +//@NoArgsConstructor +//@AllArgsConstructor +//@EqualsAndHashCode(callSuper = false) +//public class MaterialbaseDto implements Serializable { +// private static final long serialVersionUID = 1L; +// +// +// private String material_id; +// +// +// private String material_code; +// +// +// private String material_name; +// +// +// private String material_spec; +// +// +// private String material_model; +// +// +// private String base_unit_id; +// +// +// private String print_no; +// +// +// private String len_unit_id; +// +// +// private BigDecimal length; +// +// +// private BigDecimal width; +// +// +// private BigDecimal height; +// +// +// private String weight_unit_id; +// +// +// private BigDecimal gross_weight; +// +// +// private BigDecimal net_weight; +// +// +// private String cubage_unit_id; +// +// +// private BigDecimal cubage; +// +// +// private BigDecimal outer_diameter; +// +// +// private BigDecimal wall_thickness; +// +// +// private String create_by; +// +// +// private String create_time; +// +// +// private String update_by; +// +// +// private String update_time; +// +// +// private String is_used_time; +// +// +// private String is_used; +// +// +// private String is_delete; +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/dto/MaterialbaseQueryParam.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/dto/MaterialbaseQueryParam.java index e3eec01..ad3c6af 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/dto/MaterialbaseQueryParam.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/dto/MaterialbaseQueryParam.java @@ -1,20 +1,20 @@ -package org.nl.acs.materialbase.service.dto; - -import lombok.Getter; -import lombok.Setter; - -import java.util.List; -import java.util.Date; - -import org.nl.common.annotation.Query; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * @author jiaolm - * @date 2023-05-09 - */ -@Getter -@Setter -public class MaterialbaseQueryParam { - -} +//package org.nl.acs.materialbase.service.dto; +// +//import lombok.Getter; +//import lombok.Setter; +// +//import java.util.List; +//import java.util.Date; +// +//import org.nl.common.annotation.Query; +//import org.springframework.format.annotation.DateTimeFormat; +// +///** +// * @author jiaolm +// * @date 2023-05-09 +// */ +//@Getter +//@Setter +//public class MaterialbaseQueryParam { +// +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/impl/MaterialbaseServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/impl/MaterialbaseServiceImpl.java index 1c76ee7..2186687 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/impl/MaterialbaseServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/impl/MaterialbaseServiceImpl.java @@ -1,133 +1,133 @@ -package org.nl.acs.materialbase.service.impl; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import lombok.AllArgsConstructor; -import org.nl.acs.common.base.PageInfo; -import org.nl.acs.common.base.QueryHelpMybatisPlus; -import org.nl.acs.common.base.impl.CommonServiceImpl; -import org.nl.acs.utils.ConvertUtil; -import org.nl.acs.utils.PageUtil; -import org.nl.acs.materialbase.domain.Materialbase; -import org.nl.acs.materialbase.service.MaterialbaseService; -import org.nl.acs.materialbase.service.dto.MaterialbaseDto; -import org.nl.acs.materialbase.service.dto.MaterialbaseQueryParam; -import org.nl.acs.materialbase.service.mapper.MaterialbaseMapper; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.data.domain.Pageable; - -import java.util.*; - -/** - * @author jiaolm - * @date 2023-05-09 - */ -@Service -@AllArgsConstructor -// @CacheConfig(cacheNames = MaterialbaseService.CACHE_KEY) -@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) -public class MaterialbaseServiceImpl extends CommonServiceImpl implements MaterialbaseService { - - private final MaterialbaseMapper materialbaseMapper; - - @Override - public PageInfo queryAll(MaterialbaseQueryParam query, Pageable pageable) { - IPage queryPage = PageUtil.toMybatisPage(pageable); - IPage page = materialbaseMapper.selectPage(queryPage, QueryHelpMybatisPlus.getPredicate(query)); - return ConvertUtil.convertPage(page, MaterialbaseDto.class); - } - - @Override - public List queryAll(MaterialbaseQueryParam query) { - return ConvertUtil.convertList(materialbaseMapper.selectList(QueryHelpMybatisPlus.getPredicate(query)), MaterialbaseDto.class); - } - - @Override - public Materialbase getById(String id) { - return materialbaseMapper.selectById(id); - } - - @Override - - public MaterialbaseDto findById(String id) { - return ConvertUtil.convert(getById(id), MaterialbaseDto.class); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int insert(MaterialbaseDto resources) { - Materialbase entity = ConvertUtil.convert(resources, Materialbase.class); - return materialbaseMapper.insert(entity); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int updateById(MaterialbaseDto resources) { - Materialbase entity = ConvertUtil.convert(resources, Materialbase.class); - int ret = materialbaseMapper.updateById(entity); - // delCaches(resources.id); - return ret; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int removeByIds(Set ids) { - // delCaches(ids); - return materialbaseMapper.deleteBatchIds(ids); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int removeById(String id) { - Set set = new HashSet<>(1); - set.add(id); - return this.removeByIds(set); - } - - /* - private void delCaches(String id) { - redisUtils.delByKey(CACHE_KEY + "::id:", id); - } - - private void delCaches(Set ids) { - for (String id: ids) { - delCaches(id); - } - }*/ - - /* - @Override - public void download(List all, HttpServletResponse response) throws IOException { - List> list = new ArrayList<>(); - for (MaterialbaseDto materialbase : all) { - Map map = new LinkedHashMap<>(); - map.put("物料编码", materialbase.getMaterialCode()); - map.put("物料名称 ", materialbase.getMaterialName()); - map.put("规格", materialbase.getMaterialSpec()); - map.put("型号", materialbase.getMaterialModel()); - map.put("基本计量单位", materialbase.getBaseUnitId()); - map.put("工程图号", materialbase.getPrintNo()); - map.put("长度单位", materialbase.getLenUnitId()); - map.put("物料长度", materialbase.getLength()); - map.put("物料宽度", materialbase.getWidth()); - map.put("物料高度", materialbase.getHeight()); - map.put("重量单位", materialbase.getWeightUnitId()); - map.put("物料毛重", materialbase.getGrossWeight()); - map.put("物料净重", materialbase.getNetWeight()); - map.put("体积单位", materialbase.getCubageUnitId()); - map.put("物料体积", materialbase.getCubage()); - map.put("外径", materialbase.getOuterDiameter()); - map.put("壁厚", materialbase.getWallThickness()); - map.put("创建者", materialbase.getCreateBy()); - map.put("创建时间", materialbase.getCreateTime()); - map.put("修改者", materialbase.getUpdateBy()); - map.put("修改时间", materialbase.getUpdateTime()); - map.put("启用时间", materialbase.getIsUsedTime()); - map.put("是否启用", materialbase.getIsUsed()); - map.put("是否删除", materialbase.getIsDelete()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - }*/ -} +//package org.nl.acs.materialbase.service.impl; +// +//import com.baomidou.mybatisplus.core.metadata.IPage; +//import lombok.AllArgsConstructor; +//import org.nl.acs.common.base.PageInfo; +//import org.nl.acs.common.base.QueryHelpMybatisPlus; +//import org.nl.acs.common.base.impl.CommonServiceImpl; +//import org.nl.acs.utils.ConvertUtil; +//import org.nl.acs.utils.PageUtil; +//import org.nl.acs.materialbase.domain.Materialbase; +//import org.nl.acs.materialbase.service.MaterialbaseService; +//import org.nl.acs.materialbase.service.dto.MaterialbaseDto; +//import org.nl.acs.materialbase.service.dto.MaterialbaseQueryParam; +//import org.nl.acs.materialbase.service.mapper.MaterialbaseMapper; +//import org.springframework.stereotype.Service; +//import org.springframework.transaction.annotation.Propagation; +//import org.springframework.transaction.annotation.Transactional; +//import org.springframework.data.domain.Pageable; +// +//import java.util.*; +// +///** +// * @author jiaolm +// * @date 2023-05-09 +// */ +//@Service +//@AllArgsConstructor +//// @CacheConfig(cacheNames = MaterialbaseService.CACHE_KEY) +//@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +//public class MaterialbaseServiceImpl extends CommonServiceImpl implements MaterialbaseService { +// +// private final MaterialbaseMapper materialbaseMapper; +// +// @Override +// public PageInfo queryAll(MaterialbaseQueryParam query, Pageable pageable) { +// IPage queryPage = PageUtil.toMybatisPage(pageable); +// IPage page = materialbaseMapper.selectPage(queryPage, QueryHelpMybatisPlus.getPredicate(query)); +// return ConvertUtil.convertPage(page, MaterialbaseDto.class); +// } +// +// @Override +// public List queryAll(MaterialbaseQueryParam query) { +// return ConvertUtil.convertList(materialbaseMapper.selectList(QueryHelpMybatisPlus.getPredicate(query)), MaterialbaseDto.class); +// } +// +// @Override +// public Materialbase getById(String id) { +// return materialbaseMapper.selectById(id); +// } +// +// @Override +// +// public MaterialbaseDto findById(String id) { +// return ConvertUtil.convert(getById(id), MaterialbaseDto.class); +// } +// +// @Override +// @Transactional(rollbackFor = Exception.class) +// public int insert(MaterialbaseDto resources) { +// Materialbase entity = ConvertUtil.convert(resources, Materialbase.class); +// return materialbaseMapper.insert(entity); +// } +// +// @Override +// @Transactional(rollbackFor = Exception.class) +// public int updateById(MaterialbaseDto resources) { +// Materialbase entity = ConvertUtil.convert(resources, Materialbase.class); +// int ret = materialbaseMapper.updateById(entity); +// // delCaches(resources.id); +// return ret; +// } +// +// @Override +// @Transactional(rollbackFor = Exception.class) +// public int removeByIds(Set ids) { +// // delCaches(ids); +// return materialbaseMapper.deleteBatchIds(ids); +// } +// +// @Override +// @Transactional(rollbackFor = Exception.class) +// public int removeById(String id) { +// Set set = new HashSet<>(1); +// set.add(id); +// return this.removeByIds(set); +// } +// +// /* +// private void delCaches(String id) { +// redisUtils.delByKey(CACHE_KEY + "::id:", id); +// } +// +// private void delCaches(Set ids) { +// for (String id: ids) { +// delCaches(id); +// } +// }*/ +// +// /* +// @Override +// public void download(List all, HttpServletResponse response) throws IOException { +// List> list = new ArrayList<>(); +// for (MaterialbaseDto materialbase : all) { +// Map map = new LinkedHashMap<>(); +// map.put("物料编码", materialbase.getMaterialCode()); +// map.put("物料名称 ", materialbase.getMaterialName()); +// map.put("规格", materialbase.getMaterialSpec()); +// map.put("型号", materialbase.getMaterialModel()); +// map.put("基本计量单位", materialbase.getBaseUnitId()); +// map.put("工程图号", materialbase.getPrintNo()); +// map.put("长度单位", materialbase.getLenUnitId()); +// map.put("物料长度", materialbase.getLength()); +// map.put("物料宽度", materialbase.getWidth()); +// map.put("物料高度", materialbase.getHeight()); +// map.put("重量单位", materialbase.getWeightUnitId()); +// map.put("物料毛重", materialbase.getGrossWeight()); +// map.put("物料净重", materialbase.getNetWeight()); +// map.put("体积单位", materialbase.getCubageUnitId()); +// map.put("物料体积", materialbase.getCubage()); +// map.put("外径", materialbase.getOuterDiameter()); +// map.put("壁厚", materialbase.getWallThickness()); +// map.put("创建者", materialbase.getCreateBy()); +// map.put("创建时间", materialbase.getCreateTime()); +// map.put("修改者", materialbase.getUpdateBy()); +// map.put("修改时间", materialbase.getUpdateTime()); +// map.put("启用时间", materialbase.getIsUsedTime()); +// map.put("是否启用", materialbase.getIsUsed()); +// map.put("是否删除", materialbase.getIsDelete()); +// list.add(map); +// } +// FileUtil.downloadExcel(list, response); +// }*/ +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/mapper/MaterialbaseMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/mapper/MaterialbaseMapper.java index 4793869..dfacf09 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/mapper/MaterialbaseMapper.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/materialbase/service/mapper/MaterialbaseMapper.java @@ -1,14 +1,14 @@ -package org.nl.acs.materialbase.service.mapper; - -import org.nl.acs.common.base.CommonMapper; -import org.nl.acs.materialbase.domain.Materialbase; -import org.springframework.stereotype.Repository; - -/** - * @author jiaolm - * @date 2023-05-09 - */ -@Repository -public interface MaterialbaseMapper extends CommonMapper { - -} +//package org.nl.acs.materialbase.service.mapper; +// +//import org.nl.acs.common.base.CommonMapper; +//import org.nl.acs.materialbase.domain.Materialbase; +//import org.springframework.stereotype.Repository; +// +///** +// * @author jiaolm +// * @date 2023-05-09 +// */ +//@Repository +//public interface MaterialbaseMapper extends CommonMapper { +// +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index 5d41ea7..321da0e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -25,6 +25,7 @@ import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; import org.nl.acs.udw.UnifiedDataAppService; import org.nl.common.enums.LogTypeEnum; +import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; import org.nl.config.lucene.service.LuceneExecuteLogService; import org.nl.config.lucene.service.dto.LuceneLogDto; @@ -351,6 +352,9 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC private static OpcUaClient createClient() throws Exception { ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); String endPointUrl = paramService.findByCode(AcsConfig.OPCURL).getValue(); + if (StrUtil.isEmpty(endPointUrl)){ + throw new BadRequestException("opc地址未配置!"); + } //opc ua服务端地址 Path securityTempDir = Paths.get(System.getProperty("java.io.tmpdir"), "security"); Files.createDirectories(securityTempDir); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/TestOpcUA.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/TestOpcUA.java index b6b72f0..223bea8 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/TestOpcUA.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/TestOpcUA.java @@ -1,6 +1,7 @@ package org.nl.acs.opc; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import org.eclipse.milo.opcua.sdk.client.OpcUaClient; import org.eclipse.milo.opcua.sdk.client.api.identity.AnonymousProvider; import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscription; @@ -20,6 +21,7 @@ import org.eclipse.milo.opcua.stack.core.types.structured.MonitoredItemCreateReq import org.eclipse.milo.opcua.stack.core.types.structured.MonitoringParameters; import org.eclipse.milo.opcua.stack.core.types.structured.ReadValueId; import org.nl.acs.AcsConfig; +import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.ISysParamService; @@ -44,6 +46,9 @@ public class TestOpcUA { private static OpcUaClient createClient() throws Exception { ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); String endPointUrl = paramService.findByCode(AcsConfig.OPCURL).getValue(); + if (StrUtil.isEmpty(endPointUrl)){ + throw new BadRequestException("opc地址未配置!"); + } //opc ua服务端地址 Path securityTempDir = Paths.get(System.getProperty("java.io.tmpdir"), "security"); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderDetailMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderDetailMapper.java new file mode 100644 index 0000000..377a90a --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderDetailMapper.java @@ -0,0 +1,8 @@ +package org.nl.acs.order.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.acs.order.service.dto.OrderDetailDto; + + +public interface OrderDetailMapper extends BaseMapper { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderMapper.java new file mode 100644 index 0000000..a126fd0 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderMapper.java @@ -0,0 +1,20 @@ +package org.nl.acs.order.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.acs.common.base.CommonMapper; +import org.nl.acs.order.service.dto.OrderDto; +import org.nl.acs.order.service.dto.OrderQuery; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +@Repository +public interface OrderMapper extends CommonMapper { + + + List findList(Map whereJson, Pageable page); + + IPage selectPage(IPage pages, OrderQuery query); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderMapper.xml b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderMapper.xml new file mode 100644 index 0000000..e9bc9e4 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/mapper/OrderMapper.xml @@ -0,0 +1,43 @@ + + + + + + + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/rest/OrderController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/rest/OrderController.java new file mode 100644 index 0000000..ff41e6e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/rest/OrderController.java @@ -0,0 +1,96 @@ +package org.nl.acs.order.rest; + +import cn.hutool.core.map.MapUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.order.service.OrderService; +import org.nl.acs.order.service.dto.OrderDto; +import org.nl.acs.order.service.dto.OrderQuery; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/order") +@Slf4j +public class OrderController { + + private final OrderService orderService; + + @GetMapping + @Log("查询工序工单") + + //@SaCheckPermission("@el.check('rawfoilworkorder:list')") + public ResponseEntity query(@RequestParam Map whereJson,PageQuery page) { + String resource_name = MapUtil.getStr(whereJson, "resource_name"); + String status = MapUtil.getStr(whereJson, "status"); + String begin_time = MapUtil.getStr(whereJson, "begin_time"); + String end_time = MapUtil.getStr(whereJson, "end_time"); + OrderQuery query = new OrderQuery(); + query.setResource_name(resource_name); + query.setBegin_time(begin_time); + query.setEnd_time(end_time); + query.setStatus(status); + return new ResponseEntity<>(TableDataInfo.build(orderService.queryAll(query, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增工序工单") + + //@SaCheckPermission("@el.check('rawfoilworkorder:add')") + public ResponseEntity create(@Validated @RequestBody JSONObject whereJson) { + orderService.create(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改工序工单") + + //@SaCheckPermission("@el.check('rawfoilworkorder:edit')") + public ResponseEntity update(@Validated @RequestBody OrderDto dto) { + orderService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除工序工单") + + //@SaCheckPermission("@el.check('rawfoilworkorder:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody String[] ids) { + orderService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("强制完成") + + @PostMapping("/forceFinish") + public ResponseEntity forceFinish(@RequestBody JSONObject whereJson) { + orderService.forceFinish(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("开始") + + @PostMapping("/start") + public ResponseEntity start(@RequestBody JSONObject whereJson) { + orderService.start(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getOutBillDtl") + @Log("查询明细") + + public ResponseEntity getOutBillDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(orderService.getOutBillDtl(whereJson), HttpStatus.OK); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/rest/OrderDetailController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/rest/OrderDetailController.java new file mode 100644 index 0000000..0a2ebca --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/rest/OrderDetailController.java @@ -0,0 +1,57 @@ +package org.nl.acs.order.rest; + +import org.nl.acs.order.service.OrderDetailService; +import org.nl.acs.order.service.dto.OrderDetailDto; +import org.nl.acs.order.service.dto.OrderDetailQuery; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Set; + +@RestController +@RequestMapping("/orderDetail") +public class OrderDetailController { + @Autowired + private OrderDetailService orderDetailService; + + @GetMapping + @Log("查询物料") + + //@PreAuthorize("@el.check('Materialbase:list')") + public ResponseEntity query(OrderDetailQuery whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(orderDetailService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增物料") + + //@PreAuthorize("@el.check('Materialbase:add')") + public ResponseEntity create(@Validated @RequestBody OrderDetailDto dto) { + orderDetailService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改物料") + + //@PreAuthorize("@el.check('Materialbase:edit')") + public ResponseEntity update(@Validated @RequestBody OrderDetailDto dto) { + orderDetailService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除物料") + + //@PreAuthorize("@el.check('Materialbase:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + orderDetailService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/OrderDetailService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/OrderDetailService.java new file mode 100644 index 0000000..791dbb6 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/OrderDetailService.java @@ -0,0 +1,37 @@ +package org.nl.acs.order.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.order.service.dto.OrderDetailDto; +import org.nl.acs.order.service.dto.OrderDetailQuery; +import org.nl.acs.product.domain.Productdtl; +import org.nl.acs.product.domain.ProductdtlQuery; +import org.nl.common.domain.query.PageQuery; + +import java.util.Set; + +public interface OrderDetailService extends IService { + + IPage queryAll(OrderDetailQuery whereJson, PageQuery page); + + /** + * 创建 + * + * @param entity / + */ + void create(OrderDetailDto entity); + + /** + * 编辑 + * + * @param entity / + */ + void update(OrderDetailDto entity); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/OrderService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/OrderService.java new file mode 100644 index 0000000..2eeedac --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/OrderService.java @@ -0,0 +1,94 @@ +package org.nl.acs.order.service; + +import cn.hutool.json.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.acs.common.base.CommonService; +import org.nl.acs.order.service.dto.OrderDto; +import org.nl.acs.order.service.dto.OrderQuery; +import org.nl.common.domain.query.PageQuery; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +public interface OrderService extends CommonService { + + /** + * 查询数据分页 + * + * @param query 条件 + * @param pageable 分页参数 + * @return Map + */ + IPage queryAll(OrderQuery query, PageQuery pageable); + + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * + * @param workorder_id ID + * @return Rawfoilworkorder + */ + OrderDto findById(Long workorder_id); + + /** + * 根据编码查询 + * + * @param code code + * @return Rawfoilworkorder + */ + OrderDto findByCode(String code); + + + /** + * 创建 + * + * @param whereJson / + */ + void create(JSONObject whereJson); + + /** + * 编辑 + * + * @param dto / + */ + void update(OrderDto dto); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(String[] ids); + + /** + * 强制确认 + * + * @param whereJson / + */ + void forceFinish(JSONObject whereJson); + + /** + * 称重 + * + * @param whereJson / + */ + void start(JSONObject whereJson); + + /** + * 查询工单明细 + * + * @param whereJson / + * @return + */ + JSONArray getOutBillDtl(Map whereJson); + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDetailDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDetailDto.java new file mode 100644 index 0000000..59d679c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDetailDto.java @@ -0,0 +1,62 @@ +package org.nl.acs.order.service.dto; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("acs_orderdetail") +@ApiModel(value="Acs_orderdetail对象", description="工单明细表") +public class OrderDetailDto implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "物料标识") + @TableId + private String material_id; + + @ApiModelProperty(value = "工单标识") + private String workorder_id; + + @ApiModelProperty(value = "工单编码") + private String mfg_order_name; + + @ApiModelProperty(value = "明细序号") + private int seq_no; + + @ApiModelProperty(value = "物料编码") + private String material_code; + + @ApiModelProperty(value = "物料名称") + private String material_name; + + @ApiModelProperty(value = "物料重量") + private float productin_qty; + + @ApiModelProperty(value = "单位") + private String base_unit_id; + + @ApiModelProperty(value = "创建者") + private String create_by; + + @ApiModelProperty(value = "创建时间") + private String create_time; + + @ApiModelProperty(value = "修改者") + private String update_by; + + @ApiModelProperty(value = "修改时间") + private String update_time; + + /** + * 是否删除 + */ + private String is_delete; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDetailQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDetailQuery.java new file mode 100644 index 0000000..ef1a91c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDetailQuery.java @@ -0,0 +1,9 @@ +package org.nl.acs.order.service.dto; + +import lombok.Data; + +@Data +public class OrderDetailQuery { + private String blurry; + private String material_id; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDto.java new file mode 100644 index 0000000..704bbb4 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderDto.java @@ -0,0 +1,124 @@ +package org.nl.acs.order.service.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.*; +import lombok.experimental.Accessors; +import org.nl.acs.common.base.CommonModel; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = false) +@TableName("acs_workorder") +public class OrderDto extends CommonModel implements Serializable { + /** 工单标识 */ + /** + * 防止精度丢失 + */ + @TableId + private String workorder_id; + + + /** + * 机台编码 + */ + private String resource_name; + + /** + * 工单编号 + */ + private String mfg_order_name; + + /** + * 产品编码 + */ + private String product_name; + + /** + * 产品名称 + */ + private String description; + + + + /** + * 产品总重量 + */ + private float total_qty; + + /** + * 开始时间 + */ + private String realstart_time; + + /** + * 结束时间 + */ + private String realend_time; + + /** + * 状态 + */ + private String status; + + + /** + * 备注 + */ + private String remark; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_optid; + + /** + * 修改人 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 是否删除 + */ + private String is_delete; + + + /** + * 点位编码 + */ + private String point_code; + + /** + * 明细数量 + */ + private int detail_count; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderQuery.java new file mode 100644 index 0000000..9e8dff1 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/dto/OrderQuery.java @@ -0,0 +1,17 @@ +package org.nl.acs.order.service.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OrderQuery implements Serializable { + private String status; + private String begin_time; + private String end_time; + private String resource_name; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/impl/OrderDetailServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/impl/OrderDetailServiceImpl.java new file mode 100644 index 0000000..e15f3db --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/impl/OrderDetailServiceImpl.java @@ -0,0 +1,37 @@ +package org.nl.acs.order.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.acs.order.mapper.OrderDetailMapper; +import org.nl.acs.order.service.OrderDetailService; +import org.nl.acs.order.service.dto.OrderDetailDto; +import org.nl.acs.order.service.dto.OrderDetailQuery; +import org.nl.acs.product.domain.Productdtl; +import org.nl.common.domain.query.PageQuery; +import org.springframework.stereotype.Service; + +import java.util.Set; + +@Service +public class OrderDetailServiceImpl extends ServiceImpl implements OrderDetailService { + + @Override + public IPage queryAll(OrderDetailQuery whereJson, PageQuery page) { + return null; + } + + @Override + public void create(OrderDetailDto entity) { + + } + + @Override + public void update(OrderDetailDto entity) { + + } + + @Override + public void deleteAll(Set ids) { + + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/impl/OrderServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/impl/OrderServiceImpl.java new file mode 100644 index 0000000..846108d --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/order/service/impl/OrderServiceImpl.java @@ -0,0 +1,275 @@ +package org.nl.acs.order.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.nl.acs.common.base.impl.CommonServiceImpl; +import org.nl.acs.data.domain.Materialbase; +import org.nl.acs.data.service.IMaterialbaseService; +import org.nl.acs.order.mapper.OrderDetailMapper; +import org.nl.acs.order.mapper.OrderMapper; +import org.nl.acs.order.service.OrderService; +import org.nl.acs.order.service.dto.OrderDetailDto; +import org.nl.acs.order.service.dto.OrderDto; +import org.nl.acs.order.service.dto.OrderQuery; +import org.nl.acs.product.domain.Product; +import org.nl.acs.product.domain.Productdtl; +import org.nl.acs.sch.task.service.WorkService; +import org.nl.acs.sch.task.service.dao.Work; +import org.nl.acs.sch.task.service.dao.mapper.WorkMapper; +import org.nl.acs.task.domain.Task; +import org.nl.acs.utils.PageUtil; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@Slf4j +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class OrderServiceImpl extends CommonServiceImpl implements OrderService { + @Autowired + private OrderMapper orderMapper; + + @Autowired + private OrderDetailMapper orderDetailMapper; + + @Autowired + private WorkService workService; + + @Autowired + private IMaterialbaseService materialbaseService; + + + @Override + public IPage queryAll(OrderQuery query, PageQuery page) { + IPage pages = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPage() + 1, page.getSize()); + pages = orderMapper.selectPage(pages, query); + return pages; + } + + @Override + public List queryAll(Map whereJson) { + List list = orderMapper.findList(whereJson, null); + if (CollUtil.isNotEmpty(list)) { + return list; + } + return null; + } + + @Override + public OrderDto findById(Long workorder_id) { + return orderMapper.selectById(workorder_id); + } + + + @Override + public OrderDto findByCode(String code) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(OrderDto::getMfg_order_name, code); + return orderMapper.selectOne(wrapper); + } + + @Override + public void create(JSONObject map) { + JSONArray rows = map.getJSONArray("tableData"); + map.remove("tableData"); + OrderDto orderDto = orderMapper.selectById(MapUtil.getStr(map, "workorder_id")); + if (orderDto != null) { + throw new BadRequestException("工单已存在!"); + } + OrderDto dto = new OrderDto(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextId() + ""); + dto.setMfg_order_name(CodeUtil.getNewCode("ORDER_NO")); + dto.setProduct_name(CodeUtil.getNewCode("PRODUCT_CODE")); + dto.setResource_name("A"); + //todo 后期确定名称需要修改 + dto.setDescription("1"); + dto.setStatus("0"); + dto.setCreate_name(nickName); + dto.setCreate_time(now); + dto.setDetail_count(rows.size()); + //处理工单明细 + float qtySum = this.insertDtlByRows(dto, rows); + dto.setTotal_qty(qtySum); + orderMapper.insert(dto); + } + + private float insertDtlByRows(OrderDto entity, JSONArray rows) { + float sum = 0; + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + OrderDetailDto orderDetailDto = new OrderDetailDto(); + orderDetailDto.setMaterial_id(IdUtil.getSnowflake(1, 1).nextId() + "") + .setSeq_no(i) + .setMaterial_code(CodeUtil.getNewCode("MATERIAL_NO")) + .setWorkorder_id(entity.getWorkorder_id()) + .setMfg_order_name(entity.getMfg_order_name()) + .setMaterial_name(json.getString("material_name")) + .setBase_unit_id(json.getString("base_unit_id")) + .setProductin_qty(json.getFloatValue("qty")) + .setCreate_by(SecurityUtils.getCurrentNickName()) + .setCreate_time(DateUtil.now()) + .setUpdate_by(SecurityUtils.getCurrentNickName()) + .setUpdate_time(DateUtil.now()); + orderDetailMapper.insert(orderDetailDto); + String jsonString = json.getString("qty"); + float qty = Float.parseFloat(jsonString); + sum += qty; + } + return sum; + } + + @Override + public void update(OrderDto dto) { + OrderDto orderDto = orderMapper.selectById(dto.getWorkorder_id()); + if (orderDto == null) { + throw new BadRequestException("工单不存在!"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + orderMapper.updateById(dto); + } + + @Transactional + @Override + public void deleteAll(String[] ids) { + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + // 批量查询 + List orderDtos = orderMapper.selectBatchIds(Arrays.asList(ids)); + + if (CollUtil.isEmpty(orderDtos)) { + log.warn("未找到对应的工单,无需删除"); + return; + } + + // 批量查询 + List mfgOrderNames = orderDtos.stream().map(OrderDto::getMfg_order_name).collect(Collectors.toList()); + List orderDetailDtos = orderDetailMapper.selectList(new LambdaQueryWrapper().in(OrderDetailDto::getMfg_order_name, mfgOrderNames)); + + for (OrderDto dto : orderDtos) { + if (dto == null) { + log.warn("工单 {} 不存在", dto.getWorkorder_id()); + continue; + } + + dto.setIs_delete("1"); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + + for (OrderDetailDto orderDetailDto : orderDetailDtos) { + if (orderDetailDto.getMfg_order_name().equals(dto.getMfg_order_name())) { + orderDetailDto.setIs_delete("1"); + orderDetailDto.setUpdate_by(nickName); + orderDetailDto.setUpdate_time(now); + orderDetailMapper.updateById(orderDetailDto); + } + } + orderMapper.updateById(dto); + } + } + + @Override + public void forceFinish(JSONObject whereJson) { + String workorder_id = whereJson.getString("workorder_id"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + OrderDto orderDto = orderMapper.selectById(workorder_id); + orderDto.setStatus("2"); + orderDto.setRealend_time(DateUtil.now()); + orderDto.setUpdate_optid(currentUserId); + orderDto.setUpdate_optname(currentUsername); + orderDto.setUpdate_time(DateUtil.now()); + orderMapper.updateById(orderDto); + } + + @Override + public void start(JSONObject whereJson) { + String workorder_id = whereJson.getString("workorder_id"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + OrderDto orderDto = orderMapper.selectById(workorder_id); + orderDto.setStatus("1"); + orderDto.setRealstart_time(DateUtil.now()); + orderDto.setUpdate_optid(currentUserId); + orderDto.setUpdate_optname(currentUsername); + orderDto.setUpdate_time(DateUtil.now()); + //生成配料任务 + List list = orderDetailMapper.selectList(Wrappers.lambdaQuery(OrderDetailDto.class).eq(OrderDetailDto::getWorkorder_id, workorder_id)); + List works = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + OrderDetailDto orderDetailDto = list.get(i); + String material_code = orderDetailDto.getMaterial_code(); + Materialbase materialbase = materialbaseService.findByCode(material_code); + if (materialbase == null) { + throw new BadRequestException("不存在物料编码为" + material_code + "的物料!"); + } + int count = (int) Math.ceil((double) orderDetailDto.getProductin_qty() / materialbase.getQty()); + Work work = new Work(); + work.setWork_id(IdUtil.getSnowflake(1, 1).nextId() + "") + .setWork_code(CodeUtil.getNewCode("WORK_CODE")) + .setStatus("0") + .setSeq_no(orderDetailDto.getSeq_no()) + .setMfg_order_name(orderDetailDto.getMfg_order_name()) + .setMaterial_code(orderDetailDto.getMaterial_code()) + .setMaterial_name(orderDetailDto.getMaterial_name()) + .setResource_name(orderDto.getResource_name()) + .setRequire_num(count) + .setRemain_num(count) + .setQty(orderDetailDto.getProductin_qty()) + .setCreate_by(currentUsername) + .setCreate_time(DateUtil.now()) + .setUpdate_by(currentUsername) + .setUpdate_time(DateUtil.now()); + works.add(work); + } + workService.saveBatch(works); + orderMapper.updateById(orderDto); + } + + @Override + public cn.hutool.json.JSONArray getOutBillDtl(Map whereJson) { + List list = orderDetailMapper.selectList(Wrappers.lambdaQuery(OrderDetailDto.class).eq(OrderDetailDto::getWorkorder_id, whereJson.get("workorder_id"))); + if (list != null) { + return JSONUtil.parseArray(list); + } + return null; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/controller/AcsPointController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/controller/AcsPointController.java new file mode 100644 index 0000000..4013e22 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/controller/AcsPointController.java @@ -0,0 +1,84 @@ +package org.nl.acs.point.controller; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.point.domain.AcsPoint; +import org.nl.acs.point.domain.PointQuery; +import org.nl.acs.point.service.IAcsPointService; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Set; + +/** + *

+ * 点位基础表 前端控制器 + *

+ * + * @author tuqiang + * @since 2024-09-27 + */ +@RestController +@RequestMapping("/api/point") +public class AcsPointController { + @Autowired + private IAcsPointService pointService; + + @GetMapping + @Log("查询点位管理") + //@SaCheckPermission("@el.check('schBasePoint:list')") + public ResponseEntity query(PointQuery whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(pointService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增点位管理") + //@SaCheckPermission("@el.check('schBasePoint:add')") + public ResponseEntity create(@Validated @RequestBody AcsPoint entity) { + pointService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改点位管理") + //@SaCheckPermission("@el.check('schBasePoint:edit')") + public ResponseEntity update(@Validated @RequestBody AcsPoint entity) { + pointService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除点位管理") + //@SaCheckPermission("@el.check('schBasePoint:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + pointService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("启动与禁用") + @PostMapping("/changeUsed") + public ResponseEntity changeUsedOn(@RequestBody JSONObject jsonObject) { + pointService.changeUsed(jsonObject); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/getPointList") + @Log("获取区域下拉框") + //@SaCheckPermission("@el.check('schBaseRegion:list')") + public ResponseEntity getPointList(@RequestBody(required = false) AcsPoint region) { + return new ResponseEntity<>(pointService.getPointList(region), HttpStatus.OK); + } + + @Log("锁定与解锁") + @PostMapping("/changeLock") + public ResponseEntity changeLock(@RequestBody JSONObject points) { + pointService.changeLock(points); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/domain/AcsPoint.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/domain/AcsPoint.java new file mode 100644 index 0000000..5de827c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/domain/AcsPoint.java @@ -0,0 +1,66 @@ +package org.nl.acs.point.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; +import lombok.experimental.Accessors; + +/** + *

+ * 点位基础表 + *

+ * + * @author tuqiang + * @since 2024-09-27 + */ +@Data +@Builder +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("acs_point") +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value="AcsPoint对象", description="点位基础表") +public class AcsPoint implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.ASSIGN_ID) + private String point_code; + + @ApiModelProperty(value = "点位名称") + private String point_name; + + @ApiModelProperty(value = "点位状态") + private String point_status; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "是否启用") + private Boolean is_used; + + @ApiModelProperty(value = "创建人") + private String create_id; + + @ApiModelProperty(value = "创建人") + private String create_name; + + @ApiModelProperty(value = "创建时间") + private String create_time; + + @ApiModelProperty(value = "修改人") + private String update_id; + + @ApiModelProperty(value = "修改人") + private String update_name; + + @ApiModelProperty(value = "修改时间") + private String update_time; + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/domain/PointQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/domain/PointQuery.java new file mode 100644 index 0000000..9cc6afb --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/domain/PointQuery.java @@ -0,0 +1,12 @@ +package org.nl.acs.point.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PointQuery implements Serializable { + private String blurry; + private String point_status; + private Boolean is_used; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/mapper/AcsPointMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/mapper/AcsPointMapper.java new file mode 100644 index 0000000..3401fcc --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/mapper/AcsPointMapper.java @@ -0,0 +1,28 @@ +package org.nl.acs.point.mapper; + + +import org.nl.acs.point.domain.AcsPoint; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

+ * 点位基础表 Mapper 接口 + *

+ * + * @author tuqiang + * @since 2024-09-27 + */ +@Repository +public interface AcsPointMapper extends BaseMapper { + + /** + * 批量禁用启用 + * + * @param pointCodes + * @param used + */ + void batchChangeUsed(List pointCodes, Boolean used); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/mapper/AcsPointMapper.xml b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/mapper/AcsPointMapper.xml new file mode 100644 index 0000000..b774937 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/mapper/AcsPointMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + UPDATE acs_point + SET is_used = #{used} + + point_code IN + + #{code} + + + + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/service/IAcsPointService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/service/IAcsPointService.java new file mode 100644 index 0000000..6c92d8c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/service/IAcsPointService.java @@ -0,0 +1,76 @@ +package org.nl.acs.point.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.acs.point.domain.AcsPoint; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.point.domain.PointQuery; +import org.nl.common.domain.query.PageQuery; + +import java.util.List; +import java.util.Set; + +/** + *

+ * 点位基础表 服务类 + *

+ * + * @author tuqiang + * @since 2024-09-27 + */ +public interface IAcsPointService extends IService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(PointQuery whereJson, PageQuery pageable); + + /** + * 创建 + * + * @param entity / + */ + void create(AcsPoint entity); + + /** + * 编辑 + * + * @param entity / + */ + void update(AcsPoint entity); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); + + /** + * 改变启用状态 + * + * @param jsonObject + */ + void changeUsed(JSONObject jsonObject); + + /** + * 获取点位 + * + * @param region + * @return + */ + List getPointList(AcsPoint region); + + /** + * 解锁/上锁 + * + * @param points + */ + void changeLock(JSONObject points); + + AcsPoint findByCode(String code); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/service/impl/AcsPointServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/service/impl/AcsPointServiceImpl.java new file mode 100644 index 0000000..dc2f2ad --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/point/service/impl/AcsPointServiceImpl.java @@ -0,0 +1,132 @@ +package org.nl.acs.point.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.point.domain.AcsPoint; +import org.nl.acs.point.domain.PointQuery; +import org.nl.acs.point.mapper.AcsPointMapper; +import org.nl.acs.point.service.IAcsPointService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + *

+ * 点位基础表 服务实现类 + *

+ * + * @author tuqiang + * @since 2024-09-27 + */ +@Slf4j +@Service +public class AcsPointServiceImpl extends ServiceImpl implements IAcsPointService { + + @Autowired + private AcsPointMapper pointMapper; + + @Override + public IPage queryAll(PointQuery whereJson, PageQuery page) { + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + LambdaQueryWrapper acsPointLambdaQueryWrapper = Wrappers.lambdaQuery(AcsPoint.class); + acsPointLambdaQueryWrapper.eq(StrUtil.isNotEmpty(whereJson.getPoint_status()), AcsPoint::getPoint_status, whereJson.getPoint_status()); + acsPointLambdaQueryWrapper.eq(ObjectUtil.isNotNull(whereJson.getIs_used()), AcsPoint::getIs_used, whereJson.getIs_used()); + if (StrUtil.isNotEmpty(whereJson.getBlurry())) { + acsPointLambdaQueryWrapper.and(wrapper -> { + wrapper.like(StrUtil.isNotEmpty(whereJson.getBlurry()), AcsPoint::getPoint_code, whereJson.getBlurry()) + .or() + .like(StrUtil.isNotEmpty(whereJson.getBlurry()), AcsPoint::getPoint_name, whereJson.getBlurry()); + }); + } + pages = pointMapper.selectPage(pages, acsPointLambdaQueryWrapper); + return pages; + } + + @Override + public void create(AcsPoint entity) { + String point_code = entity.getPoint_code(); + AcsPoint pointObj = pointMapper.selectById(point_code); + if (ObjectUtil.isNotEmpty(pointObj) && !pointObj.getPoint_code().equals(entity.getPoint_code())) { + throw new BadRequestException("存在相同的点位编码"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + pointMapper.insert(entity); + } + + @Override + public void update(AcsPoint entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + pointMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + pointMapper.deleteBatchIds(ids); + } + + @Override + public void changeUsed(JSONObject jsonObject) { + // 不可能为空 + JSONArray data = jsonObject.getJSONArray("data"); + Boolean used = jsonObject.getBoolean("used"); + Assert.notNull(data, "数据为空!"); + Assert.notNull(used, "数据为空!"); + List schBasePoints = JSONArray.parseArray(JSONArray.toJSONString(data), AcsPoint.class); + // 获取所有pointCode + List pointCodes = schBasePoints.stream() + .map(AcsPoint::getPoint_code) + .collect(Collectors.toList()); + pointMapper.batchChangeUsed(pointCodes, used); + } + + @Override + public List getPointList(AcsPoint region) { + if (ObjectUtil.isEmpty(region)) { + return this.list(); + } + return pointMapper.selectList(new LambdaQueryWrapper<>()); + } + + + @Override + public void changeLock(JSONObject points) { + } + + @Override + public AcsPoint findByCode(String code) { + return pointMapper.selectOne(new LambdaQueryWrapper().eq(AcsPoint::getPoint_code, code)); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/controller/ProductController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/controller/ProductController.java new file mode 100644 index 0000000..e06a7ac --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/controller/ProductController.java @@ -0,0 +1,75 @@ +package org.nl.acs.product.controller; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.point.domain.AcsPoint; +import org.nl.acs.point.domain.PointQuery; +import org.nl.acs.product.domain.Product; +import org.nl.acs.product.domain.ProductQuery; +import org.nl.acs.product.service.IProductService; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 配方主表 前端控制器 + *

+ * + * @author tuqiang + * @since 2024-09-29 + */ +@RestController +@RequestMapping("/api/product") +public class ProductController { + + @Autowired + private IProductService productService; + + @GetMapping + @Log("查询配方管理") + //@SaCheckPermission("@el.check('schBasePoint:list')") + public ResponseEntity query(ProductQuery whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(productService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增配方管理") + //@SaCheckPermission("@el.check('schBasePoint:add')") + public ResponseEntity create(@Validated @RequestBody JSONObject whereJson) { + productService.create(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改配方管理") + //@SaCheckPermission("@el.check('schBasePoint:edit')") + public ResponseEntity update(@RequestBody JSONObject whereJson) { + productService.update(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除配方管理") + //@SaCheckPermission("@el.check('schBasePoint:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + productService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getOutBillDtl") + @Log("查询明细") + + public ResponseEntity getOutBillDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(productService.getOutBillDtl(whereJson), HttpStatus.OK); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/controller/ProductdtlController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/controller/ProductdtlController.java new file mode 100644 index 0000000..651c1b9 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/controller/ProductdtlController.java @@ -0,0 +1,71 @@ +package org.nl.acs.product.controller; + + + +import org.nl.acs.product.domain.Productdtl; +import org.nl.acs.product.domain.ProductdtlQuery; +import org.nl.acs.product.service.IProductdtlService; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 配方明细表 前端控制器 + *

+ * + * @author tuqiang + * @since 2024-10-08 + */ +@RestController +@RequestMapping("/productdtl") +public class ProductdtlController { + + @Autowired + private IProductdtlService productdtlService; + + @GetMapping + @Log("查询物料") + + //@PreAuthorize("@el.check('Materialbase:list')") + public ResponseEntity query(ProductdtlQuery whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(productdtlService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增物料") + + //@PreAuthorize("@el.check('Materialbase:add')") + public ResponseEntity create(@Validated @RequestBody Productdtl dto) { + productdtlService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改物料") + + //@PreAuthorize("@el.check('Materialbase:edit')") + public ResponseEntity update(@Validated @RequestBody Productdtl dto) { + productdtlService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除物料") + + //@PreAuthorize("@el.check('Materialbase:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + productdtlService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/Product.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/Product.java new file mode 100644 index 0000000..cd6deed --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/Product.java @@ -0,0 +1,70 @@ +package org.nl.acs.product.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + *

+ * 配方主表 + *

+ * + * @author tuqiang + * @since 2024-09-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("product") +@ApiModel(value="Product对象", description="配方主表") +public class Product implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "产品标识") + @TableId + private String product_id; + + @ApiModelProperty(value = "产品编号") + private String product_code; + + @ApiModelProperty(value = "总重量") + private float total_qty; + + @ApiModelProperty(value = "明细数量") + private int detail_count; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "创建者") + private String create_by; + + @ApiModelProperty(value = "创建时间") + private String create_time; + + @ApiModelProperty(value = "修改者") + private String update_by; + + @ApiModelProperty(value = "修改时间") + private String update_time; + + @ApiModelProperty(value = "是否删除") + private String is_delete; + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/ProductQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/ProductQuery.java new file mode 100644 index 0000000..344ce94 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/ProductQuery.java @@ -0,0 +1,10 @@ +package org.nl.acs.product.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ProductQuery implements Serializable { + private String product_code; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/Productdtl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/Productdtl.java new file mode 100644 index 0000000..07ff2a8 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/Productdtl.java @@ -0,0 +1,69 @@ +package org.nl.acs.product.domain; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 配方明细表 + *

+ * + * @author tuqiang + * @since 2024-09-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("productdtl") +@ApiModel(value="Productdtl对象", description="配方明细表") +public class Productdtl implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "产品明细标识") + @TableId + private String productdtl_id; + + @ApiModelProperty(value = "产品标识") + private String product_id; + + @ApiModelProperty(value = "明细序号") + private int seq_no; + + @ApiModelProperty(value = "物料标识") + private String material_id; + + @ApiModelProperty(value = "物料编码") + private String material_code; + + @ApiModelProperty(value = "物料占比") + private String material_proportion; + + @ApiModelProperty(value = "物料单桶重量") + private String productin_qty; + + @ApiModelProperty(value = "创建者") + private String create_by; + + @ApiModelProperty(value = "创建时间") + private String create_time; + + @ApiModelProperty(value = "修改者") + private String update_by; + + @ApiModelProperty(value = "修改时间") + private String update_time; + + @ApiModelProperty(value = "物料编码") + private String material_name; + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/ProductdtlQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/ProductdtlQuery.java new file mode 100644 index 0000000..04695d4 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/domain/ProductdtlQuery.java @@ -0,0 +1,9 @@ +package org.nl.acs.product.domain; + +import lombok.Data; + +@Data +public class ProductdtlQuery { + private String blurry; + private String productdtl_id; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductMapper.java new file mode 100644 index 0000000..df23660 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductMapper.java @@ -0,0 +1,16 @@ +package org.nl.acs.product.mapper; + +import org.nl.acs.product.domain.Product; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 配方主表 Mapper 接口 + *

+ * + * @author tuqiang + * @since 2024-09-29 + */ +public interface ProductMapper extends BaseMapper { + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductMapper.xml b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductMapper.xml new file mode 100644 index 0000000..469f0b0 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductdtlMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductdtlMapper.java new file mode 100644 index 0000000..5b9163c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/mapper/ProductdtlMapper.java @@ -0,0 +1,16 @@ +package org.nl.acs.product.mapper; + +import org.nl.acs.product.domain.Productdtl; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 配方明细表 Mapper 接口 + *

+ * + * @author tuqiang + * @since 2024-10-08 + */ +public interface ProductdtlMapper extends BaseMapper { + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/IProductService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/IProductService.java new file mode 100644 index 0000000..01be8d7 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/IProductService.java @@ -0,0 +1,55 @@ +package org.nl.acs.product.service; + +import cn.hutool.json.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.acs.product.domain.Product; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.product.domain.ProductQuery; +import org.nl.common.domain.query.PageQuery; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 配方主表 服务类 + *

+ * + * @author tuqiang + * @since 2024-09-29 + */ +public interface IProductService extends IService { + + IPage queryAll(ProductQuery whereJson, PageQuery page); + + /** + * 创建 + * + * @param whereJson / + */ + void create(JSONObject whereJson); + + /** + * 编辑 + * + * @param whereJson / + */ + void update(JSONObject whereJson); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); + + + /** + * 查询配方明细 + * + * @param whereJson / + * @return + */ + JSONArray getOutBillDtl(Map whereJson); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/IProductdtlService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/IProductdtlService.java new file mode 100644 index 0000000..8a69be1 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/IProductdtlService.java @@ -0,0 +1,45 @@ +package org.nl.acs.product.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.acs.product.domain.Product; +import org.nl.acs.product.domain.ProductQuery; +import org.nl.acs.product.domain.Productdtl; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.product.domain.ProductdtlQuery; +import org.nl.common.domain.query.PageQuery; + +import java.util.Set; + +/** + *

+ * 配方明细表 服务类 + *

+ * + * @author tuqiang + * @since 2024-10-08 + */ +public interface IProductdtlService extends IService { + + IPage queryAll(ProductdtlQuery whereJson, PageQuery page); + + /** + * 创建 + * + * @param entity / + */ + void create(Productdtl entity); + + /** + * 编辑 + * + * @param entity / + */ + void update(Productdtl entity); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/impl/ProductServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/impl/ProductServiceImpl.java new file mode 100644 index 0000000..01aff05 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/impl/ProductServiceImpl.java @@ -0,0 +1,156 @@ +package org.nl.acs.product.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.nl.acs.product.domain.Product; +import org.nl.acs.product.domain.ProductQuery; +import org.nl.acs.product.domain.Productdtl; +import org.nl.acs.product.mapper.ProductMapper; +import org.nl.acs.product.mapper.ProductdtlMapper; +import org.nl.acs.product.service.IProductService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 配方主表 服务实现类 + *

+ * + * @author tuqiang + * @since 2024-09-29 + */ +@Service +public class ProductServiceImpl extends ServiceImpl implements IProductService { + + @Autowired + private ProductMapper productMapper; + @Autowired + private ProductdtlMapper productdtlMapper; + + @Override + public IPage queryAll(ProductQuery whereJson, PageQuery page) { + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(Product.class); + wrapper.eq(StrUtil.isNotEmpty(whereJson.getProduct_code()), Product::getProduct_code, whereJson.getProduct_code()); + pages = productMapper.selectPage(pages, wrapper); + return pages; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(JSONObject map) { + JSONArray rows = map.getJSONArray("tableData"); + map.remove("tableData"); + Product product = productMapper.selectById(MapUtil.getStr(map, "product_code")); + if (ObjectUtil.isNotEmpty(product) && !product.getProduct_code().equals(MapUtil.getStr(map, "product_code"))) { + throw new BadRequestException("存在相同的产品编码"); + } + + Product entity = new Product(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setProduct_id(IdUtil.getSnowflake(1, 1).nextId() + ""); + entity.setProduct_code(CodeUtil.getNewCode("PRODUCT_CODE")); + entity.setCreate_by(nickName); + entity.setCreate_time(now); + entity.setUpdate_by(nickName); + entity.setUpdate_time(now); + entity.setDetail_count(rows.size()); + //调用明细处理方法 + float qtySum = this.insertDtlByRows(entity, rows); + entity.setTotal_qty(qtySum); + + productMapper.insert(entity); + } + + private float insertDtlByRows(Product entity, JSONArray rows) { + + + float sum = 0; + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + String jsonString = json.getString("qty"); + float qty = Float.parseFloat(jsonString); + sum += qty; + } + + //定义返回数据 + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + Productdtl productdtl = new Productdtl(); + String jsonString = json.getString("qty"); + float qty = Float.parseFloat(jsonString); + float percentage = qty / sum; + productdtl.setMaterial_proportion(String.valueOf(percentage)); + productdtl.setProductdtl_id(IdUtil.getSnowflake(1, 1).nextId() + "") + .setSeq_no(i) + .setMaterial_id(json.getString("material_id")) + .setMaterial_code(json.getString("material_code")) + .setProduct_id(entity.getProduct_id()) + .setCreate_by(SecurityUtils.getCurrentNickName()) + .setProductin_qty(json.getString("qty")) + .setCreate_time(DateUtil.now()) + .setMaterial_name(json.getString("material_name")) + .setUpdate_by(SecurityUtils.getCurrentNickName()) + .setUpdate_time(DateUtil.now()); + productdtlMapper.insert(productdtl); + } + return sum; + } + + @Override + public void update(JSONObject whereJson) { + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + String product_id = (String) whereJson.get("product_id"); + Product product = productMapper.selectById(product_id); + if (product == null) { + throw new BadRequestException("不存在此产品配方"); + } + productdtlMapper.deleteBatchIds(productdtlMapper.selectList(Wrappers.lambdaQuery(Productdtl.class).eq(Productdtl::getProduct_id, product_id))); + //获取明细 + JSONArray rows = whereJson.getJSONArray("tableData"); + this.insertDtlByRows(product, rows); + product.setUpdate_by(nickName); + product.setUpdate_time(now); + productMapper.update(product, Wrappers.lambdaQuery(Product.class).eq(Product::getProduct_id, product_id)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Set ids) { + productMapper.deleteBatchIds(ids); + + } + + @Override + public cn.hutool.json.JSONArray getOutBillDtl(Map whereJson) { + List list = productdtlMapper.selectList(Wrappers.lambdaQuery(Productdtl.class).eq(Productdtl::getProduct_id, whereJson.get("product_id"))); + if (list != null) { + return JSONUtil.parseArray(list); + } + return null; + } + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/impl/ProductdtlServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/impl/ProductdtlServiceImpl.java new file mode 100644 index 0000000..4d5db0b --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/product/service/impl/ProductdtlServiceImpl.java @@ -0,0 +1,83 @@ +package org.nl.acs.product.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.nl.acs.product.domain.Productdtl; +import org.nl.acs.product.domain.ProductdtlQuery; +import org.nl.acs.product.mapper.ProductMapper; +import org.nl.acs.product.mapper.ProductdtlMapper; +import org.nl.acs.product.service.IProductdtlService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Set; + +/** + *

+ * 配方明细表 服务实现类 + *

+ * + * @author tuqiang + * @since 2024-10-08 + */ +@Service +public class ProductdtlServiceImpl extends ServiceImpl implements IProductdtlService { + + @Autowired + private ProductdtlMapper productdtlMapper; + + @Override + public IPage queryAll(ProductdtlQuery whereJson, PageQuery page) { + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + LambdaQueryWrapper productdtlLambdaQueryWrapper = Wrappers.lambdaQuery(Productdtl.class); + productdtlLambdaQueryWrapper.eq(StrUtil.isNotEmpty(whereJson.getProductdtl_id()), Productdtl::getProductdtl_id, whereJson.getProductdtl_id()); + if (StrUtil.isNotEmpty(whereJson.getBlurry())) { + productdtlLambdaQueryWrapper.and(wrapper -> { + wrapper.like(StrUtil.isNotEmpty(whereJson.getBlurry()), Productdtl::getProduct_id, whereJson.getBlurry()) + .or() + .like(StrUtil.isNotEmpty(whereJson.getBlurry()), Productdtl::getMaterial_code, whereJson.getBlurry()); + }); + } + pages = productdtlMapper.selectPage(pages, productdtlLambdaQueryWrapper); + return pages; + } + + @Override + public void create(Productdtl entity) { + String productdtl_id = entity.getProductdtl_id(); + Productdtl productdtlObj = productdtlMapper.selectById(productdtl_id); + if (ObjectUtil.isNotEmpty(productdtlObj) && !productdtlObj.getProductdtl_id().equals(entity.getProductdtl_id())) { + throw new BadRequestException("存在相同的配方明细id"); + } + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setCreate_time(now); + entity.setUpdate_time(now); + entity.setCreate_by(nickName); + entity.setUpdate_by(nickName); + productdtlMapper.insert(entity); + } + + @Override + public void update(Productdtl entity) { + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_time(now); + entity.setUpdate_by(nickName); + productdtlMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + productdtlMapper.deleteBatchIds(ids); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/controller/SchBaseRegionController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/controller/SchBaseRegionController.java new file mode 100644 index 0000000..ff19ace --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/controller/SchBaseRegionController.java @@ -0,0 +1,78 @@ +package org.nl.acs.sch.region.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.sch.region.service.ISchBaseRegionService; +import org.nl.acs.sch.region.service.dao.SchBaseRegion; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +@Slf4j +@RestController + +@RequestMapping("/api/schBaseRegion") +public class SchBaseRegionController { + @Autowired + private ISchBaseRegionService regionService; + + @GetMapping + @Log("查询区域管理") + //@SaCheckPermission("@el.check('schBaseRegion:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(regionService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增区域管理") + //@SaCheckPermission("@el.check('schBaseRegion:add')") + public ResponseEntity create(@Validated @RequestBody SchBaseRegion entity) { + regionService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改区域管理") + //@SaCheckPermission("@el.check('schBaseRegion:edit')") + public ResponseEntity update(@Validated @RequestBody SchBaseRegion entity) { + regionService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除区域管理") + //@SaCheckPermission("@el.check('schBaseRegion:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + regionService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/getRegionList") + @Log("获取区域下拉框") + //@SaCheckPermission("@el.check('schBaseRegion:list')") + public ResponseEntity getRegionList(@RequestBody(required = false) SchBaseRegion region) { + return new ResponseEntity<>(regionService.getRegionList(region), HttpStatus.OK); + } + + @PostMapping("/getPointStatusSelectById") + @Log("获取点位状态下拉框") + //@SaCheckPermission("region:add") + public ResponseEntity getPointStatusSelectById(@RequestBody String region_id) { + return new ResponseEntity<>(regionService.getPointStatusSelectById(region_id), HttpStatus.OK); + } + + @PostMapping("/getPointTypeSelectById") + @Log("获取点位类型下拉框") + + //@SaCheckPermission("region:add") + public ResponseEntity getPointTypeSelectById(@RequestBody String region_id) { + return new ResponseEntity<>(regionService.getPointTypeSelectById(region_id), HttpStatus.OK); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/ISchBaseRegionService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/ISchBaseRegionService.java new file mode 100644 index 0000000..f52bad9 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/ISchBaseRegionService.java @@ -0,0 +1,67 @@ +package org.nl.acs.sch.region.service; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.sch.region.service.dao.SchBaseRegion; +import org.nl.common.domain.query.PageQuery; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +public interface ISchBaseRegionService extends IService { + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * + * @param entity / + */ + void create(SchBaseRegion entity); + + /** + * 编辑 + * + * @param entity / + */ + void update(SchBaseRegion entity); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); + + /** + * 区域下拉框 + * + * @param region 区域 + * @return / + */ + List getRegionList(SchBaseRegion region); + + /** + * 获取点位状态下拉框 + * + * @param regionId / + * @return / + */ + JSONArray getPointStatusSelectById(String regionId); + + /** + * 获取点位类型下拉框 + * + * @param regionId / + * @return / + */ + JSONArray getPointTypeSelectById(String regionId); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dao/SchBaseRegion.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dao/SchBaseRegion.java new file mode 100644 index 0000000..bfd1875 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dao/SchBaseRegion.java @@ -0,0 +1,59 @@ +package org.nl.acs.sch.region.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sch_base_region") +public class SchBaseRegion implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "region_code", type = IdType.NONE) + + private String region_code; + + + private String region_name; + + + private String point_type_explain; + + + private String point_status_explain; + + + private Boolean is_has_workder; + + + private String workshop_code; + + + private String remark; + + + private String create_id; + + + private String create_name; + + + private String create_time; + + + private String update_id; + + + private String update_name; + + + private String update_time; + + + private Integer order_seq; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dao/mapper/SchBaseRegionMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dao/mapper/SchBaseRegionMapper.java new file mode 100644 index 0000000..de9e4da --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dao/mapper/SchBaseRegionMapper.java @@ -0,0 +1,7 @@ +package org.nl.acs.sch.region.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.acs.sch.region.service.dao.SchBaseRegion; + +public interface SchBaseRegionMapper extends BaseMapper { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dto/SchBaseRegionDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dto/SchBaseRegionDto.java new file mode 100644 index 0000000..f9d404e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/dto/SchBaseRegionDto.java @@ -0,0 +1,79 @@ +package org.nl.acs.sch.region.service.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data + +public class SchBaseRegionDto implements Serializable { + /** + * 区域编码 + */ + private String region_code; + + /** + * 区域名称 + */ + private String region_name; + + /** + * 点位类型说明 + */ + private String point_type_explain; + + /** + * 点位状态说明 + */ + private String point_status_explain; + + /** + * 是否创建工单 + */ + private Boolean is_has_workder; + + /** + * 车间编码 + */ + private String workshop_code; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_id; + + /** + * 修改人 + */ + private String update_name; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 顺和号 + */ + private Integer order_seq; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/impl/SchBaseRegionServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/impl/SchBaseRegionServiceImpl.java new file mode 100644 index 0000000..318d9f0 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/region/service/impl/SchBaseRegionServiceImpl.java @@ -0,0 +1,130 @@ +package org.nl.acs.sch.region.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.sch.region.service.ISchBaseRegionService; +import org.nl.acs.sch.region.service.dao.SchBaseRegion; +import org.nl.acs.sch.region.service.dao.mapper.SchBaseRegionMapper; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Slf4j +@Service +public class SchBaseRegionServiceImpl extends ServiceImpl implements ISchBaseRegionService { + + @Autowired + private SchBaseRegionMapper schBaseRegionMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + String workshop_code = ObjectUtil.isNotEmpty(whereJson.get("workshop_code")) ? whereJson.get("workshop_code").toString() : null; + String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry")) ? whereJson.get("blurry").toString() : null; + Boolean is_has_workder = ObjectUtil.isNotEmpty(whereJson.get("is_has_workder")) ? Boolean.valueOf(whereJson.get("is_has_workder").toString()) : null; + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(ObjectUtil.isNotEmpty(workshop_code), SchBaseRegion::getWorkshop_code, workshop_code) + .eq(ObjectUtil.isNotEmpty(is_has_workder), SchBaseRegion::getIs_has_workder, is_has_workder) + .like(ObjectUtil.isNotEmpty(blurry), SchBaseRegion::getRegion_code, blurry) + .or(ObjectUtil.isNotEmpty(blurry), la -> la.like(SchBaseRegion::getRegion_name, blurry)) + .orderByAsc(SchBaseRegion::getOrder_seq); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + schBaseRegionMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(SchBaseRegion entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + schBaseRegionMapper.insert(entity); + } + + @Override + public void update(SchBaseRegion entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + schBaseRegionMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + schBaseRegionMapper.deleteBatchIds(ids); + } + + @Override + public List getRegionList(SchBaseRegion region) { + return schBaseRegionMapper.selectList(new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(region), SchBaseRegion::getIs_has_workder, true) + .orderByAsc(SchBaseRegion::getOrder_seq)); + } + + @Override + public JSONArray getPointStatusSelectById(String regionId) { + /** + * label,value + */ + SchBaseRegion schBaseRegion = schBaseRegionMapper.selectById(regionId); + JSONArray res = new JSONArray(); + String pointStatusExplain = schBaseRegion.getPoint_status_explain(); + if (ObjectUtil.isEmpty(pointStatusExplain)) { + return res; + } + String[] explain = pointStatusExplain.split(","); + for (int i = 0; i < explain.length; i++) { + String[] status = explain[i].split("-"); + JSONObject point_status = new JSONObject(); + point_status.put("label", status[1]); + point_status.put("value", status[0]); + res.add(point_status); + } + return res; + } + + @Override + public JSONArray getPointTypeSelectById(String regionId) { + /** + * label,value + */ + SchBaseRegion schBaseRegion = schBaseRegionMapper.selectById(regionId); + JSONArray res = new JSONArray(); + String pointTypeExplain = schBaseRegion.getPoint_type_explain(); + if (ObjectUtil.isEmpty(pointTypeExplain)) { + return res; + } + String[] explain = pointTypeExplain.split(","); + for (int i = 0; i < explain.length; i++) { + String[] types = explain[i].split("-"); + JSONObject point_type = new JSONObject(); + point_type.put("label", types[1]); + point_type.put("value", types[0]); + res.add(point_type); + } + return res; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/SchBaseTaskController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/SchBaseTaskController.java new file mode 100644 index 0000000..c4b4453 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/SchBaseTaskController.java @@ -0,0 +1,75 @@ +package org.nl.acs.sch.task.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.sch.task.service.ISchBaseTaskService; +import org.nl.acs.sch.task.service.dao.SchBaseTask; +import org.nl.acs.sch.task.service.dto.SchBaseTaskQuery; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +@Slf4j +@RestController + +@RequestMapping("/api/schBaseTask") +public class SchBaseTaskController { + @Autowired + private ISchBaseTaskService schBaseTaskService; + + @GetMapping + @Log("查询任务管理") + //@SaCheckPermission("@el.check('schBaseTask:list')") + public ResponseEntity query(SchBaseTaskQuery whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(schBaseTaskService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增任务管理") + //@SaCheckPermission("@el.check('schBaseTask:add')") + public ResponseEntity create(@Validated @RequestBody SchBaseTask entity) { + schBaseTaskService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改任务管理") + //@SaCheckPermission("@el.check('schBaseTask:edit')") + public ResponseEntity update(@Validated @RequestBody SchBaseTask entity) { + schBaseTaskService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除任务管理") + //@SaCheckPermission("@el.check('schBaseTask:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + schBaseTaskService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/taskStatusList") + @Log("任务状态下拉框") + @SaIgnore + //@SaCheckPermission("@el.check('schBaseTask:list')") + public ResponseEntity getTaskStatusList() { + return new ResponseEntity<>(TableDataInfo.build(schBaseTaskService.getTaskStatusList()), HttpStatus.OK); + } + + @PutMapping("/operation") + @Log("任务操作") + //@SaCheckPermission("task:edit") + public ResponseEntity update(@RequestBody Map map) { + schBaseTaskService.operation(map); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/SchBaseTaskconfigController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/SchBaseTaskconfigController.java new file mode 100644 index 0000000..9241dbc --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/SchBaseTaskconfigController.java @@ -0,0 +1,62 @@ +package org.nl.acs.sch.task.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.sch.task.service.ISchBaseTaskconfigService; +import org.nl.acs.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +@Slf4j +@RestController + +@RequestMapping("/api/schBaseTaskconfig") +public class SchBaseTaskconfigController { + @Autowired + private ISchBaseTaskconfigService schBaseTaskconfigService; + + @GetMapping + @Log("查询任务配置") + //@SaCheckPermission("@el.check('schBaseTaskconfig:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(schBaseTaskconfigService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增任务配置") + //@SaCheckPermission("@el.check('schBaseTaskconfig:add')") + public ResponseEntity create(@Validated @RequestBody SchBaseTaskconfig entity) { + schBaseTaskconfigService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改任务配置") + //@SaCheckPermission("@el.check('schBaseTaskconfig:edit')") + public ResponseEntity update(@Validated @RequestBody SchBaseTaskconfig entity) { + schBaseTaskconfigService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除任务配置") + //@SaCheckPermission("@el.check('schBaseTaskconfig:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + schBaseTaskconfigService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/getTaskConfigList") + @Log("获取下拉框") + public ResponseEntity getTaskConfigList() { + return new ResponseEntity<>(schBaseTaskconfigService.getTaskConfigList(), HttpStatus.OK); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/WorkController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/WorkController.java new file mode 100644 index 0000000..4db875c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/controller/WorkController.java @@ -0,0 +1,86 @@ +package org.nl.acs.sch.task.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.sch.task.service.WorkService; +import org.nl.acs.sch.task.service.dao.SchBaseTask; +import org.nl.acs.sch.task.service.dao.Work; +import org.nl.acs.sch.task.service.dto.SchBaseTaskQuery; +import org.nl.acs.sch.task.service.dto.WorkQuery; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Set; + +@Slf4j +@RestController + +@RequestMapping("/api/work") +public class WorkController { + @Autowired + private WorkService workService; + + @GetMapping + @Log("查询配料作业管理") + //@SaCheckPermission("@el.check('schBaseTask:list')") + public ResponseEntity query(WorkQuery whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(workService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增配料作业管理") + //@SaCheckPermission("@el.check('schBaseTask:add')") + public ResponseEntity create(@Validated @RequestBody Work entity) { + workService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改配料作业管理") + //@SaCheckPermission("@el.check('schBaseTask:edit')") + public ResponseEntity update(@Validated @RequestBody Work entity) { + workService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除配料作业管理") + //@SaCheckPermission("@el.check('schBaseTask:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + workService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("下发配料作业") + @PostMapping(value = "/send/{id}") + public ResponseEntity send(@RequestBody String id) throws Exception { + workService.send(id); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("补发配料作业") + @PostMapping(value = "/reSend") + public ResponseEntity reSend(@RequestBody Work dto) throws Exception { + workService.reSend(dto); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("完成配料作业") + @PostMapping(value = "/finish/{id}") + public ResponseEntity finish(@RequestBody String id) throws Exception { + workService.finish(id); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("确认配料作业") + @PostMapping(value = "/confirm/{id}") + public ResponseEntity confirm(@RequestBody String id) throws Exception { + workService.confirm(id); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/ISchBaseTaskService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/ISchBaseTaskService.java new file mode 100644 index 0000000..61570c9 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/ISchBaseTaskService.java @@ -0,0 +1,73 @@ +package org.nl.acs.sch.task.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.sch.task.service.dao.SchBaseTask; +import org.nl.acs.sch.task.service.dto.SchBaseTaskQuery; +import org.nl.common.domain.query.PageQuery; + +import java.util.Map; +import java.util.Set; + +public interface ISchBaseTaskService extends IService { + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(SchBaseTaskQuery whereJson, PageQuery pageable); + + /** + * 创建 + * + * @param entity / + */ + void create(SchBaseTask entity); + + /** + * 编辑 + * + * @param entity / + */ + void update(SchBaseTask entity); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); + + /** + * 任务申请 + * + * @param param / + */ + void apply(JSONObject param); + + /** + * 获取任务状态下拉框 + * + * @return / + */ + JSONArray getTaskStatusList(); + + /** + * 任务操作 + * + * @param param 参数 + */ + void operation(Map param); + + /** + * 获取任务数据 + * + * @param taskCode 任务编码 + * @return / + */ + SchBaseTask getByCode(String taskCode); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/ISchBaseTaskconfigService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/ISchBaseTaskconfigService.java new file mode 100644 index 0000000..f3e1e4e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/ISchBaseTaskconfigService.java @@ -0,0 +1,44 @@ +package org.nl.acs.sch.task.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.common.domain.query.PageQuery; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +public interface ISchBaseTaskconfigService extends IService { + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * + * @param entity / + */ + void create(SchBaseTaskconfig entity); + + /** + * 编辑 + * + * @param entity / + */ + void update(SchBaseTaskconfig entity); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); + + List getTaskConfigList(); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/WorkService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/WorkService.java new file mode 100644 index 0000000..602debe --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/WorkService.java @@ -0,0 +1,52 @@ +package org.nl.acs.sch.task.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.acs.sch.task.service.dao.SchBaseTask; +import org.nl.acs.sch.task.service.dao.Work; +import org.nl.acs.sch.task.service.dto.WorkQuery; +import org.nl.common.domain.query.PageQuery; + +import java.util.Set; + +public interface WorkService extends IService { + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(WorkQuery whereJson, PageQuery pageable); + + /** + * 创建 + * + * @param entity / + */ + void create(Work entity); + + /** + * 编辑 + * + * @param entity / + */ + void update(Work entity); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Set ids); + + void send(String id); + + void reSend(Work dto); + + void finish(String id); + + void confirm(String id); + + Work findByCode(String work_code); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/SchBaseTask.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/SchBaseTask.java new file mode 100644 index 0000000..9ff01c6 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/SchBaseTask.java @@ -0,0 +1,124 @@ +package org.nl.acs.sch.task.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sch_base_task") +public class SchBaseTask implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "task_id", type = IdType.NONE) + + private String task_id; + + + private String task_code; + + + private String task_status; + + + private String config_code; + + + private String point_code1; + + + private String point_code2; + + + private String point_code3; + + + private String point_code4; + + + private String group_id; + + + private String vehicle_type; + + + private Integer vehicle_qty; + + + private String vehicle_code; + + + private String vehicle_code2; + + + private String handle_status; + + + private String car_no; + + + private Long task_group_id; + + + private BigDecimal task_group_seq; + + + private String finished_type; + + + private String create_mode; + + + private String acs_trace_id; + + + private String request_param; + + + private String response_param; + + + private String workshop_code; + + + private String ext_group_data; + + + private String remark; + + + private Boolean is_delete; + + + private String create_id; + + + private String create_name; + + + private String create_time; + + + private String update_id; + + + private String update_name; + + /** + * 工单号 + */ + private String mfg_order_name; + + + private String update_time; + @TableField(exist = false) + private String config_name; + @TableField(exist = false) + private String task_name; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/SchBaseTaskconfig.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/SchBaseTaskconfig.java new file mode 100644 index 0000000..3958e90 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/SchBaseTaskconfig.java @@ -0,0 +1,146 @@ +package org.nl.acs.sch.task.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sch_base_taskconfig") +public class SchBaseTaskconfig implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "config_id", type = IdType.NONE) + + private String config_id; + + + private String config_code; + + + private String config_name; + + + private String route_plan_code; + + + private String task_qf_type; + + + private String acs_task_type; + + + private String task_name; + + + private String task_type; + + + private String task_direction; + + + private String priority; + + + private Integer task_create_max_num; + + + private Integer task_issue_max_num; + + + private Boolean is_auto_issue; + + + private String start_region_str; + + + private String next_region_str; + + + private String start_point_pre; + + + private String next_region_pre; + + + private Boolean is_check_workorder; + + + private Boolean is_check_start_lock; + + + private Boolean is_immediate_create; + + + private Boolean is_check_next_lock; + + + private Boolean is_start_auto; + + + private Boolean is_next_auto; + + + private Boolean is_lock_start; + + + private Boolean is_lock_next; + + + private String request_param; + + + private String response_param; + + + private Boolean is_group_congrol_issue_seq; + + + private BigDecimal unfinish_notify_time; + + + private String sql_param; + + + private String workshop_code; + + + private String remark; + + + private Boolean is_used; + + + private Boolean is_delete; + + + private String create_id; + + + private String create_name; + + + private String create_time; + + + private String update_id; + + + private String update_name; + + + private String update_time; + + @TableField(exist = false) + private List start_region_strs; + + @TableField(exist = false) + private List next_region_strs; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/Work.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/Work.java new file mode 100644 index 0000000..c976c0c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/Work.java @@ -0,0 +1,83 @@ +package org.nl.acs.sch.task.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("work") +public class Work implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId + private String work_id; + + private String work_code; + + + /* + * 物料编码 + */ + private String material_code; + + /* + * 工单编码 + */ + private String mfg_order_name; + + + /* + * 物料名称 + */ + private String material_name; + + /* + * 任务配置编码 + */ + private String resource_name; + + private int seq_no; + + private float qty; + + /* + * 剩余桶数 + */ + private int remain_num; + + /* + * 需求桶数 + */ + private int require_num; + + private String status; + + /** + * 创建人 + */ + private String create_by; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_by; + + /** + * 修改时间 + */ + private String update_time; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskMapper.java new file mode 100644 index 0000000..e126b91 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskMapper.java @@ -0,0 +1,13 @@ +package org.nl.acs.sch.task.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.acs.sch.task.service.dao.SchBaseTask; +import org.nl.acs.sch.task.service.dto.SchBaseTaskQuery; + +import java.util.List; + +public interface SchBaseTaskMapper extends BaseMapper { + + IPage selectPageLeftJoin(IPage pages, SchBaseTaskQuery whereJson, List collect); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskMapper.xml b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskMapper.xml new file mode 100644 index 0000000..a71222c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskMapper.xml @@ -0,0 +1,44 @@ + + + + + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskconfigMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskconfigMapper.java new file mode 100644 index 0000000..7ed0eca --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/SchBaseTaskconfigMapper.java @@ -0,0 +1,7 @@ +package org.nl.acs.sch.task.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.acs.sch.task.service.dao.SchBaseTaskconfig; + +public interface SchBaseTaskconfigMapper extends BaseMapper { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/WorkMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/WorkMapper.java new file mode 100644 index 0000000..8acaa2e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/WorkMapper.java @@ -0,0 +1,13 @@ +package org.nl.acs.sch.task.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.acs.sch.task.service.dao.Work; +import org.nl.acs.sch.task.service.dto.WorkQuery; +import org.springframework.stereotype.Repository; + +@Repository +public interface WorkMapper extends BaseMapper { + + IPage selectPageLeftJoin(IPage pages, WorkQuery whereJson); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/WorkMapper.xml b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/WorkMapper.xml new file mode 100644 index 0000000..733f57d --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dao/mapper/WorkMapper.xml @@ -0,0 +1,33 @@ + + + + + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskDto.java new file mode 100644 index 0000000..96a2705 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskDto.java @@ -0,0 +1,171 @@ +package org.nl.acs.sch.task.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class SchBaseTaskDto implements Serializable { + /** + * 任务标识 + */ + private String task_id; + + /** + * 任务编码 + */ + private String task_code; + + + /** + * 任务状态 + */ + private String task_status; + + /** + * 配置编码 + */ + private String config_code; + + /** + * 点位1 + */ + private String point_code1; + + /** + * 点位2 + */ + private String point_code2; + + /** + * 点位3 + */ + private String point_code3; + + /** + * 点位4 + */ + private String point_code4; + + + private String group_id; + + /** + * 载具类型 + */ + private String vehicle_type; + + /** + * 载具数量 + */ + private BigDecimal vehicle_qty; + + /** + * 载具编码 + */ + private String vehicle_code; + + /** + * 处理状态 + */ + private String handle_status; + + /** + * 车号 + */ + private String car_no; + + + /** + * 任务组标识 + */ + private Long task_group_id; + + /** + * 任务组顺序号 + */ + private BigDecimal task_group_seq; + + /** + * 任务完成类型 + */ + private String finished_type; + + /** + * 生成方式 + */ + private String create_mode; + + /** + * 链路标识 + */ + private String acs_trace_id; + + /** + * 生成任务的请求参数 + */ + private String request_param; + + /** + * 下发任务的请求参数 + */ + private String response_param; + + /** + * 车间编码 + */ + private String workshop_code; + + /** + * 额外组盘信息 + */ + private String ext_group_data; + + /** + * 备注 + */ + private String remark; + + /** + * 是否删除 + */ + private Boolean is_delete; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_id; + + /** + * 修改人 + */ + private String update_name; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 工单号 + */ + private String mfg_order_name; + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskQuery.java new file mode 100644 index 0000000..798c95a --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskQuery.java @@ -0,0 +1,18 @@ +package org.nl.acs.sch.task.service.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SchBaseTaskQuery implements Serializable { + private String task_code; + private String vehicle_code; + private String point_code; + private String begin_time; + private String end_time; + private String more_task_status; + private String unFinished; + + private String config_code; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskconfigDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskconfigDto.java new file mode 100644 index 0000000..8d54812 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskconfigDto.java @@ -0,0 +1,209 @@ +package org.nl.acs.sch.task.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class SchBaseTaskconfigDto implements Serializable { + /** + * 配置标识 + */ + private String config_id; + + /** + * 配置编码 + */ + private String config_code; + + /** + * 配置名称 + */ + private String config_name; + + /** + * 路由编码 + */ + private String route_plan_code; + + /** + * 任务取放类型 + */ + private String task_qf_type; + + /** + * acs任务类型 + */ + private String acs_task_type; + + /** + * 任务名字 + */ + private String task_name; + + /** + * 任务类型 + */ + private String task_type; + + /** + * 优先级 + */ + private String priority; + + /** + * 任务方向 + **/ + private String task_direction; + + /** + * 允许最大任务生成数 + */ + private Integer task_create_max_num; + + /** + * 允许最大任务下发数 + */ + private Integer task_issue_max_num; + + /** + * 是否自动下发 + */ + private Boolean is_auto_issue; + + /** + * 起点区域配置 + */ + private String start_region_str; + + /** + * 终点区域配置 + */ + private String next_region_str; + + /** + * 起点点位前缀 + */ + private String start_point_pre; + + /** + * 终点点位前缀 + */ + private String next_region_pre; + + /** + * 是否校验工单 + */ + private Boolean is_check_workorder; + + /** + * 是否判断起点锁定 + */ + private Boolean is_check_start_lock; + + /** + * 是否立即创建 + */ + private Boolean is_immediate_create; + + /** + * 是否判断终点锁定 + */ + private Boolean is_check_next_lock; + + /** + * 是否起点自动 + */ + private Boolean is_start_auto; + + /** + * 是否终点自动 + */ + private Boolean is_next_auto; + + /** + * 是否锁定起点 + */ + private Boolean is_lock_start; + + /** + * 是否锁定终点 + */ + private Boolean is_lock_next; + + /** + * 生成任务的请求参数 + */ + private String request_param; + + /** + * 下发任务的请求参数 + */ + private String response_param; + + /** + * 是否按组控制下发顺序 + */ + private Boolean is_group_congrol_issue_seq; + + /** + * 任务未完成通知时间数 + */ + private BigDecimal unfinish_notify_time; + + /** + * sql配置 + */ + private String sql_param; + + /** + * 车间编码 + */ + private String workshop_code; + + /** + * 备注 + */ + private String remark; + + /** + * 是否启用 + */ + private Boolean is_used; + + /** + * 是否删除 + */ + private Boolean is_delete; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_id; + + /** + * 修改人 + */ + private String update_name; + + /** + * 修改时间 + */ + private String update_time; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskconfigQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskconfigQuery.java new file mode 100644 index 0000000..f946261 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/SchBaseTaskconfigQuery.java @@ -0,0 +1,8 @@ +package org.nl.acs.sch.task.service.dto; + + +import org.nl.acs.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.common.domain.query.BaseQuery; + +public class SchBaseTaskconfigQuery extends BaseQuery { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/WorkDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/WorkDto.java new file mode 100644 index 0000000..b5eadc3 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/WorkDto.java @@ -0,0 +1,69 @@ +package org.nl.acs.sch.task.service.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class WorkDto implements Serializable { + private String work_id; + + private String work_code; + + /* + * 物料编码 + */ + private String material_code; + + /* + * 工单编码 + */ + private String mfg_order_name; + + + /* + * 物料名称 + */ + private String material_name; + + /* + * 任务配置编码 + */ + private String resource_name; + + private int seq_no; + + private float qty; + + /* + * 剩余桶数 + */ + private String remain_num; + + /* + * 需求桶数 + */ + private String require_num; + + private String status; + + /** + * 创建人 + */ + private String create_by; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_by; + + /** + * 修改时间 + */ + private String update_time; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/WorkQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/WorkQuery.java new file mode 100644 index 0000000..3678565 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/dto/WorkQuery.java @@ -0,0 +1,13 @@ +package org.nl.acs.sch.task.service.dto; + +import lombok.Data; +import org.nl.acs.sch.task.service.dao.Work; +import org.nl.common.domain.query.BaseQuery; + +import java.io.Serializable; + +@Data +public class WorkQuery implements Serializable { + private String blurry; + private String status; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/SchBaseTaskServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/SchBaseTaskServiceImpl.java new file mode 100644 index 0000000..542daeb --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -0,0 +1,170 @@ +package org.nl.acs.sch.task.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.sch.task.service.ISchBaseTaskService; +import org.nl.acs.sch.task.service.dao.SchBaseTask; +import org.nl.acs.sch.task.service.dao.mapper.SchBaseTaskMapper; +import org.nl.acs.sch.task.service.dao.mapper.SchBaseTaskconfigMapper; +import org.nl.acs.sch.task.service.dto.SchBaseTaskQuery; +import org.nl.acs.sch.task_manage.AbstractTask; +import org.nl.acs.sch.task_manage.task.core.TaskStatus; +import org.nl.acs.sch.task_manage.task.tasks.TaskFactory; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class SchBaseTaskServiceImpl extends ServiceImpl implements ISchBaseTaskService { + @Autowired + private SchBaseTaskMapper schBaseTaskMapper; + @Autowired + private SchBaseTaskconfigMapper schBaseTaskconfigMapper; + + @Autowired + private TaskFactory taskFactory; + + @Override + public IPage queryAll(SchBaseTaskQuery whereJson, PageQuery page) { + List collect = ObjectUtil.isNotEmpty(whereJson.getMore_task_status()) + ? Arrays.stream(whereJson.getMore_task_status().split(",")).collect(Collectors.toList()) : null; + if (collect != null) { + if (collect.contains(TaskStatus.UNFINISHED.getCode())) { + collect = null; + whereJson.setUnFinished(TaskStatus.EXECUTING.getCode()); + } + } + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + pages = schBaseTaskMapper.selectPageLeftJoin(pages, whereJson, collect); + return pages; + } + + @Override + public void create(SchBaseTask entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + Assert.notNull(entity.getTask_status(), "任务状态不能为空!"); + + entity.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + schBaseTaskMapper.insert(entity); + } + + @Override + public void update(SchBaseTask entity) { + SchBaseTask dto = schBaseTaskMapper.selectById(entity.getTask_code()); + if (dto == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + schBaseTaskMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + schBaseTaskMapper.deleteBatchIds(ids); + } + + @Override + public void apply(JSONObject param) { + /** + * 参数:设备编号(确定的点), 任务类型, 载具编码 + * hint: 根据任务类型来判断校验 + */ + String configCode = param.getString("config_code"); + // 校验设备编码 + AbstractTask task = taskFactory.getTask(configCode); + // 执行创建任务 + task.apply(param); + } + + @Override + public JSONArray getTaskStatusList() { + TaskStatus[] values = TaskStatus.values(); + JSONArray arr = new JSONArray(); + for (TaskStatus value : values) { + JSONObject json = new JSONObject(); + json.put("code", value.getCode()); + json.put("name", value.getName()); + arr.add(json); + } + return arr; + } + + @Override + public void operation(Map param) { + String task_code = ObjectUtil.isNotEmpty(param.get("task_code")) ? param.get("task_code").toString() : null; + String method_name = ObjectUtil.isNotEmpty(param.get("method_name")) ? param.get("method_name").toString() : null; + String config_code = ObjectUtil.isNotEmpty(param.get("config_code")) ? param.get("config_code").toString() : null; + if (ObjectUtil.isEmpty(task_code) || ObjectUtil.isEmpty(method_name) || ObjectUtil.isEmpty(config_code)) { + throw new BadRequestException("操作失败"); + } + // 根据标识找到任务 + SchBaseTask taskOne = this.getByCode(task_code); + if (Integer.parseInt(taskOne.getTask_status()) >= Integer.parseInt(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("任务已完成或已取消!"); + } + // 根据配置去工厂类获得类对象 + String processing_class = config_code; + String message = ""; + // 根据任务类型获取对应的任务操作类 + AbstractTask abstractTask = taskFactory.getTask(processing_class); + // 调用每个任务类的method_name()强制结束方法 + JSONObject result; + switch (method_name) { + case "immediateNotifyAcs": + // + break; + // 强制完成 + case "forceFinish": + abstractTask.forceFinish(task_code); + break; + case "cancel": + abstractTask.cancel(task_code); + break; + default: + break; + } + } + + @Override + public SchBaseTask getByCode(String taskCode) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(SchBaseTask::getTask_code, taskCode); + return this.getOne(lam); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/SchBaseTaskconfigServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/SchBaseTaskconfigServiceImpl.java new file mode 100644 index 0000000..4b2184a --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/SchBaseTaskconfigServiceImpl.java @@ -0,0 +1,131 @@ +package org.nl.acs.sch.task.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.sch.task.service.ISchBaseTaskconfigService; +import org.nl.acs.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.acs.sch.task.service.dao.mapper.SchBaseTaskconfigMapper; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Slf4j +@Service +public class SchBaseTaskconfigServiceImpl extends ServiceImpl implements ISchBaseTaskconfigService { + + @Autowired + private SchBaseTaskconfigMapper schBaseTaskconfigMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry")) ? whereJson.get("blurry").toString() : null; + String workshop_code = ObjectUtil.isNotEmpty(whereJson.get("workshop_code")) ? whereJson.get("workshop_code").toString() : null; + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.like(ObjectUtil.isNotEmpty(blurry), SchBaseTaskconfig::getConfig_name, blurry) + .or(ObjectUtil.isNotEmpty(blurry), la -> la.like( SchBaseTaskconfig::getConfig_code, blurry)) + .eq(ObjectUtil.isNotEmpty(workshop_code), SchBaseTaskconfig::getWorkshop_code, workshop_code); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + schBaseTaskconfigMapper.selectPage(pages, lam); + pages.getRecords().forEach(config -> { + if (ObjectUtil.isNotEmpty(config.getStart_region_str())) { + config.setStart_region_strs(Arrays.asList(config.getStart_region_str().split(","))); + } + if (ObjectUtil.isNotEmpty(config.getNext_region_str())) { + config.setNext_region_strs(Arrays.asList(config.getNext_region_str().split(","))); + } + }); + return pages; + } + + @Override + public void create(SchBaseTaskconfig entity) { + SchBaseTaskconfig schBaseTaskconfig = schBaseTaskconfigMapper.selectOne(new LambdaQueryWrapper().eq(SchBaseTaskconfig::getConfig_code, entity.getConfig_code())); + if (ObjectUtil.isNotEmpty(schBaseTaskconfig)) { + throw new BadRequestException("任务配置【" + entity.getConfig_code() + "】已存在!"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + if (ObjectUtil.isAllEmpty(entity.getStart_region_strs(), entity.getNext_region_strs())) { + throw new BadRequestException("起点区域和终点区域不能同时为空!"); + } + + if (ObjectUtil.isNotEmpty(entity.getStart_region_strs())) { + // 起点区域配置 + String startRegion = String.join(",", entity.getStart_region_strs()); + entity.setStart_region_str(startRegion); + } + + if (ObjectUtil.isNotEmpty(entity.getNext_region_strs())) { + // 终点区域配置 + String nextRegion = String.join(",", entity.getNext_region_strs()); + entity.setNext_region_str(nextRegion); + } + + entity.setConfig_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + schBaseTaskconfigMapper.insert(entity); + } + + @Override + public void update(SchBaseTaskconfig entity) { + SchBaseTaskconfig dto = schBaseTaskconfigMapper.selectById(entity.getConfig_id()); + if (dto == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + if (ObjectUtil.isAllEmpty(entity.getStart_region_strs(), entity.getNext_region_strs())) { + throw new BadRequestException("起点区域和终点区域不能同时为空!"); + } + + if (ObjectUtil.isNotEmpty(entity.getStart_region_strs())) { + // 起点区域配置 + String startRegion = String.join(",", entity.getStart_region_strs()); + entity.setStart_region_str(startRegion); + } + + if (ObjectUtil.isNotEmpty(entity.getNext_region_strs())) { + // 终点区域配置 + String nextRegion = String.join(",", entity.getNext_region_strs()); + entity.setNext_region_str(nextRegion); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + schBaseTaskconfigMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + schBaseTaskconfigMapper.deleteBatchIds(ids); + } + + @Override + public List getTaskConfigList() { + return this.list(); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/WorkServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/WorkServiceImpl.java new file mode 100644 index 0000000..c06a5d7 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task/service/impl/WorkServiceImpl.java @@ -0,0 +1,199 @@ +package org.nl.acs.sch.task.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.order.service.OrderService; +import org.nl.acs.order.service.dto.OrderDto; +import org.nl.acs.point.domain.AcsPoint; +import org.nl.acs.point.service.IAcsPointService; +import org.nl.acs.sch.task.service.WorkService; +import org.nl.acs.sch.task.service.dao.SchBaseTask; +import org.nl.acs.sch.task.service.dao.Work; +import org.nl.acs.sch.task.service.dao.mapper.WorkMapper; +import org.nl.acs.sch.task.service.dto.WorkQuery; +import org.nl.acs.sch.task_manage.task.core.TaskStatus; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class WorkServiceImpl extends ServiceImpl implements WorkService { + @Autowired + private WorkMapper workMapper; + @Autowired + private TaskService taskService; + @Autowired + private OrderService orderService; + @Autowired + private IAcsPointService acsPointService; + + @Override + public IPage queryAll(WorkQuery whereJson, PageQuery page) { +// IPage pages = new Page<>(page.getPage() + 1, page.getSize()); +// LambdaQueryWrapper workLambdaQueryWrapper = Wrappers.lambdaQuery(Work.class); +// workLambdaQueryWrapper.eq(StrUtil.isNotEmpty(whereJson.getStatus()), Work::getStatus, whereJson.getStatus()) +// .lt(Work::getStatus, CommonFinalParam.TWO); +// if (StrUtil.isNotEmpty(whereJson.getBlurry())) { +// workLambdaQueryWrapper.and(wrapper -> { +// wrapper.like(StrUtil.isNotEmpty(whereJson.getBlurry()), Work::getResource_name, whereJson.getBlurry()) +// .or() +// .like(StrUtil.isNotEmpty(whereJson.getBlurry()), Work::getMfg_order_name, whereJson.getBlurry()); +// }); +// } +// pages = workMapper.selectPage(pages, workLambdaQueryWrapper); +// return pages; + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + pages = workMapper.selectPageLeftJoin(pages, whereJson); + return pages; + } + + @Override + public void create(Work entity) { + String work_id = entity.getWork_id(); + Work workObj = workMapper.selectById(work_id); + if (ObjectUtil.isNotEmpty(workObj) && !workObj.getWork_id().equals(entity.getWork_id())) { + throw new BadRequestException("存在相同的任务id"); + } + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setWork_id(IdUtil.getSnowflake(1, 1).nextId() + ""); + entity.setWork_code(CodeUtil.getNewCode("WORK_CODE")); + entity.setStatus("0"); + entity.setCreate_by(nickName); + entity.setCreate_time(now); + entity.setUpdate_by(nickName); + entity.setUpdate_time(now); + workMapper.insert(entity); + } + + @Override + public void update(Work entity) { + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_by(nickName); + entity.setUpdate_time(now); + workMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + workMapper.deleteBatchIds(ids); + } + + @Override + public void send(String id) { + Work work = workMapper.selectById(id); + if (ObjectUtil.isEmpty(work)) { + throw new BadRequestException("不存在该配料任务"); + } + String mfg_order_name = work.getMfg_order_name(); + List works = workMapper.selectList(Wrappers.lambdaQuery(Work.class).eq(Work::getMfg_order_name, mfg_order_name).eq(Work::getStatus, TaskStatus.EXECUTING.getCode())); + if (works.size() != 0) { + throw new BadRequestException("该工单已有配料任务正在执行中,请勿重复下发"); + } + work.setStatus(TaskStatus.EXECUTING.getCode()); + workMapper.updateById(work); + } + + @Override + public void reSend(Work dto) { + Work work = workMapper.selectById(dto.getWork_id()); + if (ObjectUtil.isEmpty(work)) { + throw new BadRequestException("不存在该配料任务"); + } + work.setRemain_num(work.getRemain_num() + dto.getRequire_num()); + work.setRequire_num(work.getRequire_num() + dto.getRequire_num()); + workMapper.updateById(work); + + } + + @Override + public void finish(String id) { + Work work = workMapper.selectById(id); + if (ObjectUtil.isEmpty(work)) { + throw new BadRequestException("不存在该配料任务"); + } + work.setStatus(TaskStatus.FINISHED.getCode()); + workMapper.updateById(work); + OrderDto dto = orderService.findByCode(work.getMfg_order_name()); + List works = workMapper.selectList(Wrappers.lambdaQuery(Work.class).eq(Work::getMfg_order_name, work.getMfg_order_name()).eq(Work::getStatus, TaskStatus.FINISHED.getCode())); + // 工单所有配料任务都完成,则工单状态改为已完成 + if (works.size() == dto.getDetail_count()) { + dto.setStatus(CommonFinalParam.FINISHED); + orderService.update(dto); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void confirm(String id) { + Work work = workMapper.selectOne(Wrappers.lambdaQuery(Work.class).eq(Work::getWork_id, id)); + if (ObjectUtil.isEmpty(work)) { + throw new BadRequestException("该配料任务不存在!"); + } + if (StrUtil.equals(CommonFinalParam.FINISHED, work.getStatus())) { + throw new BadRequestException("该配料任务已完成!"); + } + String resource_name = work.getResource_name(); + TaskDto taskDto = new TaskDto(); + taskDto.setStart_device_code("T1"); + taskDto.setNext_device_code(resource_name); + taskDto.setTask_type(CommonFinalParam.TYPE_THREE); + taskDto.setAgv_system_type(CommonFinalParam.TWO); + AcsPoint point = acsPointService.findByCode("T1"); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("不存在T1点位"); + } + if (!point.getIs_used().booleanValue() || point.getPoint_status().equals(CommonFinalParam.ONE)) { + throw new BadRequestException("T1点位被占用"); + } + try { + taskService.create(taskDto); + } catch (Exception e) { + e.printStackTrace(); + } + work.setRemain_num(work.getRemain_num() - 1); + //当前数量为0,则修改状态为已完成 + if (work.getRemain_num() == 0) { + work.setStatus(TaskStatus.FINISHED.getCode()); + } + workMapper.updateById(work); + String mfg_order_name = work.getMfg_order_name(); + OrderDto dto = orderService.findByCode(mfg_order_name); + List works = workMapper.selectList(Wrappers.lambdaQuery(Work.class).eq(Work::getMfg_order_name, mfg_order_name).eq(Work::getStatus, TaskStatus.FINISHED.getCode())); + // 工单所有配料任务都完成,则工单状态改为已完成 + if (works.size() == dto.getDetail_count()) { + dto.setStatus(CommonFinalParam.FINISHED); + orderService.update(dto); + } + } + + @Override + public Work findByCode(String work_code) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(Work::getWork_code, work_code); + return workMapper.selectOne(wrapper); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AbstractTask.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AbstractTask.java new file mode 100644 index 0000000..82aca25 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AbstractTask.java @@ -0,0 +1,45 @@ +package org.nl.acs.sch.task_manage; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.point.service.IAcsPointService; +import org.nl.acs.sch.task.service.ISchBaseTaskService; +import org.nl.acs.sch.task.service.ISchBaseTaskconfigService; +import org.nl.common.exception.BadRequestException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author ldjun + * @version 1.0 + * @date 2023年05月16日 16:42 + * @desc 任务抽象父类,申请任务的相关率先判断以及生成,接着到子类执行任务的创建,最后统一通过定时任务去下发到ACS + */ +@Slf4j +@Component +public abstract class AbstractTask { + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBaseTaskconfigService taskConfigService; + @Autowired + private IAcsPointService pointService; + + public void apply(JSONObject param) throws BadRequestException { + + } + + /** + * 强制结束完成任务 + * + * @param task_code + */ + public abstract void forceFinish(String task_code); + + /** + * 取消任务,货物搬回原点 + * + * @param task_code + */ + public abstract void cancel(String task_code); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AcsTaskDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AcsTaskDto.java new file mode 100644 index 0000000..1b322f5 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AcsTaskDto.java @@ -0,0 +1,4 @@ +package org.nl.acs.sch.task_manage; + +public class AcsTaskDto { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AutoCreateTask.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AutoCreateTask.java new file mode 100644 index 0000000..3af1905 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/AutoCreateTask.java @@ -0,0 +1,4 @@ +package org.nl.acs.sch.task_manage; + +public class AutoCreateTask { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/GeneralDefinition.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/GeneralDefinition.java new file mode 100644 index 0000000..8287750 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/GeneralDefinition.java @@ -0,0 +1,168 @@ +package org.nl.acs.sch.task_manage; + +public class GeneralDefinition { + /** + * 默认密码 + */ + public static final String DEFAULT_PASSWORD = "123456"; + /** + * 盐值加密 + */ + public static final String SALT = "salt"; + /** + * 转义点 + */ + public static final String ESCAPE_DOT = "\\."; + /** + * 点 + */ + public static final String DOT = "."; + /** + * 日期变量 + */ + public static final String DATE_FORMAT = "yyyy-MM-dd"; + /** + * 时间变量 + */ + public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; + /** + * 未知 + */ + public static final String UNKNOWN = "-"; + // 统一编码定义 + /** + * 窑自动任务开启 + */ + public static final String AUTO_KILN_CALL = "auto_kiln_call"; + // 是否 + /** + * 是/正确/可用... + */ + public static final String YES = "1"; + /** + * 否/错误/不可用... + */ + public static final String NO = "0"; + // 载具类型 + /** + * 料盅 + */ + public static final String MATERIAL_CUP = "LZ"; + /** + * 钢托盘 + */ + public static final String STEEL_TRAY = "GTP"; + // 账号定义 + /** + * acs系统 + */ + public static final String ACS_ID = "2"; + /** + * acs系统 + */ + public static final String ACS_NAME = "ACS系统"; + /** + * mes系统 + */ + public static final String MES_ID = "3"; + /** + * mes系统 + */ + public static final String MES_NAME = "MES系统"; + // 点位类型 + /** + * 设备位 + */ + public static final String DEVICE_POINT = "1"; + /** + * 对接位 + */ + public static final String DOCKING_POINT = "2"; + /** + * 检测位 + */ + public static final String CHECK_POINT = "4"; + // 出入口 + /** + * 入口 + **/ + public static final String ENTRANCE = "1"; + /** + * 出口 + **/ + public static final String EXIT = "2"; + // 任务生产方式 + /** + * 自动创建 + **/ + public static final String AUTO_CREATION = "1"; + /** + * ACS创建 + **/ + public static final String ACS_CREATION = "2"; + // 请求方向 + /** + * ACS->LMS + **/ + public static final String ACS_LMS = "1"; + /** + * LMS->ACS + **/ + public static final String LMS_ACS = "2"; + /** + * MES->LMS + **/ + public static final String MES_LMS = "3"; + /** + * LMS->MES + **/ + public static final String LMS_MES = "4"; + // 区域定义 + /** + * 料盅睏料线区域 + */ + public static final String LZKLX = "LZKLX"; + /** + * 干燥窑区域 + */ + public static final String GZY = "GZY"; + // 特殊: 1-缓存输送线入口,2-缓存输送线出口,3-上输送线,4-下输送线 + /** + * 上输送线 + */ + public static final String UPPER_CONVEYOR_LINE = "3"; + /** + * 下输送线 + */ + public static final String LOWER_CONVEYOR_LINE = "4"; + // 参数名称 + /** + * 是否连接 + */ + public static final String IS_CONNECT_ACS = "is_connect_acs"; + /** + * ACS路径 + */ + public static final String ACS_URL = "acs_url"; + /** + * 是否连接 + */ + public static final String IS_CONNECT_MES = "is_connect_mes"; + /** + * MES路径 + */ + public static final String MES_URL = "mes_url"; + // 完成/取消 + /** + * 任务完成 + */ + public static final String TASK_FINISH = "任务完成"; + /** + * 任务取消 + */ + public static final String TASK_CANCEL = "任务取消"; + /** + * 区域 - 分拣 + */ + public static final String AREA_FJ = "FJ"; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/task/core/TaskStatus.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/task/core/TaskStatus.java new file mode 100644 index 0000000..bec495a --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/task/core/TaskStatus.java @@ -0,0 +1,67 @@ +package org.nl.acs.sch.task_manage.task.core; + +public enum TaskStatus { + /** + * 申请 + */ + APPLY("1", "申请", "申请"), + /** + * 创建完成 + */ + CREATED("2", "创建完成", "创建完成"), + /** + * 下发 + */ + ISSUED("3", "下发", "下发"), + /** + * 执行中 + */ + EXECUTING("1", "执行中", "执行中"), + /** + * 完成 + */ + FINISHED("2", "完成", "完成"), + /** + * 已取消 + */ + CANCELED("6", "已取消", "已取消"), + /** + * 未完成 + */ + UNFINISHED("7", "未完成", "未完成"); + + + TaskStatus(String code, String name, String desc) { + this.code = code; + this.name = name; + this.desc = desc; + } + + private String code; + private String name; + private String desc; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/task/tasks/TaskFactory.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/task/tasks/TaskFactory.java new file mode 100644 index 0000000..f243f7c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/sch/task_manage/task/tasks/TaskFactory.java @@ -0,0 +1,42 @@ +package org.nl.acs.sch.task_manage.task.tasks; + +import org.nl.acs.sch.task_manage.AbstractTask; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ldjun + * @version 3.0 + * @date 2023年05月16日 16:42 + * @desc 2.0 采用获取注解来标识任务类型,并通过扫描和反射的方式来获取任务实例 + * 3.0 采用获取所有bean对象判断是否为AbstractTask + */ +@Component +public class TaskFactory implements BeanPostProcessor { + private final Map taskMap; + + @Autowired + public TaskFactory() { + taskMap = new HashMap<>(); + } + + @Override + public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + if (bean instanceof AbstractTask) { + taskMap.put(beanName, (AbstractTask) bean); + } + return bean; + } + + public AbstractTask getTask(String taskType) { + if (taskType == null) { + return null; + } + return taskMap.get(taskType); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 4a4ae49..74730f0 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -130,8 +130,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme private static final String BQHJ_TYPE = "6"; - - @Override public PageInfo queryAll(TaskQueryParam query, Pageable pageable) { IPage queryPage = PageUtil.toMybatisPage(pageable); @@ -477,10 +475,10 @@ public class TaskServiceImpl extends CommonServiceImpl impleme && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) .collect(Collectors.toList()); - if(CollUtil.isEmpty(collect)){ + if (CollUtil.isEmpty(collect)) { tasks.forEach( - task ->{ - if(TASK_TYPE.equals(task.getTask_type()) && StrUtil.isNotEmpty(task.getPut_device_code())){ + task -> { + if (TASK_TYPE.equals(task.getTask_type()) && StrUtil.isNotEmpty(task.getPut_device_code())) { Instruction instruction = instructionService.findByDeviceCodeFromCache(task.getNext_device_code()); if (ObjectUtil.isNotEmpty(instruction)) { if (StrUtil.equals(instruction.getStart_device_code(), device_code)) { @@ -507,10 +505,10 @@ public class TaskServiceImpl extends CommonServiceImpl impleme && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) .collect(Collectors.toList()); - if(CollUtil.isEmpty(collect)){ + if (CollUtil.isEmpty(collect)) { tasks.forEach( - task ->{ - if(BQHJ_TYPE.equals(task.getTask_type()) && StrUtil.isNotEmpty(task.getPut_device_code())){ + task -> { + if (BQHJ_TYPE.equals(task.getTask_type()) && StrUtil.isNotEmpty(task.getPut_device_code())) { Instruction instruction = instructionService.findByDeviceCodeFromCache(task.getNext_device_code()); if (ObjectUtil.isNotEmpty(instruction)) { if (StrUtil.equals(instruction.getStart_device_code(), device_code)) { @@ -578,14 +576,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme @Override public void create(TaskDto dto) throws Exception { - dto = foramte(dto); - dto.setInteraction_json(ObjectUtil.isNotEmpty(dto.getInteractionJson()) ? dto.getInteractionJson().toJSONString() : ""); - if (!StrUtil.isEmpty(dto.getVehicle_code())) { - TaskDto vehicle_dto = this.findByContainer(dto.getVehicle_code()); - if (vehicle_dto != null) { - throw new BadRequestException(LangProcess.msg("task_checkExist", dto.getVehicle_code())); - } - } String currentUsername = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); String task_uuid = dto.getTask_id(); @@ -597,8 +587,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme task_code = CodeUtil.getNewCode("TASK_NO"); task_code = CommonFinalParam.HYPHEN_ + task_code; } - String start_point_code; - String next_point_code = dto.getNext_point_code(); String start_device_code = dto.getStart_device_code(); String next_device_code = dto.getNext_device_code(); String route_plan_code = dto.getRoute_plan_code(); @@ -609,28 +597,22 @@ public class TaskServiceImpl extends CommonServiceImpl impleme dto.setTask_code(task_code); dto.setRoute_plan_code(route_plan_code); dto.setTask_status(TaskStatusEnum.READY.getIndex()); - dto.setStart_device_code2(dto.getStart_point_code2()); - dto.setNext_device_code2(dto.getNext_point_code2()); + dto.setStart_point_code(start_device_code); + dto.setNext_point_code(next_device_code); if (StrUtil.isEmpty(dto.getPriority())) { dto.setPriority(CommonFinalParam.ONE); } String plan_code = dto.getRoute_plan_code(); - // 判断起点终点设备类型 - String startDeviceType = deviceAppService.findDeviceTypeByCode(dto.getStart_device_code()); - String nextDeviceType = deviceAppService.findDeviceTypeByCode(dto.getNext_device_code()); - // 同一排转库任务不做路由校验 - if (!(StrUtil.equals(DeviceType.storage.toString(), startDeviceType) && StrUtil.equals(DeviceType.storage.toString(), nextDeviceType) && StrUtil.equals(start_device_code, next_device_code))) { - if (routeLineService - .getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code) - .size() - == 0) { - throw new BadRequestException(dto.getStart_point_code() + "->" + dto.getNext_point_code() + " " + LangProcess.msg("route_isNull")); - } + // 路由校验 + if (routeLineService + .getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code) + .size() + == 0) { + throw new BadRequestException(dto.getStart_point_code() + "->" + dto.getNext_point_code() + " " + LangProcess.msg("route_isNull")); } - String createTaskCheck = paramService.findByCode(AcsConfig.CREATETASKCHECK).getValue(); - DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device nextdevice = appService.findDeviceByCode(next_device_code); if (nextdevice == null) { @@ -643,69 +625,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme throw new BadRequestException("起点设备未配置"); } dto.setMaterial(startdevice.getMaterial_type()); - if (StrUtil.equals(DeviceType.storage.toString(), startDeviceType)) { - start_point_code = start_device_code + CommonFinalParam.HYPHEN_ + dto.getFrom_y() + CommonFinalParam.HYPHEN_ + dto.getFrom_z(); - dto.setStart_point_code(start_point_code); - } - if (StrUtil.equals(DeviceType.storage.toString(), nextDeviceType)) { - next_point_code = next_device_code + CommonFinalParam.HYPHEN_ + dto.getTo_y() + CommonFinalParam.HYPHEN_ + dto.getTo_z(); - dto.setNext_point_code(next_point_code); - } - if (StrUtil.equals(createTaskCheck, CommonFinalParam.ONE)) { - // 判断起点为输送设备 - if (StrUtil.equals(DeviceType.conveyor.toString(), startDeviceType)) { - - } - - if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { - } - } else { - // 判断起点为输送设备 - if (StrUtil.equals(DeviceType.conveyor.toString(), startDeviceType)) { - } - - if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { - // if (nextdevice.getDeviceDriver() instanceof - // XgAgvCarDeviceDriver) { - // standardOrdinarySiteDeviceDriver = (XgAgvCarDeviceDriver) - // nextdevice.getDeviceDriver(); - // if (nextdevice.getHas_goods() != 0) { - // throw new Exception("任务终点需满足无货!"); - // } - // } - - JSONObject jo = new JSONObject(); - JSONObject jo2 = new JSONObject(); - if (!StrUtil.isEmpty(dto.getMaterial())) { - if (!StrUtil.equals(dto.getMaterial(), CommonFinalParam.ONE)) { - jo.put("hasGoodStatus", "2"); - jo.put("material_type", dto.getMaterial()); - } else { - jo.put("hasGoodStatus", CommonFinalParam.ONE); - jo.put("material_type", CommonFinalParam.ONE); - } - - } else { - jo.put("hasGoodStatus", CommonFinalParam.ONE); - jo.put("material_type", CommonFinalParam.ONE); - } - jo.put("device_code", dto.getStart_device_code()); - jo.put("quantity", dto.getQuantity()); - jo.put("remark", dto.getRemark()); - jo.put("batch", startdevice.getBatch()); - jo.put("islock", "true"); - deviceService.changeDeviceStatus(jo); - Device deviceByCode = deviceAppService.findDeviceByCode(dto.getNext_device_code()); - jo2.put("device_code", dto.getNext_device_code()); - jo2.put("hasGoodStatus", deviceByCode.getHas_goods()); - jo2.put("quantity", deviceByCode.getQuantity()); - jo2.put("remark", deviceByCode.getRemark()); - jo2.put("material_type", deviceByCode.getMaterial_type()); - jo2.put("batch", deviceByCode.getBatch()); - jo2.put("islock", "true"); - deviceService.changeDeviceStatus(jo2); - } - } Task entity = ConvertUtil.convert(dto, Task.class); taskMapper.insert(entity); tasks.add(dto); @@ -887,7 +806,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme //反馈上位系统任务状态 this.feedWmsTaskStatus(entity); //关闭仙工运单序列 - if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode()) || StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { + if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Standard_AGV_Task.getCode())) { this.markComplete(entity); } } @@ -919,7 +838,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme //反馈上位系统任务状态 this.feedWmsTaskStatus(entity); //关闭仙工运单序列 - if(StrUtil.equals(task.getTask_type(),TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode())||StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { + if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode()) || StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { this.markComplete(entity); } } @@ -951,7 +870,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme //反馈上位系统任务状态 this.feedWmsTaskStatus(entity); //关闭仙工运单序列 - if(StrUtil.equals(task.getTask_type(),TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode())||StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { + if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode()) || StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { this.markComplete(entity); } } @@ -995,7 +914,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme List shortPathsList = routeLineService.getShortPathLines( start_device_code, acsTask.getNext_device_code(), route_plan_code); - Device startDevice = deviceAppService.findDeviceByCode(start_device_code); RouteLineDto routeLineDto = shortPathsList.get(0); String path = routeLineDto.getPath(); String type = routeLineDto.getType(); @@ -1004,12 +922,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme int index = 0; for (int m = 0; m < pathlist.size(); m++) { if (pathlist.get(m).equals(start_device_code)) { - //起点为货架跳过堆垛机 - if (startDevice.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - index = m + 2; - }else { - index = m + 1; - } + index = m + 1; break; } } @@ -1052,7 +965,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme instdto.setStart_height(start_height); instdto.setNext_height(next_height); instdto.setAgv_action_type(acsTask.getAgv_action_type()); - if (StrUtil.equals(agv_system_type, CommonFinalParam.TWO)) { // task_type //1、生箔; Itype=1:取空,取满,放空,放满; //2、分切 Itype=3取满、取空、放满、放空; @@ -1072,12 +984,9 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } else { log.info("未找到对应的AGV指令类型,任务号:" + acsTask.getTask_code() + ",task_type:" + acsTask.getTask_type()); } - } else { - instdto.setAgv_inst_type("4"); - } instructionservice.create2(instdto); - acsTask.setTask_status(CommonFinalParam.ONE); - this.update(acsTask); +// acsTask.setTask_status(CommonFinalParam.ONE); +// this.update(acsTask); return instdto; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java index e268c0b..8e601c3 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java @@ -4,7 +4,11 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/HandController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/HandController.java new file mode 100644 index 0000000..fd307b9 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/HandController.java @@ -0,0 +1,42 @@ +package org.nl.hand.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.sch.task.service.dto.WorkQuery; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.hand.service.HandService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +/** + * @Author: tq + * @Description: 手持接口 + * @Date: 2024/10/15 + */ + +@Slf4j +@RestController + +@RequestMapping("/api/hand") +@SaIgnore +public class HandController { + @Autowired + private HandService handService; + + @PostMapping + @Log("配料作业查询") + public ResponseEntity query() { + return new ResponseEntity<>(handService.query(), HttpStatus.OK); + } + + @Log("确认配料作业") + @PostMapping(value = "/confirm") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(handService.confirm(whereJson),HttpStatus.OK); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/MobileAuthorizationController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/MobileAuthorizationController.java similarity index 99% rename from acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/MobileAuthorizationController.java rename to acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/MobileAuthorizationController.java index 678b728..a6eee7f 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/MobileAuthorizationController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/MobileAuthorizationController.java @@ -1,4 +1,4 @@ -package org.nl.hand.rest; +package org.nl.hand.controller; import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.secure.SaSecureUtil; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/PdaController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/PdaController.java new file mode 100644 index 0000000..11704b8 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/controller/PdaController.java @@ -0,0 +1,94 @@ +package org.nl.hand.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.hand.service.PdaService; +import org.nl.hand.service.dao.dto.PdaDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author: tq + * @Description: 一体机接口 + * @Date: 2024/10/15 + */ +@Slf4j +@RestController + +@RequestMapping("/api/pda") +@SaIgnore +public class PdaController { + @Autowired + private PdaService pdaService; + + @PostMapping("/queryOrders") + @Log("工单查询") + public ResponseEntity queryOrders() { + return new ResponseEntity<>(pdaService.queryOrders(), HttpStatus.OK); + } + + @PostMapping("/queryWorks") + @Log("配料作业查询") + public ResponseEntity queryWorks() { + return new ResponseEntity<>(pdaService.queryWorks(), HttpStatus.OK); + } + + @PostMapping("/queryAllPoints") + @Log("查询所有点位") + @ApiOperation("查询所有点位") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryAllPoints() { + return new ResponseEntity<>(pdaService.queryAllPoints(), HttpStatus.OK); + } + + @Log("开始工单") + + @PostMapping("/startOrder") + public ResponseEntity startOrder(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaService.startOrder(whereJson),HttpStatus.OK); + } + + @Log("强制完成工单") + + @PostMapping("/forceFinish") + public ResponseEntity forceFinish(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaService.forceFinish(whereJson),HttpStatus.OK); + } + + @Log("下发配料作业") + @PostMapping(value = "/sendWork") + public ResponseEntity sendWork(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaService.sendWork(whereJson),HttpStatus.OK); + } + + @Log("补发配料作业") + @PostMapping(value = "/reSendWork") + public ResponseEntity reSendWork(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaService.reSendWork(whereJson),HttpStatus.OK); + } + + @Log("完成配料作业") + @PostMapping(value = "/finishWork") + public ResponseEntity finishWork(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaService.finishWork(whereJson),HttpStatus.OK); + } + + @PostMapping("/callTask") + @Log("生成退桶任务") + @ApiOperation("生成退桶任务") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity callTask(@RequestBody PdaDto dto) { + return new ResponseEntity<>(pdaService.callTask(dto), HttpStatus.OK); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/B2HeadDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/B2HeadDto.java deleted file mode 100644 index 2988dec..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/B2HeadDto.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.nl.hand.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @Author : TuQiang - * @create 2024/4/15 13:59 - */ -@Data -public class B2HeadDto implements Serializable { - /** - * 起始设备编码1 - */ - private String start_device_code1; - - /** - * 目标设备编码1 - */ - private String next_device_code1; - - /** - * 起始设备编码2 - */ - private String start_device_code2; - - /** - * 目标设备编码2 - */ - private String next_device_code2; - - /** - * 任务类型 - */ - private String task_type; -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDeviceDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDeviceDto.java deleted file mode 100644 index 7fe53c2..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDeviceDto.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.nl.hand.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @Author : TuQiang - * @create 2024/4/15 15:04 - */ -@Data -public class HeadDeviceDto implements Serializable { - /** - * 设备号 - */ - private String device_code; - - /** - * 操作类型 - * 0-禁止进出; - * 1-允许取放 - * 2-允许离开 - * - */ - private String option; -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadInstDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadInstDto.java deleted file mode 100644 index a061a14..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadInstDto.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.nl.hand.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @Author : TuQiang - * @create 2024/4/4 14:07 - */ -@Data -public class HeadInstDto implements Serializable { - /** - * 关键字 可为载具号、指令号、agv车号 - */ - private String keyword; - - /** - * 起始设备编码 - */ - private String start_devicecode; - - /** - * 目标设备编码 - */ - private String next_devicecode; - - /** - * 指令uuid - */ - private String inst_uuid; - - /** - * 操作类型 - * 1 指令撤销 - * 2 重新下发 - * 3 强制完成 - */ - private String type; -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadTaskDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadTaskDto.java deleted file mode 100644 index 89ff13c..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadTaskDto.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.nl.hand.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @Author : TuQiang - * @create 2024/4/4 16:06 - */ -@Data -public class HeadTaskDto implements Serializable { - /** - * 关键字 可为载具号、指令号、agv车号 - */ - private String keyword; - - /** - * 起始设备编码 - */ - private String start_devicecode; - - /** - * 目标设备编码 - */ - private String next_devicecode; - - /** - * 任务uuid - */ - private String task_uuid; - - /** - * 操作类型 - * 1 重新生成 - * 2 强制完成 - */ - private String type; -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/RegionDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/RegionDto.java deleted file mode 100644 index 9d3ea03..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/RegionDto.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.nl.hand.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @Author : TuQiang - * @create 2024/4/2 16:50 - */ -@Data -public class RegionDto implements Serializable { - /** - * 区域编号 - */ - private String region_code; -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/B2HandController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/B2HandController.java deleted file mode 100644 index 8d1c518..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/B2HandController.java +++ /dev/null @@ -1,83 +0,0 @@ -package org.nl.hand.rest; - -import cn.dev33.satoken.annotation.SaIgnore; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.logging.annotation.Log; -import org.nl.hand.dto.B2HeadDto; -import org.nl.hand.dto.HeadDeviceDto; -import org.nl.hand.dto.RegionDto; -import org.nl.hand.service.B2HandService; -import org.nl.hand.service.HandService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @Author : TuQiang - * @create 2024/4/15 13:50 - */ -@RestController -@RequiredArgsConstructor -@Api(tags = "手持接口") -@RequestMapping("api/hands") -@Slf4j -public class B2HandController { - @Autowired - private B2HandService b2HandService; - - @Autowired - private HandService handService; - - @PostMapping("/queryArea") - @Log("查询区域") - @ApiOperation("查询区域") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity queryArea() { - return new ResponseEntity<>(handService.queryArea(), HttpStatus.OK); - } - - @PostMapping("/queryPointByArea") - @Log("根据区域编码查点位") - @ApiOperation("根据区域编码查点位") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity queryPointByArea(@RequestBody RegionDto dto) { - String region_code = dto.getRegion_code(); - return new ResponseEntity<>(handService.queryPointByArea(region_code), HttpStatus.OK); - } - - @PostMapping("/callTask") - @Log("手持创建任务") - @ApiOperation("手持创建任务") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity callTask(@RequestBody B2HeadDto dto) { - return new ResponseEntity<>(b2HandService.callTask(dto), HttpStatus.OK); - } - - @PostMapping("/queryDevices") - @Log("查询所有设备") - @ApiOperation("查询所有设备") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity queryDevices() { - return new ResponseEntity<>(b2HandService.queryDevices(), HttpStatus.OK); - } - - @PostMapping("/updateDeviceStatus") - @Log("更新设备状态") - @ApiOperation("更新设备状态") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity updateDeviceStatus(@RequestBody HeadDeviceDto dto) { - return new ResponseEntity<>(b2HandService.updateDeviceStatus(dto), HttpStatus.OK); - } -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/HandController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/HandController.java deleted file mode 100644 index 1a063cf..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/HandController.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.nl.hand.rest; - -import cn.dev33.satoken.annotation.SaIgnore; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.logging.annotation.Log; -import org.nl.hand.dto.HeadDto; -import org.nl.hand.dto.HeadInstDto; -import org.nl.hand.dto.HeadTaskDto; -import org.nl.hand.dto.RegionDto; -import org.nl.hand.service.HandService; -import org.nl.system.service.dict.dao.Dict; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** - * @Author : TuQiang - * @create 2024/4/2 10:18 - */ - -@RestController -@RequiredArgsConstructor -@Api(tags = "手持接口") -@RequestMapping("api/hand") -@Slf4j -public class HandController { - @Autowired - private HandService handService; - - @PostMapping("/queryArea") - @Log("查询区域") - @ApiOperation("查询区域") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity queryArea() { - return new ResponseEntity<>(handService.queryArea(), HttpStatus.OK); - } - - @PostMapping("/queryPointByArea") - @Log("根据区域编码查点位") - @ApiOperation("根据区域编码查点位") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity queryPointByArea(@RequestBody RegionDto dto) { - String region_code = dto.getRegion_code(); - return new ResponseEntity<>(handService.queryPointByArea(region_code), HttpStatus.OK); - } - - @PostMapping("/callTask") - @Log("手持创建任务") - @ApiOperation("手持创建任务") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity callTask(@RequestBody HeadDto dto) { - return new ResponseEntity<>(handService.callTask(dto), HttpStatus.OK); - } - - @PostMapping("/insts") - @Log("查询未完成指令") - @ApiOperation("查询未完成指令") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity queryInst(@RequestBody HeadInstDto dto) { - return new ResponseEntity<>(handService.queryInst(dto), HttpStatus.OK); - } - - @PostMapping("/inst") - @Log("指令操作") - @ApiOperation("指令操作") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity instOpt(@RequestBody HeadInstDto dto) throws Exception { - return new ResponseEntity<>(handService.instOpt(dto), HttpStatus.OK); - } - - @PostMapping("/tasks") - @Log("查询未完成指令") - @ApiOperation("查询未完成指令") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity querytasks(@RequestBody HeadTaskDto dto) { - return new ResponseEntity<>(handService.querytasks(dto), HttpStatus.OK); - } - - @PostMapping("/taskoperation") - @Log("指令操作") - @ApiOperation("指令操作") - @SaIgnore - //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity taskOperation(@RequestBody HeadTaskDto dto) throws Exception { - return new ResponseEntity<>(handService.taskOperation(dto), HttpStatus.OK); - } -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/B2HandService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/B2HandService.java deleted file mode 100644 index f28bfaa..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/B2HandService.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.nl.hand.service; - -import org.nl.hand.dto.B2HeadDto; -import org.nl.hand.dto.HeadDeviceDto; - -import java.util.Map; - -/** - * @Author : TuQiang - * @create 2024/4/15 13:52 - */ -public interface B2HandService { - - /** - * 手持创建任务 - * - * @param dto - * @return - */ - Map callTask(B2HeadDto dto); - - Map queryDevices(); - - Map updateDeviceStatus(HeadDeviceDto dto); -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/HandService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/HandService.java index 2502e26..241339a 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/HandService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/HandService.java @@ -1,38 +1,13 @@ package org.nl.hand.service; +import com.alibaba.fastjson.JSONObject; +import org.nl.hand.service.dao.vo.PdaResponseVo; +import org.nl.hand.service.vo.WorkVo; -import com.alibaba.fastjson.JSONArray; -import org.nl.acs.ext.wms.data.CreateHandTaskResponse; -import org.nl.hand.dto.HeadDto; -import org.nl.hand.dto.HeadInstDto; -import org.nl.hand.dto.HeadTaskDto; +import java.util.List; -import java.util.Map; - -/** - * @Author : TuQiang - * @create 2024/4/2 10:19 - */ public interface HandService { + List query(); - - Map queryPointByArea(String region_code); - - /** - * 手持创建任务 - * - * @param dto - * @return - */ - Map callTask(HeadDto dto); - - Map queryArea(); - - Map queryInst(HeadInstDto dto); - - Map instOpt(HeadInstDto dto) throws Exception; - - Map querytasks(HeadTaskDto dto); - - Map taskOperation(HeadTaskDto dto); + PdaResponseVo confirm(JSONObject whereJson); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/PdaService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/PdaService.java new file mode 100644 index 0000000..15da096 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/PdaService.java @@ -0,0 +1,37 @@ +package org.nl.hand.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.sch.task.service.dao.Work; +import org.nl.hand.service.dao.dto.PdaDto; +import org.nl.hand.service.dao.vo.PdaResponseVo; +import org.nl.hand.service.vo.OrderVo; +import org.nl.hand.service.vo.WorkVo; + +import java.util.List; +import java.util.Map; + +public interface PdaService { + /** + * 工单查询 + * + * @return + */ + List queryOrders(); + + PdaResponseVo startOrder(JSONObject whereJson); + + PdaResponseVo forceFinish(JSONObject whereJson); + + List queryWorks(); + + PdaResponseVo sendWork(JSONObject whereJson); + + PdaResponseVo reSendWork(JSONObject whereJson); + + PdaResponseVo finishWork(JSONObject whereJson); + + JSONArray queryAllPoints(); + + Map callTask(PdaDto dto); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/dto/PdaDto.java similarity index 68% rename from acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDto.java rename to acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/dto/PdaDto.java index 35bc4b7..93d64b6 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDto.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/dto/PdaDto.java @@ -1,16 +1,11 @@ -package org.nl.hand.dto; +package org.nl.hand.service.dao.dto; import lombok.Data; import java.io.Serializable; -/** - * @Author : TuQiang - * @create 2024/4/2 16:54 - */ @Data -public class HeadDto implements Serializable { - +public class PdaDto implements Serializable { /** * 起始设备编码 */ @@ -25,5 +20,4 @@ public class HeadDto implements Serializable { * 任务类型 */ private String task_type; - } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/mapper/PdaMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/mapper/PdaMapper.java new file mode 100644 index 0000000..2f2cfc1 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/mapper/PdaMapper.java @@ -0,0 +1,13 @@ +package org.nl.hand.service.dao.mapper; + +import org.nl.hand.service.vo.OrderVo; +import org.nl.hand.service.vo.WorkVo; + +import java.util.List; + +public interface PdaMapper { + + List getOrders(); + + List getWorks(); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/mapper/PdaMapper.xml b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/mapper/PdaMapper.xml new file mode 100644 index 0000000..0e0b42e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/mapper/PdaMapper.xml @@ -0,0 +1,35 @@ + + + + + + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/vo/PdaResponseVo.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/vo/PdaResponseVo.java new file mode 100644 index 0000000..437dc8e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/dao/vo/PdaResponseVo.java @@ -0,0 +1,23 @@ +package org.nl.hand.service.dao.vo; + + +import lombok.Data; + +/** + * @Author: tq + * @Description: 一体机返回 + * @Date: 2024/10/15 + */ +@Data +public class PdaResponseVo { + /** + * 先提供一个message + */ + private String message; + + public static PdaResponseVo pdaResultOk(String message) { + PdaResponseVo vo = new PdaResponseVo(); + vo.setMessage(message); + return vo; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java deleted file mode 100644 index 9f8f92a..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java +++ /dev/null @@ -1,185 +0,0 @@ -package org.nl.hand.service.impl; - -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.common.exception.BadRequestException; -import org.nl.hand.dto.B2HeadDto; -import org.nl.hand.dto.HeadDeviceDto; -import org.nl.hand.service.B2HandService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -/** - * @Author : TuQiang - * @create 2024/4/15 13:52 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class B2HandServiceImpl implements B2HandService { - @Autowired - private TaskService taskserver; - @Autowired - private DeviceService deviceService; - @Autowired - private DeviceAppService deviceAppService; - @Autowired - private InstructionService instructionService; - - @Override - public Map callTask(B2HeadDto dto) { - JSONArray errArr = new JSONArray(); - String start_device_code = dto.getStart_device_code1(); - String next_device_code = dto.getNext_device_code1(); - String start_device_code2 = dto.getStart_device_code2(); - String next_device_code2 = dto.getNext_device_code2(); - String task_type = dto.getTask_type(); - - if (StrUtil.isEmpty(start_device_code)) { - throw new BadRequestException("起点1不能为空"); - } - if (StrUtil.isEmpty(next_device_code)) { - throw new BadRequestException("终点1不能为空"); - } - if (StrUtil.isEmpty(task_type)) { - throw new BadRequestException("任务类型不能为空"); - } - - JSONObject jo = new JSONObject(); - if (StrUtil.equals(task_type, CommonFinalParam.TYPE_ONE)) { - jo.put("start_device_code2", start_device_code2); - jo.put("next_device_code2", next_device_code2); - jo.put("start_point_code2", start_device_code2); - jo.put("next_point_code2", next_device_code2); - } else if (StrUtil.equals(task_type, CommonFinalParam.TYPE_TWO)) { - jo.put("start_device_code2", start_device_code2); - jo.put("next_device_code2", next_device_code2); - jo.put("start_point_code2", start_device_code2); - jo.put("next_point_code2", next_device_code2); - } - jo.put("start_device_code", start_device_code); - jo.put("next_device_code", next_device_code); - jo.put("start_point_code", start_device_code); - jo.put("next_point_code", next_device_code); - jo.put("task_type", task_type); - jo.put("route_plan_code","normal"); - jo.put("agv_system_type", "2"); - jo.put("priority", "1"); - - TaskDto task_dto = jo.toJavaObject(TaskDto.class); - try { - taskserver.create(task_dto); - } catch (Exception e) { -// e.printStackTrace(); - JSONObject json = new JSONObject(); - json.put("message", e.getMessage()); - errArr.add(json); - throw new RuntimeException(e.getMessage()); - } - JSONArray data = new JSONArray(); - JSONObject resultJson = new JSONObject(); - if (ObjectUtil.isEmpty(errArr)) { - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - } else { - resultJson.put("message", "操作失败"); - resultJson.put("data", data); - } - return resultJson; - } - - @Override - public Map queryDevices() { - JSONArray data = new JSONArray(); - //查询所有生箔区的设备 - List list = deviceService.lambdaQuery() - .eq(Device::getRegion, "1") - .list(); - if (CollectionUtil.isEmpty(list)) { - throw new BadRequestException("未查到该区域的设备!"); - } - - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - for (int i = 0; i < list.size(); i++) { - JSONObject jo = new JSONObject(); - Device device = list.get(i); - String device_id = device.getDevice_id(); - String device_code = device.getDevice_code(); - Device deviceCode = deviceAppService.findDeviceByCode(device_code); - int option = 0; - if (deviceCode.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) deviceCode.getDeviceDriver(); - option = standardOrdinarySiteDeviceDriver.getOption(); - } - String device_name = device.getDevice_name(); - BigDecimal seq_num = device.getSeq_num(); - jo.put("device_id", device_id); - jo.put("device_code", device_code); - jo.put("device_name", device_name); - jo.put("seq_num", seq_num); - jo.put("option", option); - data.add(jo); - } - JSONObject resultJson = new JSONObject(); - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - return resultJson; - } - - @Override - public Map updateDeviceStatus(HeadDeviceDto dto) { - JSONArray errArr = new JSONArray(); - String device_code = dto.getDevice_code(); - String option = dto.getOption(); - if (StrUtil.isEmpty(device_code)) { - throw new BadRequestException("设备号不能为空"); - } - if (StrUtil.isEmpty(option)) { - throw new BadRequestException("操作不能为空"); - } - //满轴位允许进入,空轴位允许离开 - if (device_code.contains("M")&&(!"1".equals(option))){ - throw new BadRequestException("该设备为满轴位,不能进行该操作"); - } - if (device_code.contains("K")&&(!"2".equals(option))){ - throw new BadRequestException("该设备为空轴位,不能进行该操作"); - } - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - Device device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device)){ - JSONObject json = new JSONObject(); - json.put("message", "设备不存在!"); - errArr.add(json); - } - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option)); - JSONArray data = new JSONArray(); - JSONObject resultJson = new JSONObject(); - if (ObjectUtil.isEmpty(errArr)) { - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - } else { - resultJson.put("message", "操作失败"); - resultJson.put("data", data); - } - return resultJson; - } -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/HandServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/HandServiceImpl.java index 2ab1831..b82e0f2 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/HandServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/HandServiceImpl.java @@ -1,459 +1,39 @@ package org.nl.hand.service.impl; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.ext.wms.data.CreateHandTaskRequest; -import org.nl.acs.ext.wms.data.CreateHandTaskResponse; -import org.nl.acs.ext.wms.data.JsonUtl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.domain.InstructionMybatis; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.instruction.service.dto.InstructionDto; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.task.domain.Task; -import org.nl.acs.task.enums.TaskStatusEnum; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.acs.task.service.dto.TaskIdAndStatusDTO; -import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.CodeUtil; -import org.nl.config.SpringContextHolder; -import org.nl.hand.dto.HeadDto; -import org.nl.hand.dto.HeadInstDto; -import org.nl.hand.dto.HeadTaskDto; +import org.nl.acs.sch.task.service.WorkService; +import org.nl.acs.sch.task.service.dao.Work; import org.nl.hand.service.HandService; -import org.nl.system.service.dict.ISysDictService; -import org.nl.system.service.dict.dao.Dict; +import org.nl.hand.service.PdaService; +import org.nl.hand.service.dao.vo.PdaResponseVo; +import org.nl.hand.service.vo.WorkVo; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -/** - * @Author : TuQiang - * @create 2024/4/2 10:20 - */ -@Service -@RequiredArgsConstructor @Slf4j -public class HandServiceImpl implements HandService { - - @Autowired - private DeviceService deviceService; - @Autowired - private TaskService taskserver; - @Autowired - private ISysDictService dictService; - @Autowired - private InstructionService instructionService; +@Service +public class HandServiceImpl implements HandService { @Autowired - NDCAgvService ndcAgvService; + private PdaService pdaService; @Autowired - DeviceAppService deviceAppService; - + private WorkService workService; @Override - public Map queryPointByArea(String region_code) { - JSONArray data = new JSONArray(); - if (StrUtil.isEmpty(region_code)) { - throw new BadRequestException("区域编码不能为空!"); - } - - //根据区域编码查询所有设备 - List list = deviceService.lambdaQuery() - .eq(Device::getRegion, region_code) - .list(); - if (CollectionUtil.isEmpty(list)) { - throw new BadRequestException("未查到该区域的设备!"); - } - for (int i = 0; i < list.size(); i++) { - JSONObject jo = new JSONObject(); - Device device = list.get(i); - String device_id = device.getDevice_id(); - String device_code = device.getDevice_code(); - String device_name = device.getDevice_name(); - BigDecimal seq_num = device.getSeq_num(); - jo.put("device_id", device_id); - jo.put("device_code", device_code); - jo.put("device_name", device_name); - jo.put("seq_num", seq_num); - data.add(jo); - } - JSONObject resultJson = new JSONObject(); - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - return resultJson; + public List query() { + return pdaService.queryWorks(); } @Override - public Map callTask(HeadDto dto) { - JSONArray errArr = new JSONArray(); - String start_device_code = dto.getStart_device_code(); - String next_device_code = dto.getNext_device_code(); - String task_type = dto.getTask_type(); - - if (StrUtil.isEmpty(start_device_code)) { - throw new BadRequestException("起点不能为空"); - } - if (StrUtil.isEmpty(next_device_code)) { - throw new BadRequestException("终点不能为空"); - } - if (StrUtil.isEmpty(task_type)) { - throw new BadRequestException("任务类型不能为空"); - } - - String start_device_code2 = ""; - String next_device_code2 = ""; - JSONObject jo = new JSONObject(); - if (StrUtil.equals(task_type, CommonFinalParam.TYPE_ONE)) { - String s = start_device_code.substring(start_device_code.length() - 1); - if (StrUtil.equals("K", s)) { - start_device_code2 = next_device_code.substring(0, next_device_code.length() - 1) + "M"; - next_device_code2 = start_device_code.substring(0, start_device_code.length() - 1) + "M"; - jo.put("start_device_code2", start_device_code2); - jo.put("next_device_code2", next_device_code2); - jo.put("start_point_code2", start_device_code2); - jo.put("next_point_code2", next_device_code2); - }else{ - throw new BadRequestException("起点设备名称不符"); - } - } else if (StrUtil.equals(task_type, CommonFinalParam.TYPE_TWO)) { - String s = start_device_code.substring(start_device_code.length() - 1); - String n = next_device_code.substring(next_device_code.length() - 1); - if (StrUtil.equals("M", s) && StrUtil.equals("M", n)) { - start_device_code2 = next_device_code.substring(0, next_device_code.length() - 1) + "K"; - next_device_code2 = start_device_code.substring(0, start_device_code.length() - 1) + "K"; - jo.put("start_device_code2", start_device_code2); - jo.put("next_device_code2", next_device_code2); - jo.put("start_point_code2", start_device_code2); - jo.put("next_point_code2", next_device_code2); - }else if(StrUtil.equals("S", n) && StrUtil.equals("M", s)){ - start_device_code2 = next_device_code.substring(0, next_device_code.length() - 1) + "X"; - next_device_code2 = start_device_code.substring(0, start_device_code.length() - 1) + "K"; - jo.put("start_device_code2", start_device_code2); - jo.put("next_device_code2", next_device_code2); - jo.put("start_point_code2", start_device_code2); - jo.put("next_point_code2", next_device_code2); - }else{ - throw new BadRequestException("起点设备名称不符"); - } - } - Device startDevice = deviceAppService.findDeviceByCode(start_device_code2); - Device nextDevice = deviceAppService.findDeviceByCode(next_device_code2); - if(StrUtil.isAllNotEmpty(start_device_code2,next_device_code2) && ObjectUtil.isAllEmpty(startDevice,nextDevice)){ - throw new BadRequestException("起点终点设备不存在"); - } - jo.put("start_device_code", start_device_code); - jo.put("next_device_code", next_device_code); - jo.put("start_point_code", start_device_code); - jo.put("next_point_code", next_device_code); - jo.put("task_type", task_type); - jo.put("agv_system_type", "2"); - jo.put("priority", "1"); - - TaskDto task_dto = jo.toJavaObject(TaskDto.class); - try { - taskserver.create(task_dto); - } catch (Exception e) { -// e.printStackTrace(); - JSONObject json = new JSONObject(); - json.put("message", e.getMessage()); - errArr.add(json); - throw new RuntimeException(e.getMessage()); - } - JSONArray data = new JSONArray(); - JSONObject resultJson = new JSONObject(); - if (ObjectUtil.isEmpty(errArr)) { - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - } else { - resultJson.put("message", "操作失败"); - resultJson.put("data", data); - } - return resultJson; - } - - @Override - public Map queryArea() { - JSONArray data = new JSONArray(); - List list = dictService.lambdaQuery() - .eq(Dict::getCode, "region_type") - .list(); - if (CollectionUtil.isEmpty(list)) { - throw new BadRequestException("未查到该区域的设备!"); - } - for (int i = 0; i < list.size(); i++) { - JSONObject jo = new JSONObject(); - Dict dict = list.get(i); - String region_id = dict.getDict_id(); - String region_code = dict.getValue(); - String region_name = dict.getLabel(); - jo.put("region_id", region_id); - jo.put("region_code", region_code); - jo.put("region_name", region_name); - data.add(jo); - } - JSONObject resultJson = new JSONObject(); - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - return resultJson; - } - - @Override - public Map queryInst(HeadInstDto dto) { - //查询未完成的指令 - String key = dto.getKeyword(); - String start_point = dto.getStart_devicecode(); - String next_point = dto.getNext_devicecode(); - - List list; - if (StrUtil.isEmpty(key)&&StrUtil.isEmpty(start_point)&&StrUtil.isEmpty(next_point)){ - list = instructionService.lambdaQuery() - .orderByDesc(InstructionMybatis::getCreate_time) - .list(); - }else { - list = instructionService.lambdaQuery() - .like(InstructionMybatis::getStart_device_code, start_point) - .like(InstructionMybatis::getNext_device_code, next_point) - .ne(InstructionMybatis::getInstruction_status, "2") - .eq(InstructionMybatis::getInstruction_code, key) - .or() - .eq(InstructionMybatis::getCarno, key) - .or() - .eq(InstructionMybatis::getVehicle_code, key) - .orderByDesc(InstructionMybatis::getCreate_time) - .list(); - } - if (CollectionUtil.isEmpty(list)){ - throw new BadRequestException("没有指令存在!"); - } - JSONArray data = new JSONArray(); - for (int i = 0; i < list.size(); i++) { - JSONObject inst = new JSONObject(); - inst.put("inst_uuid",list.get(i).getInstruction_id()); - inst.put("task_no",list.get(i).getTask_code()); - inst.put("instruction_code",list.get(i).getInstruction_code()); - inst.put("start_devicecode",list.get(i).getStart_device_code()); - inst.put("next_devicecode",list.get(i).getNext_device_code()); - inst.put("inst_status",list.get(i).getInstruction_status()); - inst.put("carrier",list.get(i).getVehicle_code()); - inst.put("inst_step",list.get(i).getExecute_message()); - inst.put("priority",list.get(i).getPriority()); - inst.put("create_time",list.get(i).getCreate_time()); - inst.put("carno",list.get(i).getCarno()); - data.add(inst); - } - JSONObject resultJson = new JSONObject(); - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - return resultJson; - } - - @Override - public Map instOpt(HeadInstDto dto) throws Exception { - JSONObject resultJson = new JSONObject(); - JSONArray data = new JSONArray(); - String type = dto.getType(); - String inst_uuid = dto.getInst_uuid(); - InstructionMybatis instruction= instructionService.lambdaQuery() - .eq(InstructionMybatis::getInstruction_id, inst_uuid) - .one(); - if(instruction==null){ - resultJson.put("message", "未找到该指令!"); - resultJson.put("data", data); - return resultJson; - } - if (StrUtil.equals(instruction.getInstruction_status(),"2")|| - StrUtil.equals(instruction.getInstruction_status(),"3")){ - resultJson.put("message", "指令已完成或已取消,无法操作!"); - resultJson.put("data", data); - return resultJson; - } - - /* 1 指令撤销 - 2 重新下发 - 3 强制完成*/ - if ("1".equals(type)){ - try { - if (StrUtil.isEmpty(instruction.getAgv_jobno())){ - instructionService.cancelNOSendAgv(inst_uuid); - }else { - ndcAgvService.deleteAgvInstToNDC(BeanUtil.copyProperties(instruction, Instruction.class)); - } - } catch (Exception e) { - resultJson.put("message", "下发agv失败!"); - resultJson.put("data", data); - return resultJson; - } - }else if ("2".equals(type)){ - try { - ndcAgvService.sendAgvInstToNDC(instruction.getAgv_system_type(),BeanUtil.copyProperties(instruction, Instruction.class)); - } catch (Exception e) { - resultJson.put("message", "下发agv失败!"); - resultJson.put("data", data); - return resultJson; - } - }else if ("3".equals(type)){ - try { - instructionService.finish(inst_uuid); - } catch (Exception e) { - resultJson.put("message", e.getMessage()); - resultJson.put("data", data); - return resultJson; - } - } - - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - return resultJson; - } - - @Override - public Map querytasks(HeadTaskDto dto) { - String key = dto.getKeyword(); - String start_point = dto.getStart_devicecode(); - String next_point = dto.getNext_devicecode(); - - List list; - if (StrUtil.isEmpty(key)&&StrUtil.isEmpty(start_point)&&StrUtil.isEmpty(next_point)){ - list = taskserver.lambdaQuery() - .orderByDesc(Task::getCreate_time) - .list(); - }else { - list = taskserver.lambdaQuery() - .like(Task::getStart_device_code, start_point) - .like(Task::getNext_device_code, next_point) - .lt(Task::getTask_status, "2") - .eq(Task::getTask_code, key) - .or() - .eq(Task::getVehicle_code, key) - .or() - .eq(Task::getTask_id, key) - .orderByDesc(Task::getCreate_time) - .list(); - } - if (CollectionUtil.isEmpty(list)){ - throw new BadRequestException("没有指令存在!"); - } - JSONArray data = new JSONArray(); - for (int i = 0; i < list.size(); i++) { - JSONObject task = new JSONObject(); - task.put("task_uuid",list.get(i).getTask_id()); - task.put("task_no",list.get(i).getTask_code()); - task.put("start_devicecode",list.get(i).getStart_device_code()); - task.put("next_devicecode",list.get(i).getNext_device_code()); - task.put("task_status",list.get(i).getTask_status()); - task.put("priority",list.get(i).getPriority()); - task.put("create_time",list.get(i).getCreate_time()); - task.put("carrier",list.get(i).getVehicle_code()); - data.add(task); - } - JSONObject resultJson = new JSONObject(); - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - return resultJson; - } - - @Override - public Map taskOperation(HeadTaskDto dto) { - JSONObject resultJson = new JSONObject(); - JSONArray data = new JSONArray(); - String type = dto.getType(); - String task_uuid = dto.getTask_uuid(); - if (StrUtil.isEmpty(type)){ - throw new BadRequestException("操作类型不能为空!"); - } - if (StrUtil.isEmpty(task_uuid)){ - throw new BadRequestException("id不能为空!"); - } - TaskDto taskDto = taskserver.findById(task_uuid); - if (BeanUtil.isEmpty(taskDto)){ - throw new BadRequestException("任务为空!"); - } - String task_code = taskDto.getTask_code(); - String start_device_code = taskDto.getStart_device_code(); - String next_device_code = taskDto.getNext_device_code(); - String task_id = taskDto.getTask_id(); - - if(StrUtil.equals(taskDto.getTask_status(),"2")||StrUtil.equals(taskDto.getTask_status(),"3")){ - resultJson.put("message", "任务已完成或已取消,无法操作"); - resultJson.put("data", data); - return resultJson; - } - if ("1".equals(type)){ - //重新生成指令 - Instruction instdto = new Instruction(); - instdto.setInstruction_id(IdUtil.simpleUUID()); - instdto.setInstruction_code(CodeUtil.getNewCode("INSTRUCT_NO")); - instdto.setRemark(taskDto.getRemark()); - instdto.setMaterial(taskDto.getMaterial()); - instdto.setTask_id(task_id); - instdto.setTask_code(task_code); - instdto.setVehicle_code(taskDto.getVehicle_code()); - String now = DateUtil.now(); - instdto.setCreate_time(now); - instdto.setCreate_by("auto"); - instdto.setStart_point_code(taskDto.getStart_point_code()); - instdto.setNext_point_code(taskDto.getNext_point_code()); - instdto.setStart_device_code(start_device_code); - instdto.setNext_device_code(next_device_code); - instdto.setInstruction_status("0"); - InstructionMybatis instructionMybatis = instructionService.lambdaQuery() - .eq(InstructionMybatis::getStart_device_code, start_device_code) - .eq(InstructionMybatis::getNext_device_code, next_device_code) - .lt(InstructionMybatis::getInstruction_status, "2") - .eq(InstructionMybatis::getTask_id,task_uuid) - .one(); - if (BeanUtil.isNotEmpty(instructionMybatis)){ - resultJson.put("message", task_code + ":该任务已存在待完成指令!"); - resultJson.put("data", data); - return resultJson; - } - try{ - instructionService.create(instdto); - } catch (Exception e){ - resultJson.put("message", e.getMessage()); - resultJson.put("data", data); - return resultJson; - } - instdto.setExecute_code(start_device_code); - }else if ("2".equals(type)){ - //强制完成 - Instruction instruction = instructionService.findByTaskid(task_uuid, "instruction_status <2 "); - if (instruction!=null){ - resultJson.put("message", "有指令未完成!"); - resultJson.put("data", data); - return resultJson; - } - TaskIdAndStatusDTO taskIdAndStatusDTO = new TaskIdAndStatusDTO(); - taskIdAndStatusDTO.setTask_id(task_uuid); - taskIdAndStatusDTO.setTask_status(TaskStatusEnum.FINISHED.getIndex()); - taskserver.finish(taskIdAndStatusDTO); + public PdaResponseVo confirm(JSONObject whereJson) { + Work work = workService.findByCode(whereJson.getString("work_code")); + if (work != null){ + return PdaResponseVo.pdaResultOk("配料作业不存在"); } - resultJson.put("message", "操作成功"); - resultJson.put("data", data); - return resultJson; + workService.confirm(work.getWork_id()); + return PdaResponseVo.pdaResultOk("配料作业确认成功"); } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/PdaServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/PdaServiceImpl.java new file mode 100644 index 0000000..95d5af6 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/PdaServiceImpl.java @@ -0,0 +1,190 @@ +package org.nl.hand.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.order.service.OrderService; +import org.nl.acs.order.service.dto.OrderDto; +import org.nl.acs.sch.task.service.WorkService; +import org.nl.acs.sch.task.service.dao.Work; +import org.nl.acs.sch.task_manage.task.core.TaskStatus; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.language.LangProcess; +import org.nl.hand.service.PdaService; +import org.nl.hand.service.dao.dto.PdaDto; +import org.nl.hand.service.dao.mapper.PdaMapper; +import org.nl.hand.service.dao.vo.PdaResponseVo; +import org.nl.hand.service.vo.OrderVo; +import org.nl.hand.service.vo.WorkVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Slf4j +@Service +public class PdaServiceImpl implements PdaService { + @Autowired + private PdaMapper pdaMapper; + @Autowired + private OrderService orderService; + @Autowired + private WorkService workService; + @Autowired + private DeviceService deviceService; + @Autowired + private TaskService taskserver; + + @Override + public List queryOrders() { + return pdaMapper.getOrders(); + } + + @Override + public PdaResponseVo startOrder(JSONObject whereJson) { + String mfg_order_name = whereJson.getString("mfg_order_name"); + OrderDto dto = orderService.findByCode(mfg_order_name); + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + dto.setStatus("1"); + dto.setRealstart_time(DateUtil.now()); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(currentUsername); + dto.setUpdate_time(DateUtil.now()); + orderService.updateById(dto); + return PdaResponseVo.pdaResultOk("工单:[" + dto.getMfg_order_name() + "]已开始"); + } + + @Override + public PdaResponseVo forceFinish(JSONObject whereJson) { + String mfg_order_name = whereJson.getString("mfg_order_name"); + OrderDto dto = orderService.findByCode(mfg_order_name); + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + dto.setStatus("2"); + dto.setRealstart_time(DateUtil.now()); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(currentUsername); + dto.setUpdate_time(DateUtil.now()); + orderService.updateById(dto); + return PdaResponseVo.pdaResultOk("工单:[" + dto.getMfg_order_name() + "]已强制完成"); + } + + @Override + public List queryWorks() { + return pdaMapper.getWorks(); + } + + @Override + public PdaResponseVo sendWork(JSONObject whereJson) { + String work_code = whereJson.getString("work_code"); + Work work = workService.findByCode(work_code); + if (work == null) { + return PdaResponseVo.pdaResultOk("配料作业不存在"); + } + workService.send(work.getWork_id()); + return PdaResponseVo.pdaResultOk("下发成功"); + } + + @Override + public PdaResponseVo reSendWork(JSONObject whereJson) { + String work_code = whereJson.getString("work_code"); + Work work = workService.findByCode(work_code); + if (work == null) { + return PdaResponseVo.pdaResultOk("配料作业不存在"); + } + work.setRemain_num(work.getRemain_num() + whereJson.getIntValue("count")); + work.setRequire_num(work.getRequire_num() + whereJson.getIntValue("count")); + workService.updateById(work); + return PdaResponseVo.pdaResultOk("补发成功"); + } + + @Override + public PdaResponseVo finishWork(JSONObject whereJson) { + String work_code = whereJson.getString("work_code"); + Work work = workService.findByCode(work_code); + if (work == null) { + return PdaResponseVo.pdaResultOk("配料作业不存在"); + } + work.setStatus(TaskStatus.FINISHED.getCode()); + workService.updateById(work); + return PdaResponseVo.pdaResultOk("完成配料作业成功"); + } + + @Override + public JSONArray queryAllPoints() { + //查询所有设备 + List list = deviceService.lambdaQuery() + .list(); + if (CollectionUtil.isEmpty(list)) { + throw new BadRequestException(LangProcess.msg("error_no_regional")); + } + JSONArray arr = JSONArray.parseArray(JSON.toJSONString(list)); + JSONArray result = new JSONArray(); + for (int i = 0; i < arr.size(); i++) { + JSONObject obj = arr.getJSONObject(i); + JSONObject json = new JSONObject(); + json.put("device_code", obj.getString("device_code")); + json.put("device_name", obj.getString("device_name")); + result.add(json); + } + return result; + } + + @Override + public Map callTask(PdaDto dto) { + JSONArray errArr = new JSONArray(); + String start_device_code = dto.getStart_device_code(); + String next_device_code = dto.getNext_device_code(); + String task_type = dto.getTask_type(); + + if (StrUtil.isEmpty(start_device_code)) { + throw new BadRequestException("起点不能为空"); + } + if (StrUtil.isEmpty(next_device_code)) { + throw new BadRequestException("终点不能为空"); + } + if (StrUtil.isEmpty(task_type)) { + throw new BadRequestException("任务类型不能为空"); + } + JSONObject jo = new JSONObject(); + jo.put("start_device_code", start_device_code); + jo.put("next_device_code", next_device_code); + jo.put("start_point_code", start_device_code); + jo.put("next_point_code", next_device_code); + jo.put("task_type", task_type); + jo.put("priority", "1"); + + TaskDto task_dto = jo.toJavaObject(TaskDto.class); + try { + taskserver.create(task_dto); + } catch (Exception e) { +// e.printStackTrace(); + JSONObject json = new JSONObject(); + json.put("message", e.getMessage()); + errArr.add(json); + throw new RuntimeException(e.getMessage()); + } + JSONArray data = new JSONArray(); + JSONObject resultJson = new JSONObject(); + if (ObjectUtil.isEmpty(errArr)) { + resultJson.put("message", "操作成功"); + resultJson.put("data", data); + } else { + resultJson.put("message", "操作失败"); + resultJson.put("data", data); + } + return resultJson; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/vo/OrderVo.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/vo/OrderVo.java new file mode 100644 index 0000000..3034ff1 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/vo/OrderVo.java @@ -0,0 +1,20 @@ +package org.nl.hand.service.vo; + +import lombok.Data; + +/** + * @Author: tq + * @Description: 工单查询 + * @Date: 2024/10/15 + */ +@Data +public class OrderVo { + //工单号 + private String mfg_order_name; + private String product_name; + private String description; + private String resource_name; + private float total_qty; + private String status; + private String create_name; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/vo/WorkVo.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/vo/WorkVo.java new file mode 100644 index 0000000..d522450 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/vo/WorkVo.java @@ -0,0 +1,21 @@ +package org.nl.hand.service.vo; + +import lombok.Data; + +/** + * @Author: tq + * @Description: 配料作业查询 + * @Date: 2024/10/15 + */ +@Data +public class WorkVo { + private int seq_no; + private String work_code; + private String mfg_order_name; + private String material_name; + private float qty; + private String resource_name; + private int require_num; + private int remain_num; + private String status; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/monitor/MonitorController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/monitor/MonitorController.java index f5d73e8..e5ed7de 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/monitor/MonitorController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/monitor/MonitorController.java @@ -39,7 +39,6 @@ public class MonitorController { private final MonitorService serverService; @GetMapping - @SaCheckPermission("monitor:list") public ResponseEntity query() { return new ResponseEntity<>(serverService.getServers(),HttpStatus.OK); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java index 7ad71a8..1c62bd5 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java @@ -46,7 +46,7 @@ public class AutoCreateInst { * 创建指令前需要判断是否条件具备:起始位置是否有货、目标位置是否有货 */ public void run() throws Exception { - log.info("自动生成指令"+DateUtil.now()); + log.info("自动生成指令" + DateUtil.now()); TaskService taskserver = SpringContextHolder.getBean(TaskService.class); InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); @@ -66,7 +66,6 @@ public class AutoCreateInst { String task_type = acsTask.getTask_type(); String vehiclecode = acsTask.getVehicle_code(); String vehiclecode2 = acsTask.getVehicle_code2(); - String storage_task_type = acsTask.getStorage_task_type(); String priority = acsTask.getPriority(); String is_send = acsTask.getIs_send(); @@ -153,10 +152,6 @@ public class AutoCreateInst { instdto.setNext_device_code(next_device_code); instdto.setNext_point_code(next_point_code); - instdto.setStart_point_code2(start_point_code2); - instdto.setStart_device_code2(start_device_code2); - instdto.setNext_point_code2(next_point_code2); - instdto.setNext_device_code2(next_device_code2); instdto.setPriority(priority); instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); @@ -170,32 +165,28 @@ public class AutoCreateInst { //1、1楼叉车系统 //2、2楼1区域AGV系统 //3、2楼2区域AGV系统 -已废弃 - if (StrUtil.equals(agv_system_type, CommonFinalParam.TWO)) { - // task_type - //1、生箔; Itype=1:取空,取满,放空,放满; - //2、分切 Itype=3取满、取空、放满、放空; - //3、普通任务 Itype=2:取货、放货; - //4、叉车任务 - //5、输送任务 - //6、行架 - //7、立库 - if (StrUtil.equals(task_type, CommonFinalParam.ONE)) { - instdto.setAgv_inst_type(CommonFinalParam.ONE); - } else if (StrUtil.equals(task_type, "3")) { - instdto.setAgv_inst_type("2"); - } else if (StrUtil.equals(task_type, "2")) { - instdto.setAgv_inst_type("3"); - } else if (StrUtil.equals(task_type, "8")) { - instdto.setAgv_inst_type("2"); - } else { - log.info("未找到对应的AGV指令类型,任务号:" + acsTask.getTask_code() + ",task_type:" + acsTask.getTask_type()); - continue; - } + // task_type + //1、生箔; Itype=1:取空,取满,放空,放满; + //2、分切 Itype=3取满、取空、放满、放空; + //3、普通任务 Itype=2:取货、放货; + //4、叉车任务 + //5、输送任务 + //6、行架 + //7、立库 + if (StrUtil.equals(task_type, CommonFinalParam.ONE)) { + instdto.setAgv_inst_type(CommonFinalParam.ONE); + } else if (StrUtil.equals(task_type, "3")) { + instdto.setAgv_inst_type("2"); + } else if (StrUtil.equals(task_type, "2")) { + instdto.setAgv_inst_type("3"); + } else if (StrUtil.equals(task_type, "8")) { + instdto.setAgv_inst_type("2"); } else { - instdto.setAgv_inst_type("4"); + log.info("未找到对应的AGV指令类型,任务号:" + acsTask.getTask_code() + ",task_type:" + acsTask.getTask_type()); + continue; } try { - instructionService.create(instdto); + instructionService.create(instdto); } catch (Exception e) { acsTask.setRemark(e.getMessage()); taskserver.updateByCodeFromCache(acsTask); @@ -208,9 +199,9 @@ public class AutoCreateInst { continue; } //创建指令后修改任务状态 - acsTask.setTask_status(TaskStatusEnum.BUSY.getIndex()); - acsTask.setUpdate_time(DateUtil.now()); - taskserver.update(acsTask); + acsTask.setTask_status(TaskStatusEnum.BUSY.getIndex()); + acsTask.setUpdate_time(DateUtil.now()); + taskserver.update(acsTask); } } diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/acs/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 1f62735..3bd0328 100644 --- a/acs/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/acs/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -10,7 +10,7 @@ spring: driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true + url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:niudixiya_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:root} # password: ${DB_PWD:Root.123456} diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/acs/nladmin-system/nlsso-server/src/main/resources/config/application.yml index 2b5b26b..c01f42d 100644 --- a/acs/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/acs/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -154,6 +154,9 @@ mybatis-plus: db-config: id-type: INPUT banner: false +mybatis: + configuration: + map-underscore-to-camel-case: true lucene: index: diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/mapper/MaterialbaseMapper.xml b/acs/nladmin-system/nlsso-server/src/main/resources/mapper/MaterialbaseMapper.xml new file mode 100644 index 0000000..615bb94 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/resources/mapper/MaterialbaseMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/mapper/ProductdtlMapper.xml b/acs/nladmin-system/nlsso-server/src/main/resources/mapper/ProductdtlMapper.xml new file mode 100644 index 0000000..19e744b --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/resources/mapper/ProductdtlMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/acs/nladmin-ui/src/assets/images/1.png b/acs/nladmin-ui/src/assets/images/1.png new file mode 100644 index 0000000..65d4408 Binary files /dev/null and b/acs/nladmin-ui/src/assets/images/1.png differ diff --git a/acs/nladmin-ui/src/assets/images/2.jpeg b/acs/nladmin-ui/src/assets/images/2.jpeg new file mode 100644 index 0000000..6a6fb3e Binary files /dev/null and b/acs/nladmin-ui/src/assets/images/2.jpeg differ diff --git a/acs/nladmin-ui/src/assets/images/picture.png b/acs/nladmin-ui/src/assets/images/picture.png new file mode 100644 index 0000000..4cf379e Binary files /dev/null and b/acs/nladmin-ui/src/assets/images/picture.png differ diff --git a/acs/nladmin-ui/src/components/Crud/crud.js b/acs/nladmin-ui/src/components/Crud/crud.js index 5c36475..4ae96be 100644 --- a/acs/nladmin-ui/src/components/Crud/crud.js +++ b/acs/nladmin-ui/src/components/Crud/crud.js @@ -1,7 +1,6 @@ import { download, initData } from '@/api/data' import { downloadFile, parseTime } from '@/utils/index' import Vue from 'vue' -import i18n from '@/i18n' /** * CRUD配置 @@ -51,13 +50,13 @@ function CRUD(options) { // 主页操作栏显示哪些按钮 optShow: { add: true, - edit: false, + edit: true, del: true, download: false, reset: true }, // 自定义一些扩展属性 - props: {}, + props: { size: 10 }, // 在主页准备 queryOnPresenterCreated: true, // 调试开关 @@ -85,7 +84,7 @@ function CRUD(options) { }, // 标题 get title() { - return this.add > CRUD.STATUS.NORMAL ? i18n.t('auto.common.Create') + ' ' + i18n.t(`${crud.title}`) : this.edit > CRUD.STATUS.NORMAL ? i18n.t('auto.common.Editors') + ' ' + i18n.t(`${crud.title}`) : crud.title + return this.add > CRUD.STATUS.NORMAL ? `新增${crud.title}` : this.edit > CRUD.STATUS.NORMAL ? `编辑${crud.title}` : this.view > CRUD.STATUS.NORMAL ? `${crud.title}详情` : crud.title } }, msg: { @@ -98,7 +97,7 @@ function CRUD(options) { // 页码 page: 0, // 每页数据条数 - size: 10, + size: options.props.size, // 总数据条数 total: 0 }, @@ -161,16 +160,6 @@ function CRUD(options) { }) }) }, - /** - * 格式化是否1-是,0-否 - */ - formatIsOrNot(row, column) { - if (!row[column.property]) { - return '否' - } - return row[column.property] === '1' ? '是' : '否' - }, - /** * 格式化数据,保留0位小数 */ diff --git a/acs/nladmin-ui/src/components/Crud/crud1.js b/acs/nladmin-ui/src/components/Crud/crud1.js new file mode 100644 index 0000000..07672a5 --- /dev/null +++ b/acs/nladmin-ui/src/components/Crud/crud1.js @@ -0,0 +1,974 @@ +import { download, initData } from '@/api/data' +import { downloadFile, parseTime } from '@/utils/index' +import Vue from 'vue' +import i18n from '@/i18n' + +/** + * CRUD配置 + * @author moxun + * @param {*} options
+ * @return crud instance. + * @example + * 要使用多crud时,请在关联crud的组件处使用crud-tag进行标记,如: + */ +function Crud(options) { + const defaultOptions = { + tag: 'default', + // id字段名 + idField: 'id', + // 标题 + title: '', + // 请求数据的url + url: '', + // 表格数据 + data: [], + // 选择项 + selections: [], + // 待查询的对象 + query: {}, + // 查询数据的参数 + params: {}, + // Form 表单 + form: {}, + // 重置表单 + defaultForm: () => { + }, + // 排序规则,默认 id 降序, 支持多字段排序 ['id,desc', 'createTime,asc'] + sort: ['id,desc'], + // 等待时间 + time: 50, + // Crud Method + crudMethod: { + add: (form) => { + }, + del: (id) => { + }, + edit: (form) => { + }, + get: (id) => { + } + }, + // 主页操作栏显示哪些按钮 + optShow: { + add: true, + edit: false, + del: true, + download: false, + reset: true + }, + // 自定义一些扩展属性 + props: {}, + // 在主页准备 + queryOnPresenterCreated: true, + // 调试开关 + debug: false + } + options = mergeOptions(defaultOptions, options) + const data = { + ...options, + // 记录数据状态 + dataStatus: {}, + status: { + add: Crud.STATUS.NORMAL, + edit: Crud.STATUS.NORMAL, + view: Crud.STATUS.NORMAL, + // 添加或编辑状态 + get cu() { + if (this.add === Crud.STATUS.NORMAL && this.edit === Crud.STATUS.NORMAL) { + return Crud.STATUS.NORMAL + } else if (this.add === Crud.STATUS.PREPARED || this.edit === Crud.STATUS.PREPARED) { + return Crud.STATUS.PREPARED + } else if (this.add === Crud.STATUS.PROCESSING || this.edit === Crud.STATUS.PROCESSING) { + return Crud.STATUS.PROCESSING + } + throw new Error('wrong crud\'s cu status') + }, + // 标题 + get title() { + return this.add > Crud.STATUS.NORMAL ? i18n.t('auto.common.Create') + ' ' + i18n.t(`${crud.title}`) : this.edit > Crud.STATUS.NORMAL ? i18n.t('auto.common.Editors') + ' ' + i18n.t(`${crud.title}`) : crud.title + } + }, + msg: { + submit: '提交成功', + add: '新增成功', + edit: '编辑成功', + del: '删除成功' + }, + page: { + // 页码 + page: 0, + // 每页数据条数 + size: 10, + // 总数据条数 + total: 0 + }, + // 整体loading + loading: false, + // 导出的 Loading + downloadLoading: false, + // 导出csv的 Loading + downloadcsvLoading: false, + // 删除的 Loading + delAllLoading: false + } + const methods = { + /** + * 通用的提示 + */ + submitSuccessNotify() { + crud.notify(crud.msg.submit, Crud.NOTIFICATION_TYPE.SUCCESS) + }, + addSuccessNotify() { + crud.notify(crud.msg.add, Crud.NOTIFICATION_TYPE.SUCCESS) + }, + editSuccessNotify() { + crud.notify(crud.msg.edit, Crud.NOTIFICATION_TYPE.SUCCESS) + }, + delSuccessNotify() { + crud.notify(crud.msg.del, Crud.NOTIFICATION_TYPE.SUCCESS) + }, + // 搜索 + toQuery() { + crud.page.page = 1 + crud.refresh() + }, + // 刷新 + refresh() { + if (!callVmHook(crud, Crud.HOOK.beforeRefresh)) { + return + } + return new Promise((resolve, reject) => { + crud.loading = true + // 请求数据 + initData(crud.url, crud.getQueryParams()).then(data => { + const table = crud.getTable() + if (table && table.lazy) { // 懒加载子节点数据,清掉已加载的数据 + table.store.states.treeData = {} + table.store.states.lazyTreeNodeMap = {} + } + crud.page.total = data.totalElements + crud.data = data.content + crud.resetDataStatus() + // time 毫秒后显示表格 + setTimeout(() => { + crud.loading = false + callVmHook(crud, Crud.HOOK.afterRefresh) + }, crud.time) + resolve(data) + }).catch(err => { + crud.loading = false + reject(err) + }) + }) + }, + /** + * 格式化是否1-是,0-否 + */ + formatIsOrNot(row, column) { + if (!row[column.property]) { + return '否' + } + return row[column.property] === '1' ? '是' : '否' + }, + + /** + * 格式化数据,保留0位小数 + */ + formatNum0(row, column) { + if (!row[column.property]) { + return 0 + } + return parseFloat(row[column.property]).toFixed(0) + }, + /** + * 格式化数据,保留2位小数 + */ + formatNum2(row, column) { + if (!row[column.property]) { + return 0 + } + return parseFloat(row[column.property]).toFixed(2) + }, + + /** + * 格式化数据,保留3位小数 + */ + formatNum3(row, column) { + if (!row[column.property]) { + return 0 + } + return parseFloat(row[column.property]).toFixed(3) + }, + + /** + * 质检格式化数据,保留4位小数 + */ + formatQlNum4(row, column) { + if (!row[column.property]) { + return '' + } + return parseFloat(row[column.property]).toFixed(4) + }, + /** + * 启动添加 + */ + toAdd() { + crud.resetForm() + if (!(callVmHook(crud, Crud.HOOK.beforeToAdd, crud.form) && callVmHook(crud, Crud.HOOK.beforeToCU, crud.form))) { + return + } + crud.status.add = Crud.STATUS.PREPARED + callVmHook(crud, Crud.HOOK.afterToAdd, crud.form) + callVmHook(crud, Crud.HOOK.afterToCU, crud.form) + }, + /** + * 启动添加 可携带参数 + */ + toAddAndData(data) { + crud.resetForm(JSON.parse(JSON.stringify(data))) + if (!(callVmHook(crud, Crud.HOOK.beforeToAdd, crud.form) && callVmHook(crud, Crud.HOOK.beforeToCU, crud.form))) { + return + } + crud.status.add = Crud.STATUS.PREPARED + callVmHook(crud, Crud.HOOK.afterToAdd, crud.form) + callVmHook(crud, Crud.HOOK.afterToCU, crud.form) + }, + /** + * 启动编辑 + * @param {*} data 数据项 + */ + toEdit(data) { + crud.resetForm(JSON.parse(JSON.stringify(data))) + if (!(callVmHook(crud, Crud.HOOK.beforeToEdit, crud.form) && callVmHook(crud, Crud.HOOK.beforeToCU, crud.form))) { + return + } + crud.status.edit = Crud.STATUS.PREPARED + crud.getDataStatus(crud.getDataId(data)).edit = Crud.STATUS.PREPARED + callVmHook(crud, Crud.HOOK.afterToEdit, crud.form) + callVmHook(crud, Crud.HOOK.afterToCU, crud.form) + }, + /** + * 查询详情 + * @param {*} data 数据项 + */ + toView(data) { + crud.params.optRow = data + crud.resetForm(JSON.parse(JSON.stringify(data))) + crud.status.view = Crud.STATUS.PREPARED + crud.getDataStatus(crud.getDataId(data)).view = Crud.STATUS.PREPARED + callVmHook(crud, Crud.HOOK.afterToView, crud.form) + }, + /** + * 启动删除 + * @param {*} data 数据项 + */ + toDelete(data) { + crud.getDataStatus(crud.getDataId(data)).delete = Crud.STATUS.PREPARED + }, + /** + * 取消删除 + * @param {*} data 数据项 + */ + cancelDelete(data) { + if (!callVmHook(crud, Crud.HOOK.beforeDeleteCancel, data)) { + return + } + crud.getDataStatus(crud.getDataId(data)).delete = Crud.STATUS.NORMAL + callVmHook(crud, Crud.HOOK.afterDeleteCancel, data) + }, + /** + * 取消新增/编辑 + */ + cancelCU(formName) { + if (formName instanceof PointerEvent) { + formName = 'form' + } + + const addStatus = crud.status.add + const editStatus = crud.status.edit + const viewStatus = crud.status.view + if (addStatus === Crud.STATUS.PREPARED) { + if (!callVmHook(crud, Crud.HOOK.beforeAddCancel, crud.form)) { + return + } + crud.status.add = Crud.STATUS.NORMAL + } + if (viewStatus === Crud.STATUS.PREPARED) { + crud.status.view = Crud.STATUS.NORMAL + } + if (editStatus === Crud.STATUS.PREPARED) { + if (!callVmHook(crud, Crud.HOOK.beforeEditCancel, crud.form)) { + return + } + crud.status.edit = Crud.STATUS.NORMAL + crud.getDataStatus(crud.getDataId(crud.form)).edit = Crud.STATUS.NORMAL + } + crud.resetForm() + if (addStatus === Crud.STATUS.PREPARED) { + callVmHook(crud, Crud.HOOK.afterAddCancel, crud.form) + } + if (editStatus === Crud.STATUS.PREPARED) { + callVmHook(crud, Crud.HOOK.afterEditCancel, crud.form) + } + // 清除表单验证 + if (crud.findVM('form').$refs[formName]) { + crud.findVM('form').$refs[formName].clearValidate() + } + }, + /** + * 提交新增/编辑 + */ + submitCU(formName) { + if (formName instanceof PointerEvent) { + formName = 'form' + } + if (!callVmHook(crud, Crud.HOOK.beforeValidateCU)) { + return + } + crud.findVM('form').$refs[formName].validate(valid => { + if (!valid) { + return + } + if (!callVmHook(crud, Crud.HOOK.afterValidateCU)) { + return + } + if (crud.status.add === Crud.STATUS.PREPARED) { + crud.doAdd() + } else if (crud.status.edit === Crud.STATUS.PREPARED) { + crud.doEdit() + } + }) + }, + /** + * 执行添加 + */ + doAdd() { + if (!callVmHook(crud, Crud.HOOK.beforeSubmit)) { + return + } + crud.status.add = Crud.STATUS.PROCESSING + crud.crudMethod.add(crud.form).then(() => { + crud.status.add = Crud.STATUS.NORMAL + crud.resetForm() + crud.addSuccessNotify() + callVmHook(crud, Crud.HOOK.afterSubmit) + crud.toQuery() + }).catch(() => { + crud.status.add = Crud.STATUS.PREPARED + callVmHook(crud, Crud.HOOK.afterAddError) + }) + }, + /** + * 执行编辑 + */ + doEdit() { + if (!callVmHook(crud, Crud.HOOK.beforeSubmit)) { + return + } + crud.status.edit = Crud.STATUS.PROCESSING + crud.crudMethod.edit(crud.form).then(() => { + crud.status.edit = Crud.STATUS.NORMAL + crud.getDataStatus(crud.getDataId(crud.form)).edit = Crud.STATUS.NORMAL + crud.editSuccessNotify() + crud.resetForm() + callVmHook(crud, Crud.HOOK.afterSubmit) + crud.refresh() + }).catch(() => { + crud.status.edit = Crud.STATUS.PREPARED + callVmHook(crud, Crud.HOOK.afterEditError) + }) + }, + /** + * 执行删除 + * @param {*} data 数据项 + */ + doDelete(data) { + let delAll = false + let dataStatus + const ids = [] + if (data instanceof Array) { + delAll = true + data.forEach(val => { + ids.push(this.getDataId(val)) + }) + } else { + ids.push(this.getDataId(data)) + dataStatus = crud.getDataStatus(this.getDataId(data)) + } + if (!callVmHook(crud, Crud.HOOK.beforeDelete, data)) { + return + } + if (!delAll) { + dataStatus.delete = Crud.STATUS.PROCESSING + } + return crud.crudMethod.del(ids).then(() => { + if (delAll) { + crud.delAllLoading = false + } else { + dataStatus.delete = Crud.STATUS.PREPARED + } + crud.dleChangePage(1) + crud.delSuccessNotify() + callVmHook(crud, Crud.HOOK.afterDelete, data) + crud.refresh() + }).catch(() => { + if (delAll) { + crud.delAllLoading = false + } else { + dataStatus.delete = Crud.STATUS.PREPARED + } + }) + }, + /** + * 通用导出 + */ + doExport() { + crud.downloadLoading = true + download(crud.url + '/download', crud.getQueryParams()).then(result => { + downloadFile(result, crud.title + '数据', 'xlsx') + crud.downloadLoading = false + }).catch(() => { + crud.downloadLoading = false + }) + }, + doExportCSV() { + crud.downloadcsvLoading = true + download(crud.url + '/downloadCSV', crud.getQueryParams()).then(result => { + downloadFile(result, crud.title + '数据', 'csv') + crud.downloadcsvLoading = false + }).catch(() => { + crud.downloadcsvLoading = false + }) + }, + /** + * 获取查询参数 + */ + getQueryParams: function() { + // 清除参数无值的情况 + Object.keys(crud.query).length !== 0 && Object.keys(crud.query).forEach(item => { + if (crud.query[item] === null || crud.query[item] === '') crud.query[item] = undefined + }) + Object.keys(crud.params).length !== 0 && Object.keys(crud.params).forEach(item => { + if (crud.params[item] === null || crud.params[item] === '') crud.params[item] = undefined + }) + return { + page: crud.page.page - 1, + size: crud.page.size, + sort: crud.sort, + ...crud.query, + ...crud.params + } + }, + // 当前页改变 + pageChangeHandler(e) { + crud.page.page = e + crud.refresh() + }, + // 每页条数改变 + sizeChangeHandler(e) { + crud.page.size = e + crud.page.page = 1 + crud.refresh() + }, + // 预防删除第二页最后一条数据时,或者多选删除第二页的数据时,页码错误导致请求无数据 + dleChangePage(size) { + if (crud.data.length === size && crud.page.page !== 1) { + crud.page.page -= 1 + } + }, + // 选择改变 + selectionChangeHandler(val) { + crud.selections = val + }, + /** + * 重置查询参数 + * @param {Boolean} toQuery 重置后进行查询操作 + */ + resetQuery(toQuery = true) { + const defaultQuery = JSON.parse(JSON.stringify(crud.defaultQuery)) + const query = crud.query + Object.keys(query).forEach(key => { + query[key] = defaultQuery[key] + }) + // 重置参数 + this.params = {} + if (toQuery) { + crud.toQuery() + } + }, + /** + * 重置表单 + * @param {Array} data 数据 + */ + resetForm(data) { + const form = data || (typeof crud.defaultForm === 'object' ? JSON.parse(JSON.stringify(crud.defaultForm)) : crud.defaultForm.apply(crud.findVM('form'))) + const crudFrom = crud.form + for (const key in form) { + if (crudFrom.hasOwnProperty(key)) { + crudFrom[key] = form[key] + } else { + Vue.set(crudFrom, key, form[key]) + } + } + // add by ghl 2020-10-04 页面重复添加信息时,下拉框的校验会存在,需要找工取消 + let form_ref = 'form' + if (crudFrom.form_ref) form_ref = crudFrom.form_ref + if (crud.findVM('form').$refs[form_ref]) { + crud.findVM('form').$refs[form_ref].clearValidate() + } + }, + /** + * 重置数据状态 + */ + resetDataStatus() { + const dataStatus = {} + + function resetStatus(datas) { + datas.forEach(e => { + dataStatus[crud.getDataId(e)] = { + delete: 0, + edit: 0 + } + if (e.children) { + resetStatus(e.children) + } + }) + } + + resetStatus(crud.data) + crud.dataStatus = dataStatus + }, + /** + * 获取数据状态 + * @param {Number | String} id 数据项id + */ + getDataStatus(id) { + return crud.dataStatus[id] + }, + /** + * 用于树形表格多选, 选中所有 + * @param selection + */ + selectAllChange(selection) { + // 如果选中的数目与请求到的数目相同就选中子节点,否则就清空选中 + if (selection && selection.length === crud.data.length) { + selection.forEach(val => { + crud.selectChange(selection, val) + }) + } else { + crud.getTable().clearSelection() + } + }, + /** + * 用于树形表格多选,单选的封装 + * @param selection + * @param row + */ + selectChange(selection, row) { + // 如果selection中存在row代表是选中,否则是取消选中 + if (selection.find(val => { + return crud.getDataId(val) === crud.getDataId(row) + })) { + if (row.children) { + row.children.forEach(val => { + crud.getTable().toggleRowSelection(val, true) + selection.push(val) + if (val.children) { + crud.selectChange(selection, val) + } + }) + } + } else { + crud.toggleRowSelection(selection, row) + } + }, + /** + * 切换选中状态 + * @param selection + * @param data + */ + toggleRowSelection(selection, data) { + if (data.children) { + data.children.forEach(val => { + crud.getTable().toggleRowSelection(val, false) + if (val.children) { + crud.toggleRowSelection(selection, val) + } + }) + } + }, + findVM(type) { + return crud.vms.find(vm => vm && vm.type === type).vm + }, + notify(title, type = Crud.NOTIFICATION_TYPE.INFO) { + crud.vms[0].vm.$notify({ + title, + type, + duration: 2500 + }) + }, + updateProp(name, value) { + Vue.set(crud.props, name, value) + }, + getDataId(data) { + return data[this.idField] + }, + getTable() { + return this.findVM('presenter').$refs.table + }, + attchTable() { + const table = this.getTable() + this.updateProp('table', table) + const that = this + table.$on('expand-change', (row, expanded) => { + if (!expanded) { + return + } + const lazyTreeNodeMap = table.store.states.lazyTreeNodeMap + row.children = lazyTreeNodeMap[crud.getDataId(row)] + if (row.children) { + row.children.forEach(ele => { + const id = crud.getDataId(ele) + if (that.dataStatus[id] === undefined) { + that.dataStatus[id] = { + delete: 0, + edit: 0 + } + } + }) + } + }) + } + } + const crud = Object.assign({}, data) + // 可观测化 + Vue.observable(crud) + // 附加方法 + Object.assign(crud, methods) + // 记录初始默认的查询参数,后续重置查询时使用 + Object.assign(crud, { + defaultQuery: JSON.parse(JSON.stringify(data.query)), + // 预留4位存储:组件 主页、头部、分页、表单,调试查看也方便找 + vms: Array(4), + /** + * 注册组件实例 + * @param {String} type 类型 + * @param {*} vm 组件实例 + * @param {Number} index 该参数内部使用 + */ + registerVM(type, vm, index = -1) { + const vmObj = { + type, + vm: vm + } + if (index < 0) { + this.vms.push(vmObj) + return + } + if (index < 4) { // 内置预留vm数 + this.vms[index] = vmObj + return + } + this.vms.length = Math.max(this.vms.length, index) + this.vms.splice(index, 1, vmObj) + }, + /** + * 取消注册组件实例 + * @param {*} vm 组件实例 + */ + unregisterVM(type, vm) { + for (let i = this.vms.length - 1; i >= 0; i--) { + if (this.vms[i] === undefined) { + continue + } + if (this.vms[i].type === type && this.vms[i].vm === vm) { + if (i < 4) { // 内置预留vm数 + this.vms[i] = undefined + } else { + this.vms.splice(i, 1) + } + break + } + } + } + }) + // 冻结处理,需要扩展数据的话,使用crud.updateProp(name, value),以crud.props.name形式访问,这个是响应式的,可以做数据绑定 + Object.freeze(crud) + return crud +} + +// hook VM +function callVmHook(crud, hook) { + if (crud.debug) { + console.log('callVmHook: ' + hook) + } + const tagHook = crud.tag ? hook + '$' + crud.tag : null + let ret = true + const nargs = [crud] + for (let i = 2; i < arguments.length; ++i) { + nargs.push(arguments[i]) + } + // 有些组件扮演了多个角色,调用钩子时,需要去重 + const vmSet = new Set() + crud.vms.forEach(vm => vm && vmSet.add(vm.vm)) + vmSet.forEach(vm => { + if (vm[hook]) { + ret = vm[hook].apply(vm, nargs) !== false && ret + } + if (tagHook && vm[tagHook]) { + ret = vm[tagHook].apply(vm, nargs) !== false && ret + } + }) + return ret +} + +function mergeOptions(src, opts) { + const optsRet = { + ...src + } + for (const key in src) { + if (opts.hasOwnProperty(key)) { + optsRet[key] = opts[key] + } + } + return optsRet +} + +/** + * 查找crud + * @param {*} vm + * @param {string} tag + */ +function lookupCrud(vm, tag) { + tag = tag || vm.$attrs['crud-tag'] || 'default' + // function lookupCrud(vm, tag) { + if (vm.$crud) { + const ret = vm.$crud[tag] + if (ret) { + return ret + } + } + return vm.$parent ? lookupCrud(vm.$parent, tag) : undefined +} + +/** + * crud主页 + */ +function presenter(crud) { + if (crud) { + console.warn('[Crud warn]: ' + 'please use $options.cruds() { return Crud(...) or [Crud(...), ...] }') + } + return { + data() { + // 在data中返回crud,是为了将crud与当前实例关联,组件观测crud相关属性变化 + return { + crud: this.crud + } + }, + beforeCreate() { + this.$crud = this.$crud || {} + let cruds = this.$options.cruds instanceof Function ? this.$options.cruds() : crud + if (!(cruds instanceof Array)) { + cruds = [cruds] + } + cruds.forEach(ele => { + if (this.$crud[ele.tag]) { + console.error('[Crud error]: ' + 'crud with tag [' + ele.tag + ' is already exist') + } + this.$crud[ele.tag] = ele + ele.registerVM('presenter', this, 0) + }) + this.crud = this.$crud['defalut'] || cruds[0] + }, + methods: { + parseTime + }, + created() { + for (const k in this.$crud) { + if (this.$crud[k].queryOnPresenterCreated) { + this.$crud[k].toQuery() + } + } + }, + destroyed() { + for (const k in this.$crud) { + this.$crud[k].unregisterVM('presenter', this) + } + }, + mounted() { + // 如果table未实例化(例如使用了v-if),请稍后在适当时机crud.attchTable刷新table信息 + if (this.$refs.table !== undefined) { + this.crud.attchTable() + } + } + } +} + +/** + * 头部 + */ +function header() { + return { + data() { + return { + crud: this.crud, + query: this.crud.query + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('header', this, 1) + }, + destroyed() { + this.crud.unregisterVM('header', this) + } + } +} + +/** + * 分页 + */ +function pagination() { + return { + data() { + return { + crud: this.crud, + page: this.crud.page + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('pagination', this, 2) + }, + destroyed() { + this.crud.unregisterVM('pagination', this) + } + } +} + +/** + * 表单 + */ +function form(defaultForm) { + return { + data() { + return { + crud: this.crud, + form: this.crud.form + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('form', this, 3) + }, + created() { + this.crud.defaultForm = defaultForm + this.crud.resetForm() + }, + destroyed() { + this.crud.unregisterVM('form', this) + } + } +} + +/** + * crud + */ +function crud(options = {}) { + const defaultOptions = { + type: undefined + } + options = mergeOptions(defaultOptions, options) + return { + data() { + return { + crud: this.crud + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM(options.type, this) + }, + destroyed() { + this.crud.unregisterVM(options.type, this) + } + } +} + +/** + * CRUD钩子 + */ +Crud.HOOK = { + /** 刷新 - 之前 */ + beforeRefresh: 'beforeCrudRefresh', + /** 刷新 - 之后 */ + afterRefresh: 'afterCrudRefresh', + /** 删除 - 之前 */ + beforeDelete: 'beforeCrudDelete', + /** 删除 - 之后 */ + afterDelete: 'afterCrudDelete', + /** 删除取消 - 之前 */ + beforeDeleteCancel: 'beforeCrudDeleteCancel', + /** 删除取消 - 之后 */ + afterDeleteCancel: 'afterCrudDeleteCancel', + /** 新建 - 之前 */ + beforeToAdd: 'beforeCrudToAdd', + /** 新建 - 之后 */ + afterToAdd: 'afterCrudToAdd', + /** 编辑 - 之前 */ + beforeToEdit: 'beforeCrudToEdit', + /** 编辑 - 之后 */ + afterToEdit: 'afterCrudToEdit', + /** 开始 "新建/编辑" - 之前 */ + beforeToCU: 'beforeCrudToCU', + /** 开始 "新建/编辑" - 之后 */ + afterToCU: 'afterCrudToCU', + /** "新建/编辑" 验证 - 之前 */ + beforeValidateCU: 'beforeCrudValidateCU', + /** "新建/编辑" 验证 - 之后 */ + afterValidateCU: 'afterCrudValidateCU', + /** 添加取消 - 之前 */ + beforeAddCancel: 'beforeCrudAddCancel', + /** 添加取消 - 之后 */ + afterAddCancel: 'afterCrudAddCancel', + /** 编辑取消 - 之前 */ + beforeEditCancel: 'beforeCrudEditCancel', + /** 编辑取消 - 之后 */ + afterEditCancel: 'afterCrudEditCancel', + /** 提交 - 之前 */ + beforeSubmit: 'beforeCrudSubmitCU', + /** 提交 - 之后 */ + afterSubmit: 'afterCrudSubmitCU', + afterAddError: 'afterCrudAddError', + afterEditError: 'afterCrudEditError', + afterToView: 'afterToView' +} + +/** + * CRUD状态 + */ +Crud.STATUS = { + NORMAL: 0, + PREPARED: 1, + PROCESSING: 2 +} + +/** + * CRUD通知类型 + */ +Crud.NOTIFICATION_TYPE = { + SUCCESS: 'success', + WARNING: 'warning', + INFO: 'info', + ERROR: 'error' +} + +export default Crud + +export { + presenter, + header, + form, + pagination, + crud +} diff --git a/acs/nladmin-ui/src/layout/components/Sidebar/Logo.vue b/acs/nladmin-ui/src/layout/components/Sidebar/Logo.vue index 34f9ee5..637a504 100644 --- a/acs/nladmin-ui/src/layout/components/Sidebar/Logo.vue +++ b/acs/nladmin-ui/src/layout/components/Sidebar/Logo.vue @@ -14,7 +14,7 @@ + + diff --git a/acs/nladmin-ui/src/views/acs/basetask/config/schBaseTaskconfig.js b/acs/nladmin-ui/src/views/acs/basetask/config/schBaseTaskconfig.js new file mode 100644 index 0000000..aa2c551 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/basetask/config/schBaseTaskconfig.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/schBaseTaskconfig', + method: 'post', + data + }) +} +export function getTaskConfigList() { + return request({ + url: 'api/schBaseTaskconfig/getTaskConfigList', + method: 'post' + }) +} + +export function del(ids) { + return request({ + url: 'api/schBaseTaskconfig/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/schBaseTaskconfig', + method: 'put', + data + }) +} + +export default { add, edit, del, getTaskConfigList } diff --git a/acs/nladmin-ui/src/views/acs/history/instRecord/index.vue b/acs/nladmin-ui/src/views/acs/history/instRecord/index.vue index d434d39..86428d7 100644 --- a/acs/nladmin-ui/src/views/acs/history/instRecord/index.vue +++ b/acs/nladmin-ui/src/views/acs/history/instRecord/index.vue @@ -32,17 +32,6 @@ @keyup.enter.native="crud.toQuery" /> - - - -