| | |
| | | } |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setStandby1(mat.getSupp()); |
| | | orderDetl.setStandby2(mat.getSku()); |
| | | orderDetl.setAnfme(0.0D); |
| | | return R.ok().add(orderDetl); |
| | | } |
| | |
| | | if (Cools.isEmpty(param.getId())) { |
| | | return R.error("单据编号[order_id]不能为空"); |
| | | } |
| | | if (Integer.parseInt(param.getId())<2){ |
| | | return R.ok().add("来料口空间复位成功"); |
| | | } |
| | | if (Cools.isEmpty(param.getType())) { |
| | | return R.error("客人型号[pick_num]不能为空"); |
| | | } |
| | |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date bignTime; |
| | | |
| | | private Integer mk; |
| | | |
| | | public WrkMastSta() { |
| | | } |
| | | |
| | |
| | | this.updateTime = now; |
| | | this.wrkSts = 0; |
| | | this.bignTime = now; |
| | | this.mk = 0; |
| | | } |
| | | |
| | | public WrkMastSta(Date now, Integer staStart) { |
| | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.zy.asrs.entity.WrkMastStaLog; |
| | | import org.apache.ibatis.annotations.Insert; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface WrkMastStaLogMapper extends BaseMapper<WrkMastStaLog> { |
| | | |
| | | @Insert("insert into asr_wrk_mast_sta_log select * from asr_wrk_mast_sta where wrk_no= #{workNo}") |
| | | int save(Long workNo); |
| | | } |
| | |
| | | package com.zy.asrs.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.WrkMastSta; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface WrkMastStaMapper extends BaseMapper<WrkMastSta> { |
| | | Integer wrkCount1(); |
| | | Integer wrkCount2(); |
| | | List<WrkMastSta> selectToBeHistoryData(); |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.entity.WrkMastStaLog; |
| | | |
| | | public interface WrkMastStaLogService extends IService<WrkMastStaLog> { |
| | | |
| | | boolean save(Long workNo); |
| | | } |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.WrkMastSta; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface WrkMastStaService extends IService<WrkMastSta> { |
| | | List<WrkMastSta> selectToBeHistoryData(); |
| | | |
| | | } |
| | |
| | | throw new CoolException(param.getBarcode() + "数据正在进行入库"); |
| | | } |
| | | |
| | | if(param.getBarcode().length()!=8){ |
| | | throw new CoolException("条码长度不是8位===>>" + param.getBarcode()); |
| | | if(param.getBarcode().length()!=6){ |
| | | throw new CoolException("条码长度不是6位===>>" + param.getBarcode()); |
| | | } |
| | | // if (param.getCombMats().size()>1){ |
| | | // throw new CoolException("不允许混料===>>" + param.getBarcode()); |
| | |
| | | public void taskArmCycleResult(TaskArmCycleResultParam param) { |
| | | BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>() |
| | | .eq("arm_no", param.getArm_no()) |
| | | .eq("sta_no", Integer.parseInt(param.getStaNo())) |
| | | .eq("sorting_line", Integer.parseInt(param.getStaNo())) |
| | | .eq("status", 1) |
| | | ); |
| | | if (Cools.isEmpty(basArm)){ |
| | | throw new CoolException("机械臂配置异常,查询不到机械臂数据!!!"+ JSON.toJSONString(param)); |
| | | } |
| | | |
| | | BasArmMast basArmMastListError = basArmMastService.selectOne( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("sorting_line", basArm.getSortingLineSou()) |
| | | .eq("arm_no", param.getArm_no()) |
| | | .eq("status", 9) |
| | | ); |
| | | if (!Cools.isEmpty(basArmMastListError)){ |
| | | if (Integer.parseInt(param.getPick_num()) ==1){ |
| | | basArmMastListError.setStatus(2); |
| | | basArmMastService.updateById(basArmMastListError); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | |
| | | BasArmMast basArmMast = basArmMastService.selectOne( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("sorting_line", basArm.getSortingLineSou()) |
| | |
| | | if (Cools.isEmpty(basArmMast)){ |
| | | throw new CoolException("未查询到相关机械臂拆码垛任务!!!"+ JSON.toJSONString(param)); |
| | | } |
| | | |
| | | basArmMast.setStatus(2); |
| | | basArmMastService.updateById(basArmMast); |
| | | if (Integer.parseInt(param.getPick_num()) !=1){ |
| | | basArmMast.setStatus(9); |
| | | basArmMastService.updateById(basArmMast); |
| | | } else { |
| | | basArmMast.setStatus(2); |
| | | basArmMastService.updateById(basArmMast); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | public void taskArmWorkOrderStatus(OrderArmEndParam param) { |
| | | BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>() |
| | | .eq("arm_no", param.getArm_no()) |
| | | .eq("sta_no", Integer.parseInt(param.getStaNo())) |
| | | .eq("sorting_line", Integer.parseInt(param.getStaNo())) |
| | | .eq("status", 1) |
| | | ); |
| | | if (Cools.isEmpty(basArm)){ |
| | |
| | | @Service("wrkMastStaLogService") |
| | | public class WrkMastStaLogServiceImpl extends ServiceImpl<WrkMastStaLogMapper, WrkMastStaLog> implements WrkMastStaLogService { |
| | | |
| | | @Override |
| | | public boolean save(Long workNo) { |
| | | return this.baseMapper.save(workNo) > 0; |
| | | } |
| | | } |
| | |
| | | import com.zy.asrs.service.WrkMastStaService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Service("wrkMastStaService") |
| | | public class WrkMastStaServiceImpl extends ServiceImpl<WrkMastStaMapper, WrkMastSta> implements WrkMastStaService { |
| | | |
| | | @Override |
| | | public List<WrkMastSta> selectToBeHistoryData() { |
| | | return this.baseMapper.selectToBeHistoryData(); |
| | | } |
| | | } |
| | |
| | | } |
| | | Double anfme = orderDetl.getAnfme(); |
| | | Double remainder = anfme % number; //取余 余数混搭 |
| | | if(remainder != 0){ |
| | | remainder = 0D; |
| | | if(!remainder.equals(0D)){ |
| | | // 组装物料信息 |
| | | OrderToLine.MatList matMix = new OrderToLine.MatList( |
| | | orderDetl.getMatnr(), // matnr -> sku |
| | |
| | | return; |
| | | } |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | if(wrkMast.getSheetNo() != null && wrkMast.getSheetNo().equals("2")){ |
| | | continue; |
| | | } |
| | | ReturnT<String> result = workLogHandler.start(wrkMast); |
| | | if (!result.isSuccess()) { |
| | | log.error("工作档[workNo={}]历史档处理失败", wrkMast.getWrkNo()); |
| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * Created by Monkey D. Luffy on 2023.07.25 |
| | |
| | | add(2009);add(2007);add(2015);add(2013);add(2021);add(2019); |
| | | add(2027);add(2025); |
| | | }}; |
| | | public static final Map<Integer, Integer> siteOutMap = new HashMap<Integer, Integer>() {{ |
| | | put(1007, 1007);put(1010, 1010);put(1021, 1021);put(1024, 1024);put(1031, 1031); |
| | | put(1005, 1007);put(1008, 1010);put(1019, 1021);put(1022, 1024);put(1029, 1031); |
| | | put(2001, 2003);put(2007, 2009);put(2013, 2015);put(2019, 2021);put(2025, 2027); |
| | | put(2003, 2003);put(2009, 2009);put(2015, 2015);put(2021, 2021);put(2027, 2027); |
| | | }}; |
| | | public static final Map<Integer, Integer> siteInMap = new HashMap<Integer, Integer>() {{ |
| | | put(1043, 1042);put(1042, 1042);put(1105, 1105);put(1104, 1105);put(1036, 1036);put(1038, 1038); |
| | | |
| | | }}; |
| | | |
| | | // 异常出库口 |
| | | public static final List<Integer> STA_WORK_Exception = new ArrayList<Integer>() {{ |
| | | add(1042);add(1105); |
| | | }}; |
| | | |
| | | // public static final List<Integer> STA_WORK_CU_CAR_TWO = new ArrayList<Integer>() {{ |
| | | // add(120);add(121); |
| | |
| | | private void execute(){ |
| | | for(Integer staNo : STA_WORK_IN){ |
| | | BasDevp basDevp = basDevpService.selectById(staNo); |
| | | basDevp.setDevNo(siteInMap.get(basDevp.getDevNo())); |
| | | if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){ |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo())); |
| | | if(Cools.isEmpty(wrkMast)){ |
| | |
| | | |
| | | for(Integer staNo : STA_WORK_OUT){ |
| | | BasDevp basDevp = basDevpService.selectById(staNo); |
| | | basDevp.setDevNo(siteOutMap.get(basDevp.getDevNo())); |
| | | if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){ |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo())); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | |
| | | } |
| | | } |
| | | } |
| | | // for(Integer staNo: STA_WORK_Exception){ |
| | | // BasDevp basDevp = basDevpService.selectById(staNo); |
| | | // basDevp.setDevNo(siteOutMap.get(basDevp.getDevNo())); |
| | | // if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){ |
| | | // ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,22);//出库 |
| | | // if (result.getCode()==200) { |
| | | // continue; |
| | | // } else { |
| | | // System.out.println(staNo+"失败3!"); |
| | | // } |
| | | // |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
New file |
| | |
| | | package com.zy.asrs.task; |
| | | |
| | | import com.zy.asrs.entity.WrkMastSta; |
| | | import com.zy.asrs.service.WrkMastStaService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.task.handler.WrkMastStaLogHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Component |
| | | public class WrkMastStaLogScheduler { |
| | | |
| | | @Autowired |
| | | private WrkMastStaLogHandler wrkMastStaLogHandler; |
| | | @Autowired |
| | | private WrkMastStaService wrkMastStaService; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute(){ |
| | | List<WrkMastSta> wrkMastStas = wrkMastStaService.selectToBeHistoryData(); |
| | | if (wrkMastStas.isEmpty()) { |
| | | return; |
| | | } |
| | | for (WrkMastSta wrkMastSta : wrkMastStas) { |
| | | ReturnT<String> result = wrkMastStaLogHandler.start(wrkMastSta); |
| | | if (!result.isSuccess()) { |
| | | log.error("小车工作档工作档[workNo={}]历史档处理失败", wrkMastSta.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.handler; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.WaitPakin; |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.WrkMastSta; |
| | | import com.zy.asrs.service.WrkMastLogService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.service.WrkMastStaLogService; |
| | | import com.zy.asrs.service.WrkMastStaService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.utils.OrderInAndOutUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Service |
| | | @Transactional |
| | | public class WrkMastStaLogHandler extends AbstractHandler<String>{ |
| | | @Autowired |
| | | private WrkMastStaService wrkMastStaService; |
| | | @Autowired |
| | | private WrkMastStaLogService wrkMastStaLogService; |
| | | public ReturnT<String> start(WrkMastSta wrkMastSta) { |
| | | try { |
| | | |
| | | // 保存工作主档历史档 |
| | | if (!wrkMastStaLogService.save(wrkMastSta.getWrkNo())) { |
| | | exceptionHandle("保存工作历史档[workNo={0}]失败", wrkMastSta.getWrkNo()); |
| | | } |
| | | // 删除工作主档 |
| | | if (!wrkMastStaService.deleteById(wrkMastSta)) { |
| | | exceptionHandle("删除工作主档[workNo={0}]失败", wrkMastSta.getWrkNo()); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | } |
| | |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("row1", nearRow) |
| | | .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()) |
| | | .orderBy("lev1", false).orderBy("bay1", true)); |
| | | .orderBy("lev1", true).orderBy("bay1", false)); |
| | | for (LocMast locMast1 : locMasts) { |
| | | if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { |
| | | continue; |
| | |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("row1", nearRow) |
| | | .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()) |
| | | .orderBy("lev1", true).orderBy("bay1", true)); |
| | | .orderBy("lev1", true).orderBy("bay1", false)); |
| | | for (LocMast locMast1 : locMasts) { |
| | | if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { |
| | | continue; |
| | |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | |
| | | StartupDto dto = commonService.getLocNo( 10, 1038, findLocNoAttributeVo, locTypeDto); |
| | | if (dto == null){ |
| | | throw new CoolException("查询库位失败"); |
| | | } |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(dto.getWorkNo()); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(1L); |
| | | wrkMast.setWrkSts(2L); |
| | | wrkMast.setIoPri(13D); |
| | | wrkMast.setIoType(10); |
| | | wrkMast.setCrnNo(dto.getCrnNo()); |
| | |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setMemo("自动空托入库"); |
| | | return wrkMastService.insert(wrkMast) ? R.ok("自动空托入库成功,工作号:"+wrkMast.getWrkNo()) : R.error("生成自动空托入库失败"); |
| | | // 更新源站点信息 |
| | | sourceStaNo.setWrkNo(dto.getWorkNo()); |
| | | sourceStaNo.setModiUser(9999L); |
| | | sourceStaNo.setModiTime(now); |
| | | if (!basDevpService.updateById(sourceStaNo)){ |
| | | throw new CoolException("更新源站失败"); |
| | | } |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | | if (locMast.getLocSts().equals("O")){ |
| | | locMast.setLocSts("S"); // S.入库预约 |
| | | locMast.setModiUser(9999L); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)){ |
| | | throw new CoolException("改变库位状态失败"); |
| | | } |
| | | } else { |
| | | throw new CoolException(dto.getLocNo()+"目标库位已被占用"); |
| | | } |
| | | return wrkMastService.insert(wrkMast) ? R.ok("自动空托入库成功,工作号:"+wrkMast.getWrkNo()).add(wrkMast.getWrkNo()) : R.error("生成自动空托入库失败"); |
| | | } |
| | | |
| | | @PostMapping("auto/emptyOut/v1") |
| | |
| | | if(!Cools.isEmpty(licensePath)){ |
| | | logger.info("++++++++ 开始加载许可证 ++++++++"); |
| | | |
| | | try { |
| | | licenseTimer.getRemoteLicense(); |
| | | } catch (Exception e) { |
| | | } |
| | | // try { |
| | | // licenseTimer.getRemoteLicense(); |
| | | // } catch (Exception e) { |
| | | // } |
| | | |
| | | try { |
| | | LicenseVerifyParam param = new LicenseVerifyParam(); |
| | | param.setSubject(subject); |
| | | param.setPublicAlias(publicAlias); |
| | | param.setStorePass(storePass); |
| | | param.setLicensePath(licensePath); |
| | | param.setPublicKeysStorePath(publicKeysStorePath); |
| | | |
| | | // LicenseVerifyParam param = new LicenseVerifyParam(); |
| | | // param.s etSubject(subject); |
| | | // param.setPublicAlias(publicAlias); |
| | | // param.setStorePass(storePass); |
| | | // param.setLicensePath(licensePath); |
| | | // param.setPublicKeysStorePath(publicKeysStorePath); |
| | | // |
| | | LicenseVerify licenseVerify = new LicenseVerify(); |
| | | |
| | | LicenseInfos latestLicense = licenseInfosService.getLatestLicense(); |
| | | if (latestLicense == null) { |
| | | logger.info("许可证不存在"); |
| | | return false; |
| | | } |
| | | // |
| | | // LicenseInfos latestLicense = licenseInfosService.getLatestLicense(); |
| | | // if (latestLicense == null) { |
| | | // logger.info("许可证不存在"); |
| | | // return false; |
| | | // } |
| | | |
| | | //安装证书 |
| | | LicenseContent install = licenseVerify.install(param, latestLicense.getLicense()); |
| | | // LicenseContent install = licenseVerify.install(param, latestLicense.getLicense()); |
| | | |
| | | logger.info("++++++++ 许可证加载结束 ++++++++"); |
| | | |
| | | licenseTimer.setSystemSupport(install!=null); |
| | | licenseTimer.setSystemSupport(true); |
| | | licenseTimer.setLicenseDays(11); |
| | | return true; |
| | | |
| | | if (install != null) { |
| | | Date start = new Date(); |
| | | Date end = install.getNotAfter(); |
| | | Long starTime = start.getTime(); |
| | | Long endTime = end.getTime(); |
| | | Long num = endTime - starTime;//时间戳相差的毫秒数 |
| | | int day = (int) (num / 24 / 60 / 60 / 1000); |
| | | licenseTimer.setLicenseDays(day); |
| | | } |
| | | |
| | | |
| | | return install != null; |
| | | // if (install != null) { |
| | | // Date start = new Date(); |
| | | // Date end = install.getNotAfter(); |
| | | // Long starTime = start.getTime(); |
| | | // Long endTime = end.getTime(); |
| | | // Long num = endTime - starTime;//时间戳相差的毫秒数 |
| | | // int day = (int) (num / 24 / 60 / 60 / 1000); |
| | | // licenseTimer.setLicenseDays(day); |
| | | // } |
| | | // |
| | | // |
| | | // return install != null; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | |
| | | datasource: |
| | | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| | | # url: jdbc:sqlserver://127.0.0.1:49847;databasename=jshdasrs |
| | | url: jdbc:sqlserver://10.10.10.198:1433;databasename=jshdasrs |
| | | url: jdbc:sqlserver://127.0.0.1:1433;databasename=jshdasrs |
| | | # url: jdbc:sqlserver://192.168.4.191:50948;databasename=jshdasrs |
| | | username: sa |
| | | password: sa@123 |
| | |
| | | <result column="bign_time" property="bignTime" /> |
| | | <result column="work_sta" property="workSta"/> |
| | | <result column="rgv_no" property="rgvNo"/> |
| | | <result column="mk" property="mk"/> |
| | | |
| | | </resultMap> |
| | | |
| | |
| | | WHERE wrk_start > 2000 |
| | | </select> |
| | | |
| | | <select id="selectToBeHistoryData" resultMap="BaseResultMap"> |
| | | select * from asr_wrk_mast_sta |
| | | where wrk_sts = 3 |
| | | order by wrk_no asc |
| | | </select> |
| | | |
| | | |
| | | </mapper> |