|
@@ -1483,6 +1483,143 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
return R.success();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R checkMaterialsRfid(Map<String, Object> map) {
|
|
|
+ R<Boolean> retuMsg = R.success().setMsg("200");
|
|
|
+
|
|
|
+ R rfid = this.findRfid(map, false);
|
|
|
+ if(!rfid.getIsSuccess()){
|
|
|
+ return retuMsg.setMsg(rfid.getMsg());
|
|
|
+ }
|
|
|
+ // 比对rfid与数据子盘号是否一致
|
|
|
+ Long decimal = Long.parseLong(rfid.getData().toString());
|
|
|
+ Tray tray = trayService.getOne(Wraps.<Tray>lbQ().eq(Tray::getId, Long.parseLong(map.get("trayId").toString())).last("limit 1"));
|
|
|
+ if(Objects.isNull(tray)){
|
|
|
+ return retuMsg.setMsg("没有查询到工装信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ if(decimal!=Long.parseLong(tray.getCode())){
|
|
|
+ return retuMsg.setMsg("比较RFID失败,应为:"+ tray.getCode() +";实际为:"+ decimal);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return retuMsg.setMsg("比较RFID失败,应为:"+ tray.getCode() +";实际为:"+ decimal);
|
|
|
+ }
|
|
|
+
|
|
|
+ return retuMsg;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param map 参数
|
|
|
+ * @param reversal 是否把得到的数据逆转 ,true是,false 否
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private R findRfid(Map<String, Object> map, boolean reversal){
|
|
|
+ /**
|
|
|
+ * 1、调用rfid接口获取rfid,如果没数据返回
|
|
|
+ * 2、根据rfid查询对刀仪表,确认此刀是符合进线要求的,
|
|
|
+ */
|
|
|
+
|
|
|
+ // 根据设备id查询设备信息 进行推送
|
|
|
+ Productionresource productionresource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getCode,map.get("code")));
|
|
|
+ if(productionresource == null){
|
|
|
+ return R.fail("没有查询到需求设备");
|
|
|
+ }
|
|
|
+
|
|
|
+ ZZone zZone = zoneService.getById(Long.parseLong(map.get("zoneId").toString()));
|
|
|
+ String url1 = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(zZone.getNo() + "_plc").toString());
|
|
|
+ String url = url1 + "/api/findRfidData";
|
|
|
+
|
|
|
+ //Rfid
|
|
|
+ JSONObject object = new JSONObject();
|
|
|
+ object.put("mode","LAUPT");
|
|
|
+ JSONObject rfidObj = new JSONObject();
|
|
|
+ rfidObj.put("url", productionresource.getIp());
|
|
|
+ rfidObj.put("port", productionresource.getPort());
|
|
|
+ rfidObj.put("taskId", System.currentTimeMillis()+"1");
|
|
|
+ rfidObj.put("taskNodeId", System.currentTimeMillis()+"1");
|
|
|
+ rfidObj.put("data", object);
|
|
|
+
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
+ headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
|
|
|
+ HttpEntity<String> formEntity = new HttpEntity<String>(rfidObj.toJSONString(), headers);
|
|
|
+
|
|
|
+ String s = null;
|
|
|
+ if(imcsTOccsEnable){
|
|
|
+ s = restTemplate.postForObject(url, formEntity, String.class);
|
|
|
+ }else {
|
|
|
+ s="{\"taskID\":\"1872123464509292544\",\"taskNodeID\":\"1872123575505080322\",\"result\":\"true\",\"resultMsg\":\"执行成功\",\"concurrency\":\"false\",\"data\":null,\"returnData\":{\"par1\":\"001A000000\"}}\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(s);
|
|
|
+ // 把机床下刀的数据同步过来,以保证二次入库,数据正确写入,只有在从机床出刀的时候才执行此代码
|
|
|
+ if(jsonObject.getString("result") ==null || jsonObject.getString("result").equals("false")){
|
|
|
+ return R.fail("调用ccs,获取rfid失败");
|
|
|
+ }
|
|
|
+ JSONObject returnData = jsonObject.getJSONObject("returnData");
|
|
|
+ String par1 = returnData.getString("par1");
|
|
|
+ if(par1.equals("0")){
|
|
|
+ return R.fail("请读取刀具RFID");
|
|
|
+ }
|
|
|
+ if(par1.length()<6){
|
|
|
+ return R.fail("RFID读取错误请检查");
|
|
|
+ }
|
|
|
+ String s1 = StringUtil.isNotEmpty(par1) ? par1.substring(2, 6):par1 ;
|
|
|
+ if(reversal){// 是否反转
|
|
|
+ // 反转
|
|
|
+ String hexStr = CutterFile.reverseByTwoCharsGroup(s1);
|
|
|
+
|
|
|
+ // 转为10进制
|
|
|
+ Long decimal = Long.parseLong(hexStr, 16);
|
|
|
+ return R.success(decimal);
|
|
|
+ }else {
|
|
|
+ return R.success(s1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private R rfidReset(Map<String, Object> map){
|
|
|
+ /**
|
|
|
+ * 1、调用rfid接口获取rfid,如果没数据返回
|
|
|
+ * 2、根据rfid查询对刀仪表,确认此刀是符合进线要求的,
|
|
|
+ */
|
|
|
+
|
|
|
+ // 根据设备id查询设备信息 进行推送
|
|
|
+ Productionresource productionresource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getCode,map.get("code")));
|
|
|
+ if(productionresource == null){
|
|
|
+ return R.fail("没有查询到需求设备");
|
|
|
+ }
|
|
|
+
|
|
|
+ ZZone zZone = zoneService.getById(Long.parseLong(map.get("zoneId").toString()));
|
|
|
+ String url1 = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(zZone.getNo() + "_plc").toString());
|
|
|
+ String url = url1 + "/api/rfidReset";
|
|
|
+
|
|
|
+ //LAUPT 刀具rfid
|
|
|
+ JSONObject object = new JSONObject();
|
|
|
+ object.put("mode","LAUPT");
|
|
|
+ JSONObject rfidObj = new JSONObject();
|
|
|
+ rfidObj.put("url", productionresource.getIp());
|
|
|
+ rfidObj.put("port", productionresource.getPort());
|
|
|
+ rfidObj.put("taskId", System.currentTimeMillis()+"1");
|
|
|
+ rfidObj.put("taskNodeId", System.currentTimeMillis()+"1");
|
|
|
+ rfidObj.put("data", object);
|
|
|
+
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
+ headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
|
|
|
+ HttpEntity<String> formEntity = new HttpEntity<String>(rfidObj.toJSONString(), headers);
|
|
|
+
|
|
|
+ String s = null;
|
|
|
+ if(imcsTOccsEnable){
|
|
|
+ s = restTemplate.postForObject(url, formEntity, String.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.success();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public R procesRfid(Map<String, Object> map){
|
|
|
// TODO 先读取rfid内容是否有子盘信息
|
|
@@ -1668,58 +1805,12 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
* 1、调用rfid接口获取rfid,如果没数据返回
|
|
|
* 2、根据rfid查询对刀仪表,确认此刀是符合进线要求的,
|
|
|
*/
|
|
|
-
|
|
|
- // 根据设备id查询设备信息 进行推送
|
|
|
- Productionresource productionresource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getCode,map.get("code")));
|
|
|
- if(productionresource == null){
|
|
|
- return R.fail("没有查询到需求设备");
|
|
|
+ R rfid = this.findRfid(map,true);
|
|
|
+ if(!rfid.getIsSuccess()){
|
|
|
+ return rfid;
|
|
|
}
|
|
|
+ Long decimal = Long.parseLong(rfid.getData().toString());
|
|
|
|
|
|
- ZZone zZone = zoneService.getById(Long.parseLong(map.get("zoneId").toString()));
|
|
|
- String url1 = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(zZone.getNo() + "_plc").toString());
|
|
|
- String url = url1 + "/api/findRfidData";
|
|
|
-
|
|
|
- //LAUPT 刀具rfid
|
|
|
- JSONObject object = new JSONObject();
|
|
|
- object.put("mode","LAUPT");
|
|
|
- JSONObject rfidObj = new JSONObject();
|
|
|
- rfidObj.put("url", productionresource.getIp());
|
|
|
- rfidObj.put("port", productionresource.getPort());
|
|
|
- rfidObj.put("taskId", System.currentTimeMillis()+"1");
|
|
|
- rfidObj.put("taskNodeId", System.currentTimeMillis()+"1");
|
|
|
- rfidObj.put("data", object);
|
|
|
-
|
|
|
- HttpHeaders headers = new HttpHeaders();
|
|
|
- headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
|
|
|
- HttpEntity<String> formEntity = new HttpEntity<String>(rfidObj.toJSONString(), headers);
|
|
|
-
|
|
|
- String s = null;
|
|
|
- if(imcsTOccsEnable){
|
|
|
- s = restTemplate.postForObject(url, formEntity, String.class);
|
|
|
- }else {
|
|
|
- s="{\"taskID\":\"1872123464509292544\",\"taskNodeID\":\"1872123575505080322\",\"result\":\"true\",\"resultMsg\":\"执行成功\",\"concurrency\":\"false\",\"data\":null,\"returnData\":{\"par1\":\"001A000000\"}}\n";
|
|
|
- }
|
|
|
-
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(s);
|
|
|
- // 把机床下刀的数据同步过来,以保证二次入库,数据正确写入,只有在从机床出刀的时候才执行此代码
|
|
|
- if(jsonObject.getString("result") ==null || jsonObject.getString("result").equals("false")){
|
|
|
- return R.fail("调用ccs,获取rfid失败");
|
|
|
- }
|
|
|
- JSONObject returnData = jsonObject.getJSONObject("returnData");
|
|
|
- String par1 = returnData.getString("par1");
|
|
|
- if(par1.equals("0")){
|
|
|
- return R.fail("请读取刀具RFID");
|
|
|
- }
|
|
|
- if(par1.length()<6){
|
|
|
- return R.fail("RFID读取错误请检查");
|
|
|
- }
|
|
|
- String s1 = StringUtil.isNotEmpty(par1) ? par1.substring(2, 6):par1 ;
|
|
|
-
|
|
|
- // 反转
|
|
|
- String hexStr = CutterFile.reverseByTwoCharsGroup(s1);
|
|
|
-
|
|
|
- // 转为10进制
|
|
|
- Long decimal = Long.parseLong(hexStr, 16);
|
|
|
|
|
|
// 根据读取的rfid检测对刀数据是否已经对刀过
|
|
|
CutterTestDataEntity cutterTestData = cutterTestDataMapper.selectOne(Wraps.<CutterTestDataEntity>lbQ().eq(CutterTestDataEntity::getCutterT, decimal.toString()).
|
|
@@ -1733,11 +1824,8 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
return R.fail("缺失基础刀具信息,刀柄号:"+decimal);
|
|
|
}
|
|
|
|
|
|
- // 数据复位
|
|
|
- if(imcsTOccsEnable){
|
|
|
- url = url1 + "/api/rfidReset";
|
|
|
- restTemplate.postForObject(url, formEntity, String.class);
|
|
|
- }
|
|
|
+ //rfid数据复位
|
|
|
+ this.rfidReset(map);
|
|
|
|
|
|
// 刀具校验,确认在库位中没有此刀具
|
|
|
List<Storge> listStorgeByGoodsID = storgeService.findListStorgeByGoodsID(cuttingTool.getId());
|