695 lines
32 KiB
Java
695 lines
32 KiB
Java
![]() |
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);
|
|||
|
}
|
|||
|
|
|||
|
}
|