package com.cim.idm.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.cim.idm.exception.GlobalException; import com.cim.idm.framework.IDMFrameServiceProxy; import com.cim.idm.framework.data.EventInfo; import com.cim.idm.framework.util.time.TimeUtils; import com.cim.idm.model.AutoLibraryDetailDto; import com.cim.idm.model.AutoLibraryDto; import com.cim.idm.service.Impl.AutoLibraryServiceImpl; import com.cim.idm.service.impl.WCSServiceImpl; import com.cim.idm.utils.AjaxResult; import com.cim.idm.utils.EventInfoUtil; import com.cim.idm.wmsextend.generic.errorHandler.CustomException; import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey; import com.cim.idm.wmspackage.materialpacking.management.info.SetEventInfo; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 立体库管理 * @author 10539622 * */ @Slf4j @RestController @EnableAutoConfiguration @RequestMapping("/api/MaturationLibrary") @Api(tags = "立体库接口", description = "立体库接口") public class AutoLibraryController { @Autowired private WCSServiceImpl WCSServiceImpl = new WCSServiceImpl(); @Autowired private AutoLibraryServiceImpl autoLibraryServiceImpl; /** * 熟化库出库 * @param in * @return * @throws JsonProcessingException * @throws JsonMappingException * @throws CustomException */ @ApiOperation("通过物料条码查询条码信息(获取完成后绑定出库") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/MatuStockOut", method = RequestMethod.POST) @Transactional public AjaxResult MatuStockOut(@RequestBody JSONObject in ) throws JsonMappingException, JsonProcessingException, CustomException { AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String userId = m.getUserId(); // 获取用户 String sitename = m.getSITENAME(); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("MatuStockOut",userId, "MatuStockOut"); List list = new ArrayList(); String transportCommand = "TRANS"+new TimeUtils().getCurrentEventTimeKey(); for(AutoLibraryDetailDto detail : m.getMATERIALPACKINGNAME()) { //修改Materialpacking 信息 Map bindMap = new HashMap(); bindMap.put("StockState","StockOut"); bindMap.put("areaName",""); bindMap.put("shipTime",new Timestamp(System.currentTimeMillis())); SetEventInfo setEventInfo = new SetEventInfo(); setEventInfo.setUserColumns(bindMap); MaterialPackingKey mp=new MaterialPackingKey(sitename,detail.getMATERIALPACKINGNAME()); MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mp, makeEventInfo, setEventInfo); list.add(mp); //熟化库出库-》下发WCS transportCommand = autoLibraryServiceImpl.createCommand(makeEventInfo,detail,"",transportCommand); String transportCommandRequest = WCSServiceImpl.transportCommandRequest(transportCommand,userId); org.json.JSONObject jsonObject = new org.json.JSONObject(transportCommandRequest); String returnCode = jsonObject.get("RETURNCODE").toString(); if ("1".equals(returnCode)) { String message = jsonObject.get("RETURNMESSAGE").toString(); return AjaxResult.me().setSuccess(false) .setMessage(message); } } return null ; } @ApiOperation("通过物料条码查询条码信息(获取完成后绑定出库") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/MatuMove", method = RequestMethod.POST) @Transactional public AjaxResult MatuMove(@RequestBody JSONObject in ) throws JsonMappingException, JsonProcessingException, CustomException{ AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String userId = m.getUserId(); // 获取用户 String sitename = m.getSITENAME(); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("MatuMove",userId, "MatuMove"); List list = new ArrayList(); String transportCommand = "TRANS"+new TimeUtils().getCurrentEventTimeKey(); for(AutoLibraryDetailDto detail : m.getMATERIALPACKINGNAME()) { //修改Materialpacking 信息 Map bindMap = new HashMap(); bindMap.put("areaName",m.getAREANAME()); bindMap.put("shipTime",new Timestamp(System.currentTimeMillis())); SetEventInfo setEventInfo = new SetEventInfo(); setEventInfo.setUserColumns(bindMap); MaterialPackingKey mp=new MaterialPackingKey(sitename,detail.getMATERIALPACKINGNAME()); MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mp, makeEventInfo, setEventInfo); list.add(mp); //熟化库出库-》下发WCS transportCommand = autoLibraryServiceImpl.createCommand(makeEventInfo,detail,m.getAREANAME(),transportCommand); String transportCommandRequest = WCSServiceImpl.transportCommandRequest(transportCommand,userId); } List selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(list); //熟化库出库-》NC过账 // String result=ncServiceImpl.qtcNoInvoice(selectByKey,userId); // if(!result.equals("1")) // { // throw new CustomException(result); // } return null ; } /*******************************************************************************************************************/ /*******************************************************************************************************************/ /*************************************立体库更新20240727****************************************************/ /*******************************************************************************************************************/ /** * 立库入库 * @param in * @return */ @ApiOperation("立体库入库") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/AutoStockIn", method = RequestMethod.POST) @Transactional public AjaxResult AutoStockIn(@RequestBody JSONObject in ){ AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String userId = m.getUserId(); // 获取用户 String sitename = m.getSITENAME() == null ? "SDK" : m.getSITENAME(); String areaname = m.getAREANAME();//入库货区 // B 线边库 // C 熟化库 // E 包材库 // F 小卷库 // G 大卷库 // String barCode = m.getBarCode();//扫描条码 String erpFactory = m.getErpFactory();//组织 String erpLocation = m.getErpLocation();//仓库 String locationName = m.getLocationName();//货位 // String durableName = m.getDurableName();//管芯,托盘 String temperature = m.getTEMPERATURE();//烘烤温度 String bakingdays = m.getBAKINGDAYS();//烘烤小时 String width = m.getWIDTH();//宽幅 String diameter = m.getDIAMETER();//直径 String deviation = m.getDEVIATION();//偏移量 String weight = m.getWEIGHT();//重量 String productline = m.getPRODUCTLINE();//生产线 String commitDate = m.getCommitDate(); String opCode = m.getOpCode(); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("AutoStockIn",userId, "AutoStockIn"); String transportCommand = "TRANS"+new TimeUtils().getCurrentEventTimeKey(); List materialpackingname2 = m.getMATERIALPACKINGNAME(); boolean bZK = false; boolean bBQ = false; //创建搬送任务 for(AutoLibraryDetailDto detail : m.getMATERIALPACKINGNAME()) { String materialpackingname = detail.getMATERIALPACKINGNAME(); String durablename = detail.getDURABLENAME(); if (durablename == null || "".equals(durablename)) { detail.setDURABLENAME(detail.getTRAYNAME()); } //判断标签是否已在库 String judgeZKSql = "SELECT * FROM MATERIALPACKING m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; String judgeBQSql = "SELECT LOTNAME,REQUESTNAME,PRODUCTSPECNAME FROM BS_MES_SHIPPED bms WHERE bms.LOTNAME = :MATERIALPACKINGNAME"; Map hashMap = new HashMap (); hashMap.put("MATERIALPACKINGNAME", materialpackingname); hashMap.put("ERPFACTORY", erpFactory); hashMap.put("ERPLOCATION", erpLocation); hashMap.put("LOCATIONNAME", locationName); List> judgeZK = IDMFrameServiceProxy.getSqlTemplate().queryForList(judgeZKSql, hashMap); List> judgeBQ = IDMFrameServiceProxy.getSqlTemplate().queryForList(judgeBQSql, hashMap); bZK = (judgeZK != null && judgeZK.size() >= 1); //在库 bBQ = (judgeBQ != null && judgeBQ.size() >= 1); //在标签 if ( !bZK && !bBQ) { return AjaxResult.me().setSuccess(false).setMessage("目标条码不在库也未在标签系统打印"); } //根据库区判断是否参与NC过账 boolean ncFlag = "E".equals(areaname) || "F".equals(areaname) || "G".equals(areaname); //检查是否完成生产入库报告 if (!bZK && bBQ) {//标签写入库存表 if (ncFlag) { String sql2 = "SELECT\r\n" + " BMS.LOTNAME MATERIALPACKINGNAME,\r\n" + " BMS.PRODUCTSPECNAME MATERIALSPECNAME,\r\n" + " BMS.PHASE ,BMS.SDK_ID,\r\n" + " SS.SPECNAME ,\r\n" + " m.DESC_CN ,\r\n" + " BMS.QTY MATERIALQUANTITY ,\r\n" + " BMS.REQUESTNAME RECEIVEREQUESTNAME ,\r\n" + " BMS.CHARGE, :ERPFACTORY ERPFACTORY, :ERPLOCATION ERPLOCATION, :LOCATIONNAME LOCATIONNAME\r\n" + "FROM\r\n" + " BS_MES_SHIPPED BMS LEFT JOIN MATERIALSPEC m ON m.MATERIALSPECNAME = BMS.PRODUCTSPECNAME \r\n" + " LEFT JOIN SDK_SPEC SS ON SS.SDK_ID = BMS.SDK_ID \r\n" + "WHERE\r\n" + " BMS.LOTNAME = :MATERIALPACKINGNAME\r\n" + " AND (BMS.RECEIVE_FLAG IS NULL\r\n" + " OR BMS.RECEIVE_FLAG <> 'Y')"; List> list2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql2, hashMap); if(list2.size() != 1) { return AjaxResult.me().setSuccess(false).setMessage("生产未完成入库,请联系IT处理!"); } String sdk_id = list2.get(0).get("SDK_ID").toString(); String phase = list2.get(0).get("PHASE").toString(); //根据入库信息获取完工报告 StringBuffer sql3 = new StringBuffer(); sql3.append(" "); sql3.append(" SELECT "); sql3.append(" M.RECEIVEREQUESTNAME, "); sql3.append(" M.RECEIVEREQUESTDETAILNAME "); sql3.append(" FROM "); sql3.append(" MATERIALRECEIVEREQUESTDETAIL M "); sql3.append(" WHERE "); sql3.append(" (M.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME "); sql3.append(" OR M.PRODUCTORDER = :RECEIVEREQUESTNAME "); sql3.append(" OR M.PLANORDER = :RECEIVEREQUESTNAME) "); sql3.append(" AND M.MATERIALSPECNAME = :MATERIALSPECNAME "); if (!"".equals(sdk_id) && !"~".equals(sdk_id)) { sql3.append(" AND SDK_ID = :SDK_ID "); } else { sql3.append(" AND SDK_ID is null "); } if (!"".equals(phase)) { sql3.append(" AND PHASE = :PHASE "); } else { sql3.append(" AND PHASE is null "); } sql3.append(" AND M.REQUESTQUANTITY - M.RECEIVEDQUANTITY > 0 "); hashMap.put("RECEIVEREQUESTNAME",list2.get(0).get("REQUESTNAME")); hashMap.put("MATERIALSPECNAME",list2.get(0).get("PRODUCTSPECNAME")); hashMap.put("PHASE",phase); hashMap.put("SDK_ID",sdk_id); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql3.toString(), hashMap); if (queryForList == null || queryForList.size() < 1) { throw new GlobalException("生产报告未完成,请联系IT处理!"); } try { // ProductIntoServiceImpl.receiveMesShippInfo(makeEventInfo, "SDK", materialpackingname, "", userId, // materialpackingname, "", erpLocation, erpFactory, locationName,queryForList.get(0).get("RECEIVEREQUESTNAME").toString(), queryForList.get(0).get("RECEIVEREQUESTDETAILNAME").toString(),""); } catch (Exception e) { e.printStackTrace(); return AjaxResult.me().setSuccess(false).setMessage(e.toString()); } } String pc = "('" + materialpackingname + "')"; if (ncFlag) { try { // boolean fgStockIn = ProductIntoServiceImpl.fgStockInBySplitCharge(pc, userId,commitDate,opCode); } catch (Exception e) { return AjaxResult.me().setSuccess(false). setMessage(e.toString()); } } } //创建搬送任务 detail.setTEMPERATURE(temperature); detail.setBAKINGDAYS(bakingdays); detail.setWEIGHT(width); detail.setDIAMETER(diameter); detail.setDEVIATION(deviation); detail.setWIDTH(width); detail.setPRODUCTLINE(productline); try { transportCommand = autoLibraryServiceImpl.createCommand(makeEventInfo,detail,"",transportCommand); } catch (CustomException e) { e.printStackTrace(); return AjaxResult.me().setSuccess(false). setMessage(e.toString()); } } if (bZK) {//标签在库 String transportCommandRequest = WCSServiceImpl.transportCommandRequest(transportCommand,userId); org.json.JSONObject jsonObject = new org.json.JSONObject(transportCommandRequest); String returnCode = jsonObject.get("RETURNCODE").toString(); if ("1".equals(returnCode)) { String message = jsonObject.get("RETURNMESSAGE").toString(); return AjaxResult.me().setSuccess(false). setMessage(message); } else { Map hashMap1 = new HashMap (); //循环更新库存表 String updateSql = "SELECT t.DURABLENAME ,t.PACKINGNAME,t.INDESTINATION, t.WIDTH,t.WEIGHT,t.DIAMETER,t.DEVIATION,t.PRODUCTLINE" + " FROM TRANSPORTCOMMANDDETAIL t WHERE t.TRANSPORTCOMMANDID = :TRANSPORTCOMMANDID"; Map hashMap = new HashMap (); hashMap.put("TRANSPORTCOMMANDID", transportCommand); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(updateSql, hashMap); for (Map map : queryForList) { String durablename = map.get("DURABLENAME") == null ? "" : map.get("DURABLENAME").toString(); String materialpackingname = map.get("PACKINGNAME") == null ? "" : map.get("PACKINGNAME").toString(); String areaname2 = map.get("INDESTINATION") == null ? "" : map.get("INDESTINATION").toString(); String width2 = map.get("WIDTH") == null ? "" : map.get("WIDTH").toString(); String weight2 = map.get("WEIGHT") == null ? "" : map.get("WEIGHT").toString(); String diameter2 = map.get("DIAMETER") == null ? "" : map.get("DIAMETER").toString(); String PRODUCTLINE = map.get("PRODUCTLINE") == null ? "" : map.get("PRODUCTLINE").toString(); hashMap1.put("durableName", durablename); hashMap1.put("areaName", areaname2); if (!"".equals(width2)) { hashMap1.put("WIDTH", width2); } if (!"".equals(deviation)) { hashMap1.put("DEVIATION", deviation); } if (!"".equals(weight2)) { hashMap1.put("WEIGHT", weight2); } if (!"".equals(diameter2)) { hashMap1.put("DIAMETER", diameter2); } if (!"".equals(PRODUCTLINE)) { hashMap1.put("PRODUCTLINE", PRODUCTLINE); } MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",materialpackingname); SetEventInfo setEventInfo = new SetEventInfo(); setEventInfo.setUserColumns(hashMap1); MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo); } } } else { autoLibraryServiceImpl.bqTransportRequest(transportCommand, userId, makeEventInfo); } return AjaxResult.me().setSuccess(true).setMessage("入立库成功"); } @ApiOperation("立体库出库") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/AutoStockOut", method = RequestMethod.POST) @Transactional public AjaxResult AutoStockOut(@RequestBody JSONObject in ){ AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String userId = m.getUserId(); // 获取用户 String sitename = m.getSITENAME(); String areaname = m.getAREANAME(); String aimAreaName = m.getAimAreaName(); // String commitDate = m.getCommitDate(); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("AutoStockOut",userId, "AutoStockOut"); String transportCommand = "TRANS"+new TimeUtils().getCurrentEventTimeKey(); List list = new ArrayList(); for(AutoLibraryDetailDto detail : m.getMATERIALPACKINGNAME()) { // detail.setDURABLENAME(m.getDurableName()); // String materialpackingname = detail.getMATERIALPACKINGNAME(); // String areaname2 = detail.getAREANAME(); String trayname = detail.getTRAYNAME(); String durablename = detail.getDURABLENAME(); if (trayname == null || "".equals(trayname)) { detail.setTRAYNAME(durablename); } // detail.setTRAYNAME(durablename); //修改Materialpacking 信息 MaterialPackingKey mp=new MaterialPackingKey(sitename,detail.getMATERIALPACKINGNAME()); list.add(mp); //熟化库出库-》下发WCS try { transportCommand = autoLibraryServiceImpl.createCommand(makeEventInfo,detail,m.getAREANAME(),transportCommand); } catch (CustomException e) { e.printStackTrace(); } } String transportCommandRequest = WCSServiceImpl.transportCommandRequest(transportCommand,userId); org.json.JSONObject jsonObject = new org.json.JSONObject(transportCommandRequest); String returnCode = jsonObject.get("RETURNCODE").toString(); if ("1".equals(returnCode)) { String message = jsonObject.get("RETURNMESSAGE").toString(); return AjaxResult.me().setSuccess(false). setMessage(message); } else { Map hashMap1 = new HashMap (); //循环更新库存表 String updateSql = "SELECT t.DURABLENAME ,t.PACKINGNAME,t.OUTDESTINATION, t.WIDTH,t.WEIGHT,t.DIAMETER,t.DEVIATION,t.PRODUCTLINE" + " FROM TRANSPORTCOMMANDDETAIL t WHERE t.TRANSPORTCOMMANDID = :TRANSPORTCOMMANDID"; Map hashMap = new HashMap (); hashMap.put("TRANSPORTCOMMANDID", transportCommand); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(updateSql, hashMap); for (Map map : queryForList) { String durablename = map.get("DURABLENAME") == null ? "" : map.get("DURABLENAME").toString(); String materialpackingname = map.get("PACKINGNAME") == null ? "" : map.get("PACKINGNAME").toString(); String areaname2 = map.get("OUTDESTINATION") == null ? "" : map.get("OUTDESTINATION").toString(); hashMap1.put("durableName", durablename); hashMap1.put("areaName", areaname2); MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",materialpackingname); SetEventInfo setEventInfo = new SetEventInfo(); setEventInfo.setUserColumns(hashMap1); MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo); } } // //熟化库出库-》NC过账 // if ("C".equals(areaname)) { // List MaterialPackingList = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(list); //// noInvoiceManagerServiceImpl.QTC(MaterialPackingList, userId,"SDK"); // } return AjaxResult.me().setSuccess(true).setMessage("出立库成功"); } /** * 查询待出立库明细 * @param in * @return */ @ApiOperation("查询待出立库明细") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/getPreStockOutByAuto", method = RequestMethod.POST) public AjaxResult getPreStockOutByAuto(@RequestBody JSONObject in ){ AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String areaname = m.getAREANAME(); String shipRequestName = m.getShipRequestName(); String materialSpecName = m.getMaterialSpecName(); String sdk_id = m.getSDK_ID(); StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append(" "); stringBuffer.append(" SELECT "); stringBuffer.append(" m.MATERIALPACKINGNAME ,m.MATERIALSPECNAME,m.SHELFNAME, m2.DESC_CN,a.DESCRIPTION,m.AREANAME,m.DURABLENAME TRAYNAME,"); stringBuffer.append(" m.CHARGE , m.WIDTH ,m.PRODUCTLINE,m.WEIGHT,m.DIAMETER,m.DEVIATION ,m.STOCKSTATE,"); stringBuffer.append(" m.MATERIALQUANTITY , "); stringBuffer.append(" m2.DESCRIPTION , "); stringBuffer.append(" ss.SPECNAME , "); stringBuffer.append(" be.DESCRIPTION ERPLOCATION , "); stringBuffer.append(" s.DESCRIPTION LOCATIONNAME, "); stringBuffer.append(" m.SHIPREQUESTNAME "); stringBuffer.append(" FROM "); stringBuffer.append(" MATERIALPACKING m "); stringBuffer.append(" LEFT JOIN SDK_SPEC ss ON "); stringBuffer.append(" m.SDK_ID = ss.SDK_ID "); stringBuffer.append(" LEFT JOIN MATERIALSPEC m2 ON "); stringBuffer.append(" m.MATERIALSPECNAME = m2.MATERIALSPECNAME "); stringBuffer.append(" LEFT JOIN BS_ERPLOCATION be ON "); stringBuffer.append(" m.ERPLOCATION = be.ERPLOCATIONNAME "); stringBuffer.append(" LEFT JOIN STORAGESPEC s ON "); stringBuffer.append(" s.ERPLOCATION = m.ERPLOCATION AND s.ERPFACTORY = m.ERPFACTORY "); stringBuffer.append(" AND m.LOCATIONNAME = s.STORAGENAME "); stringBuffer.append(" LEFT JOIN AREA a ON m.AREANAME = a.AREANAME"); stringBuffer.append(" WHERE 1 = 1 "); if (!"".equals(shipRequestName) && shipRequestName != null) { stringBuffer.append(" AND SHIPREQUESTNAME IS NOT NULL "); } stringBuffer.append(" AND (:MATERIALSPECNAME IS NULL OR m.MATERIALSPECNAME = :MATERIALSPECNAME) "); stringBuffer.append(" AND (:SDK_ID IS NULL OR m.SDK_ID = :SDK_ID) "); stringBuffer.append(" AND m.AREANAME = :AREANAME "); stringBuffer.append(" AND m.DURABLENAME IS NOT NULL"); stringBuffer.append(" AND m.SHELFNAME IS NOT NULL AND (m.StockState = 'Stocked' OR m.StockState = 'StockOut') "); Map hashMap = new HashMap (); hashMap.put("AREANAME", areaname); hashMap.put("MATERIALSPECNAME", materialSpecName); hashMap.put("SDK_ID", sdk_id); List> queryForList = null; queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(stringBuffer.toString(), hashMap); if (queryForList == null || queryForList.size() < 1) { StringBuffer stringBuffer2 = new StringBuffer(); stringBuffer2.append(" "); stringBuffer2.append(" SELECT "); stringBuffer2.append(" m.LOTNAME MATERIALPACKINGNAME , "); stringBuffer2.append(" m.PRODUCTSPECNAME MATERIALSPECNAME, "); stringBuffer2.append(" m.LK_SHELFNAME SHELFNAME, "); stringBuffer2.append(" m2.DESC_CN, "); stringBuffer2.append(" a.DESCRIPTION, "); stringBuffer2.append(" m.LK_AREANAME AREANAME, "); stringBuffer2.append(" m.LK_DURABLENAME TRAYNAME, "); stringBuffer2.append(" m.CHARGE , "); stringBuffer2.append(" m.LK_WIDTH , "); stringBuffer2.append(" m.LK_PRODUCTLINE PRODUCTLINE, "); stringBuffer2.append(" m.LK_WEIGHT WEIGHT, "); stringBuffer2.append(" m.LK_DIAMETER DIAMETER, "); stringBuffer2.append(" m.LK_DEVIATION DEVIATION , "); stringBuffer2.append(" 'StockOut' STOCKSTATE, "); stringBuffer2.append(" m.QTY MATERIALQUANTITY , "); stringBuffer2.append(" m2.DESCRIPTION , "); stringBuffer2.append(" ss.SPECNAME , "); stringBuffer2.append(" '' ERPLOCATION , "); stringBuffer2.append(" '' LOCATIONNAME "); stringBuffer2.append(" FROM "); stringBuffer2.append(" BS_MES_SHIPPED m "); stringBuffer2.append(" LEFT JOIN SDK_SPEC ss ON "); stringBuffer2.append(" m.SDK_ID = ss.SDK_ID "); stringBuffer2.append(" LEFT JOIN MATERIALSPEC m2 ON "); stringBuffer2.append(" m.PRODUCTSPECNAME = m2.MATERIALSPECNAME "); stringBuffer2.append(" LEFT JOIN AREA a ON "); stringBuffer2.append(" m.LK_AREANAME = a.AREANAME "); stringBuffer2.append(" WHERE "); stringBuffer2.append(" 1 = 1 "); stringBuffer2.append(" AND (:MATERIALSPECNAME IS NULL "); stringBuffer2.append(" OR m.PRODUCTSPECNAME = :MATERIALSPECNAME) "); stringBuffer2.append(" AND (:SDK_ID IS NULL "); stringBuffer2.append(" OR m.SDK_ID = :SDK_ID) "); stringBuffer2.append(" AND m.LK_AREANAME = :AREANAME "); stringBuffer2.append(" AND m.LK_DURABLENAME IS NOT NULL "); stringBuffer2.append(" AND m.LK_SHELFNAME IS NOT NULL "); queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(stringBuffer2.toString(), hashMap); } return AjaxResult.me().setResultObj(queryForList); } /** * 获取出货Port口 * @param in * @return */ @ApiOperation("获取port口") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/getPort", method = RequestMethod.POST) public AjaxResult getPort(@RequestBody JSONObject in ){ AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String areaname = m.getAREANAME(); StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append(" SELECT PORTNO,PORTNAME FROM PORT WHERE AREANAME = :AREANAME "); Map hashMap = new HashMap (); hashMap.put("AREANAME", areaname); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(stringBuffer.toString(), hashMap); return AjaxResult.me().setResultObj(queryForList); } @ApiOperation("获取FG信息") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/getFGInfo", method = RequestMethod.POST) public AjaxResult getFGInfo(@RequestBody JSONObject in ){ AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String barCode = m.getBarCode(); String durableName = m.getDurableName(); String zkSql = "SELECT\r\n" + " m.MATERIALPACKINGNAME ,\r\n" + " m.CHARGE,\r\n" + " M2.MATURATIONTIME ,\r\n" + " :DURABLENAME DURABLENAME,\r\n" + " :DURABLENAME TRAYNAME\r\n" + "FROM\r\n" + " MATERIALPACKING m\r\n" + "LEFT JOIN MATERIALSPEC M2 ON\r\n" + " m.MATERIALSPECNAME = M2.MATERIALSPECNAME\r\n" + "WHERE\r\n" + " AREANAME IS NULL\r\n" + " AND SHELFNAME IS NULL\r\n" + " AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; String bqSql = "SELECT\r\n" + " bms.LOTNAME MATERIALPACKINGNAME,\r\n" + " bms.CHARGE,\r\n" + " M2.MATURATIONTIME ,\r\n" + " :DURABLENAME DURABLENAME,\r\n" + " :DURABLENAME TRAYNAME\r\n" + "FROM\r\n" + " BS_MES_SHIPPED bms\r\n" + "LEFT JOIN MATERIALSPEC M2 ON\r\n" + " bms.PRODUCTSPECNAME = M2.MATERIALSPECNAME\r\n" + "WHERE\r\n" + " bms.LOTNAME = :MATERIALPACKINGNAME"; Map hashMap = new HashMap (); hashMap.put("MATERIALPACKINGNAME", barCode); hashMap.put("DURABLENAME", durableName); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(zkSql, hashMap); if (queryForList == null || queryForList.size() < 1) { queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(bqSql, hashMap); if (queryForList == null || queryForList.size() < 1) { return AjaxResult.me().setSuccess(false) .setMessage("批次不在库或未完成打标签"); } } //判断管芯是否已在库绑定 String sql = "SELECT M.MATERIALPACKINGNAME FROM MATERIALPACKING m WHERE DURABLENAME = :DURABLENAME AND AREANAME <> 'E' "; List> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); if (queryForList2 != null && queryForList2.size() > 0) { String string = queryForList2.get(0).get("MATERIALPACKINGNAME").toString(); return AjaxResult.me().setSuccess(false) .setMessage("管芯已在" + string); } return AjaxResult.me().setResultObj(queryForList); } @ApiOperation("绑定Tray") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/assignTryByBox", method = RequestMethod.POST) public AjaxResult assignTryByBox(@RequestBody JSONObject in ){ AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String barCode = m.getBarCode(); String durableName = m.getDurableName(); String userId = m.getUserId(); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("AssignTryByBox", userId, "AssignTryByBox"); try { autoLibraryServiceImpl.checkDurable(durableName); autoLibraryServiceImpl.assignTryByBox(makeEventInfo, durableName, "SDK", barCode); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return AjaxResult.me().setSuccess(false).setMessage("绑定失败"); } return AjaxResult.me().setSuccess(true).setMessage("绑定成功"); } @ApiOperation("解绑Tray") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/deassignTryByBox", method = RequestMethod.POST) public AjaxResult deassignTryByBox(@RequestBody JSONObject in ){ AutoLibraryDto m = JSON.toJavaObject(in, AutoLibraryDto.class); String barCode = m.getBarCode(); String durableName = m.getDurableName(); String userId = m.getUserId(); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("DeassignTryByBox", userId, "DeassignTryByBox"); try { autoLibraryServiceImpl.checkDurable(durableName); autoLibraryServiceImpl.deassignTryByBox(makeEventInfo, durableName, "SDK", barCode); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return AjaxResult.me().setSuccess(false).setMessage(e.toString()); } return AjaxResult.me().setSuccess(true).setMessage("解绑成功"); } @ApiOperation("获取搬送口") @ApiResponses(value = { @ApiResponse(code = 200, message = "成功响应", response = ApiResponse.class), @ApiResponse(code = 400, message = "请求参数错误"), @ApiResponse(code = 500, message = "服务器内部错误") }) @RequestMapping(value = "/GetLiberaryBaeIn", method = RequestMethod.POST) public AjaxResult GetLiberaryBaeIn(@RequestBody JSONObject in ){ String sqlString = " SELECT ENUMVALUE AS value,DESCRIPTION AS label FROM ENUMDEFVALUE e WHERE ENUMNAME='LibraryBaseIn'"; HashMap hashMap = new HashMap(); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlString, hashMap); return AjaxResult.me().setSuccess(true).setMessage("查询成功").setResultObj(queryForList); } }