2025-03-20 20:18:08 +08:00

695 lines
32 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<MaterialPackingKey> list = new ArrayList<MaterialPackingKey>();
String transportCommand = "TRANS"+new TimeUtils().getCurrentEventTimeKey();
for(AutoLibraryDetailDto detail : m.getMATERIALPACKINGNAME())
{
//修改Materialpacking 信息
Map<String, Object> bindMap = new HashMap<String, Object>();
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<MaterialPackingKey> list = new ArrayList<MaterialPackingKey>();
String transportCommand = "TRANS"+new TimeUtils().getCurrentEventTimeKey();
for(AutoLibraryDetailDto detail : m.getMATERIALPACKINGNAME())
{
//修改Materialpacking 信息
Map<String, Object> bindMap = new HashMap<String, Object>();
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<MaterialPacking> 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<AutoLibraryDetailDto> 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<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("MATERIALPACKINGNAME", materialpackingname);
hashMap.put("ERPFACTORY", erpFactory);
hashMap.put("ERPLOCATION", erpLocation);
hashMap.put("LOCATIONNAME", locationName);
List<Map<String, Object>> judgeZK = IDMFrameServiceProxy.getSqlTemplate().queryForList(judgeZKSql, hashMap);
List<Map<String, Object>> 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<Map<String,Object>> 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<Map<String, Object>> 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<String, Object> hashMap1 = new HashMap<String,Object> ();
//循环更新库存表
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<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("TRANSPORTCOMMANDID", transportCommand);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(updateSql, hashMap);
for (Map<String, Object> 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<MaterialPackingKey> list = new ArrayList<MaterialPackingKey>();
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<String, Object> hashMap1 = new HashMap<String,Object> ();
//循环更新库存表
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<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("TRANSPORTCOMMANDID", transportCommand);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(updateSql, hashMap);
for (Map<String, Object> 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<MaterialPacking> 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<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("AREANAME", areaname);
hashMap.put("MATERIALSPECNAME", materialSpecName);
hashMap.put("SDK_ID", sdk_id);
List<Map<String, Object>> 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<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("AREANAME", areaname);
List<Map<String, Object>> 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<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("MATERIALPACKINGNAME", barCode);
hashMap.put("DURABLENAME", durableName);
List<Map<String, Object>> 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<Map<String, Object>> 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<String,Object> hashMap = new HashMap<String,Object>();
List<Map<String,Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlString, hashMap);
return AjaxResult.me().setSuccess(true).setMessage("查询成功").setResultObj(queryForList);
}
}