src/main/java/com/zy/asrs/entity/WrkDetlLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/WrkDetlLogMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/WrkDetlLogService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/WrkDetlLogMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/entity/WrkDetlLog.java
New file @@ -0,0 +1,457 @@ package com.zy.asrs.entity; import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; import com.core.common.SpringUtils; import com.zy.system.service.UserService; import com.zy.system.entity.User; import java.text.SimpleDateFormat; import java.util.Date; import com.core.common.SpringUtils; import com.zy.system.service.UserService; import com.zy.system.entity.User; import java.text.SimpleDateFormat; import java.util.Date; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.baomidou.mybatisplus.annotations.TableName; import java.io.Serializable; @Data @TableName("asr_wrk_detl_log") public class WrkDetlLog implements Serializable { private static final long serialVersionUID = 1L; /** * 工作号 */ @ApiModelProperty(value= "工作号") @TableField("wrk_no") private Integer wrkNo; /** * 工作时间 */ @ApiModelProperty(value= "工作时间") @TableField("io_time") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date ioTime; /** * 数量 */ @ApiModelProperty(value= "数量") private Double anfme; /** * 托盘条码 */ @ApiModelProperty(value= "托盘条码") private String zpallet; /** * 商品编号 */ @ApiModelProperty(value= "商品编号") private String matnr; /** * 商品名称 */ @ApiModelProperty(value= "商品名称") private String maktx; /** * 批号 */ @ApiModelProperty(value= "批号") private String batch; /** * 单据编号 */ @ApiModelProperty(value= "单据编号") @TableField("order_no") private String orderNo; /** * 规格 */ @ApiModelProperty(value= "规格") private String specs; /** * 型号 */ @ApiModelProperty(value= "型号") private String model; /** * 颜色 */ @ApiModelProperty(value= "颜色") private String color; /** * 品牌 */ @ApiModelProperty(value= "品牌") private String brand; /** * 单位 */ @ApiModelProperty(value= "单位") private String unit; /** * 单价 */ @ApiModelProperty(value= "单价") private Double price; /** * sku */ @ApiModelProperty(value= "sku") private String sku; /** * 单位量 */ @ApiModelProperty(value= "单位量") private Double units; /** * 条码 */ @ApiModelProperty(value= "条码") private String barcode; /** * 产地 */ @ApiModelProperty(value= "产地") private String origin; /** * 厂家 */ @ApiModelProperty(value= "厂家") private String manu; /** * 生产日期 */ @ApiModelProperty(value= "生产日期") @TableField("manu_date") private String manuDate; /** * 品项数 */ @ApiModelProperty(value= "品项数") @TableField("item_num") private String itemNum; /** * 安全库存量 */ @ApiModelProperty(value= "安全库存量") @TableField("safe_qty") private Double safeQty; /** * 重量 */ @ApiModelProperty(value= "重量") private Double weight; /** * 长度 */ @ApiModelProperty(value= "长度") private Double length; /** * 体积 */ @ApiModelProperty(value= "体积") private Double volume; /** * 三方编码 */ @ApiModelProperty(value= "三方编码") @TableField("three_code") private String threeCode; /** * 供应商 */ @ApiModelProperty(value= "供应商") private String supp; /** * 供应商编码 */ @ApiModelProperty(value= "供应商编码") @TableField("supp_code") private String suppCode; /** * 是否批次 1: 是 0: 否 */ @ApiModelProperty(value= "是否批次 1: 是 0: 否 ") @TableField("be_batch") private Integer beBatch; /** * 保质期 */ @ApiModelProperty(value= "保质期") @TableField("dead_time") private String deadTime; /** * 预警天数 */ @ApiModelProperty(value= "预警天数") @TableField("dead_warn") private Integer deadWarn; /** * 制购 1: 制造 2: 采购 3: 外协 */ @ApiModelProperty(value= "制购 1: 制造 2: 采购 3: 外协 ") private Integer source; /** * 要求检验 1: 是 0: 否 */ @ApiModelProperty(value= "要求检验 1: 是 0: 否 ") private Integer inspect; /** * 危险品 1: 是 0: 否 */ @ApiModelProperty(value= "危险品 1: 是 0: 否 ") private Integer danger; /** * 修改人员 */ @ApiModelProperty(value= "修改人员") @TableField("modi_user") private Long modiUser; /** * 修改时间 */ @ApiModelProperty(value= "修改时间") @TableField("modi_time") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date modiTime; /** * 添加人员 */ @ApiModelProperty(value= "添加人员") @TableField("appe_user") private Long appeUser; /** * 添加时间 */ @ApiModelProperty(value= "添加时间") @TableField("appe_time") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date appeTime; /** * 备注 */ @ApiModelProperty(value= "备注") private String memo; public WrkDetlLog() {} public WrkDetlLog(Integer wrkNo,Date ioTime,Double anfme,String zpallet,String matnr,String maktx,String batch,String orderNo,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double length,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String memo) { this.wrkNo = wrkNo; this.ioTime = ioTime; this.anfme = anfme; this.zpallet = zpallet; this.matnr = matnr; this.maktx = maktx; this.batch = batch; this.orderNo = orderNo; this.specs = specs; this.model = model; this.color = color; this.brand = brand; this.unit = unit; this.price = price; this.sku = sku; this.units = units; this.barcode = barcode; this.origin = origin; this.manu = manu; this.manuDate = manuDate; this.itemNum = itemNum; this.safeQty = safeQty; this.weight = weight; this.length = length; this.volume = volume; this.threeCode = threeCode; this.supp = supp; this.suppCode = suppCode; this.beBatch = beBatch; this.deadTime = deadTime; this.deadWarn = deadWarn; this.source = source; this.inspect = inspect; this.danger = danger; this.modiUser = modiUser; this.modiTime = modiTime; this.appeUser = appeUser; this.appeTime = appeTime; this.memo = memo; } // WrkDetlLog wrkDetlLog = new WrkDetlLog( // null, // 工作号[非空] // null, // 工作时间 // null, // 数量 // null, // 托盘条码 // null, // 商品编号[非空] // null, // 商品名称 // null, // 批号 // null, // 单据编号 // null, // 规格 // null, // 型号 // null, // 颜色 // null, // 品牌 // null, // 单位 // null, // 单价 // null, // sku // null, // 单位量 // null, // 条码 // null, // 产地 // null, // 厂家 // null, // 生产日期 // null, // 品项数 // null, // 安全库存量 // null, // 重量 // null, // 长度 // null, // 体积 // null, // 三方编码 // null, // 供应商 // null, // 供应商编码 // null, // 是否批次 // null, // 保质期 // null, // 预警天数 // null, // 制购 // null, // 要求检验 // null, // 危险品 // null, // 修改人员 // null, // 修改时间 // null, // 添加人员 // null, // 添加时间 // null // 备注 // ); public String getIoTime$(){ if (Cools.isEmpty(this.ioTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime); } public String getBeBatch$(){ if (null == this.beBatch){ return null; } switch (this.beBatch){ case 1: return "是"; case 0: return "否"; default: return String.valueOf(this.beBatch); } } public String getSource$(){ if (null == this.source){ return null; } switch (this.source){ case 1: return "制造"; case 2: return "采购"; case 3: return "外协"; default: return String.valueOf(this.source); } } public String getInspect$(){ if (null == this.inspect){ return null; } switch (this.inspect){ case 1: return "是"; case 0: return "否"; default: return String.valueOf(this.inspect); } } public String getDanger$(){ if (null == this.danger){ return null; } switch (this.danger){ case 1: return "是"; case 0: return "否"; default: return String.valueOf(this.danger); } } public String getModiUser$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.modiUser); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public String getModiTime$(){ if (Cools.isEmpty(this.modiTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); } public String getAppeUser$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.appeUser); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public String getAppeTime$(){ if (Cools.isEmpty(this.appeTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); } } src/main/java/com/zy/asrs/mapper/WrkDetlLogMapper.java
New file @@ -0,0 +1,16 @@ package com.zy.asrs.mapper; import com.zy.asrs.entity.WrkDetlLog; import com.baomidou.mybatisplus.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; import java.util.List; @Mapper @Repository public interface WrkDetlLogMapper extends BaseMapper<WrkDetlLog> { List<WrkDetlLog> selectLatestByWorkNo(Integer workNo); } src/main/java/com/zy/asrs/service/WrkDetlLogService.java
New file @@ -0,0 +1,12 @@ package com.zy.asrs.service; import com.zy.asrs.entity.WrkDetlLog; import com.baomidou.mybatisplus.service.IService; import java.util.List; public interface WrkDetlLogService extends IService<WrkDetlLog> { List<WrkDetlLog> selectLatestByWorkNo(Integer workNo); } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -113,6 +113,8 @@ private ConfigService configService; @Autowired private NavigateMapUtils navigateMapUtils; @Autowired private WrkDetlLogService wrkDetlLogService; /** @@ -664,8 +666,8 @@ continue; } staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//写入目标站 MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//写入目标站 // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); } else if (code == 500) { News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); @@ -1201,15 +1203,15 @@ return false;//出库站点不存在 } if (!basDevp.getAutoing().equals("Y")) { News.info("{}任务,{}站点,不是自动状态",wrkMast.getWrkNo(),basDevp.getDevNo()); return false;//不是自动状态 } if (!basDevp.getOutEnable().equals("Y")) { News.info("{}任务,{}站点,没有可出信号", wrkMast.getWrkNo(), basDevp.getDevNo()); return false;//出库站点不可出 } // if (!basDevp.getAutoing().equals("Y")) { // News.info("{}任务,{}站点,不是自动状态",wrkMast.getWrkNo(),basDevp.getDevNo()); // return false;//不是自动状态 // } // // if (!basDevp.getOutEnable().equals("Y")) { // News.info("{}任务,{}站点,没有可出信号", wrkMast.getWrkNo(), basDevp.getDevNo()); // return false;//出库站点不可出 // } Integer liftNo = basDevp.getLiftNo();//搜索出库提升机是否存在入库任务,如存在禁止出库 List<WrkMast> liftWrkMasts = wrkMastMapper.selectInWrkMastByLiftNo(liftNo); @@ -2897,6 +2899,13 @@ wrkDetls.forEach(wrkDetl -> { ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode())); }); if (wrkDetls.isEmpty()) {//从历史档查询 List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkMast.getWrkNo()); wrkDetlLogs.forEach(wrkDetl -> { ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode())); }); } } } src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
New file @@ -0,0 +1,18 @@ package com.zy.asrs.service.impl; import com.zy.asrs.mapper.WrkDetlLogMapper; import com.zy.asrs.entity.WrkDetlLog; import com.zy.asrs.service.WrkDetlLogService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; @Service("wrkDetlLogService") public class WrkDetlLogServiceImpl extends ServiceImpl<WrkDetlLogMapper, WrkDetlLog> implements WrkDetlLogService { @Override public List<WrkDetlLog> selectLatestByWorkNo(Integer workNo) { return this.baseMapper.selectLatestByWorkNo(workNo); } } src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -78,6 +78,18 @@ add(343);add(344); }}; public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{//218 add(302);add(304); add(315);add(322); add(324);add(330); add(332);add(337); }}; public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{//250 add(318);add(320); add(343); }}; //高低信号站点 public static final ArrayList<Integer> locType1StaNos = new ArrayList<Integer>() {{ add(100);add(103); @@ -270,25 +282,70 @@ } } // Thread.sleep(100); // for (Integer staNo : staNos2) { // OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".0", (short) 48); // if (result5.IsSuccess) { // StaProtocol staProtocol = station.get(staNo); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(staNo); // station.put(staNo, staProtocol); // } // // boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result5.Content, 8, 1); // boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result5.Content, 21, 1); // staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 34)); // 工作号 // staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 40)); // 目标站 // staProtocol.setAutoing(status1[0]); // 自动 // staProtocol.setLoading(status2[2]); // 有物 // } // } Thread.sleep(100); for (Integer staNo : staNos2) { OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".0", (short) 48); if (result5.IsSuccess) { StaProtocol staProtocol = station.get(staNo); StaProtocol staProtocol300 = station.get(300); if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(staNo); station.put(staNo, staProtocol); } boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result5.Content, 1, 1); staProtocol.setAutoing(staProtocol300.isAutoing()); // 自动 staProtocol.setLoading(status1[2]); // 有物 if (staNos3.contains(staNo) || staNos4.contains(staNo)) { continue; } if (staNo == 344) { staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 34)); // 工作号 }else { staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 22)); // 工作号 } } } Thread.sleep(100); for (Integer staNo : staNos3) { OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".218.0", (short) 2); if (result5.IsSuccess && result6.IsSuccess) { StaProtocol staProtocol = station.get(staNo); short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); short wrkNo = 0; if (wrkNo1 != 0) { wrkNo = wrkNo1; } if (wrkNo2 != 0) { wrkNo = wrkNo2; } staProtocol.setWorkNo(wrkNo); // 工作号 } } Thread.sleep(100); for (Integer staNo : staNos4) { OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".250.0", (short) 2); if (result5.IsSuccess && result6.IsSuccess) { StaProtocol staProtocol = station.get(staNo); short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); short wrkNo = 0; if (wrkNo1 != 0) { wrkNo = wrkNo1; } if (wrkNo2 != 0) { wrkNo = wrkNo2; } staProtocol.setWorkNo(wrkNo); // 工作号 } } if (result.IsSuccess && result1.IsSuccess) { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); src/main/resources/mapper/WrkDetlLogMapper.xml
New file @@ -0,0 +1,58 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zy.asrs.mapper.WrkDetlLogMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkDetlLog"> <result column="wrk_no" property="wrkNo" /> <result column="io_time" property="ioTime" /> <result column="anfme" property="anfme" /> <result column="zpallet" property="zpallet" /> <result column="matnr" property="matnr" /> <result column="maktx" property="maktx" /> <result column="batch" property="batch" /> <result column="order_no" property="orderNo" /> <result column="specs" property="specs" /> <result column="model" property="model" /> <result column="color" property="color" /> <result column="brand" property="brand" /> <result column="unit" property="unit" /> <result column="price" property="price" /> <result column="sku" property="sku" /> <result column="units" property="units" /> <result column="barcode" property="barcode" /> <result column="origin" property="origin" /> <result column="manu" property="manu" /> <result column="manu_date" property="manuDate" /> <result column="item_num" property="itemNum" /> <result column="safe_qty" property="safeQty" /> <result column="weight" property="weight" /> <result column="length" property="length" /> <result column="volume" property="volume" /> <result column="three_code" property="threeCode" /> <result column="supp" property="supp" /> <result column="supp_code" property="suppCode" /> <result column="be_batch" property="beBatch" /> <result column="dead_time" property="deadTime" /> <result column="dead_warn" property="deadWarn" /> <result column="source" property="source" /> <result column="inspect" property="inspect" /> <result column="danger" property="danger" /> <result column="modi_user" property="modiUser" /> <result column="modi_time" property="modiTime" /> <result column="appe_user" property="appeUser" /> <result column="appe_time" property="appeTime" /> <result column="memo" property="memo" /> </resultMap> <select id="selectLatestByWorkNo" resultMap="BaseResultMap"> select * from asr_wrk_detl_log wdl,(select top 1 io_time,wrk_no from asr_wrk_detl_log where wrk_no = #{workNo} group by io_time,wrk_no order by io_time desc) a where wdl.wrk_no = a.wrk_no and wdl.io_time = a.io_time </select> </mapper>