fix:修改退料

This commit is contained in:
郭飞 2025-03-14 16:35:52 +08:00
parent f6821719de
commit 06e7015374
5 changed files with 477 additions and 44 deletions

View File

@ -4310,7 +4310,8 @@ public class ToSAPServiceImpl {
" T.MATERIALSPECNAME,T.UNIT,PACKINGGRADE "; " T.MATERIALSPECNAME,T.UNIT,PACKINGGRADE ";
Map<String, Object> hashMap = new HashMap<String, Object>(); Map<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("SITENAME", siteName); hashMap.put("SITENAME", siteName);
hashMap.put("SHIPREQUESTNAME", shipRequestName); // hashMap.put("SHIPREQUESTNAME", shipRequestName);
hashMap.put("SHIPREQUESTNAME", opCode);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap); List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap);
//根据不同的类型进行处理 //根据不同的类型进行处理
String makeReturnStockIn = makeReturnStockIn(queryForList, eventUser); String makeReturnStockIn = makeReturnStockIn(queryForList, eventUser);

View File

@ -0,0 +1,392 @@
package com.cim.idm.controller;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import com.cim.idm.exception.GlobalException;
import com.cim.idm.model.MaterialReceiveRequest;
import com.cim.idm.model.ShelfDto;
import com.cim.idm.utils.AjaxResult;
import com.cim.idm.utils.CommonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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 com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking;
import io.swagger.annotations.Api;
@Api("已批次管理入库")
@RestController
@RequestMapping("/api/NoInvoice")
@EnableAutoConfiguration
public class NoInvoiceManagerContoller {
// @Autowired
// NoInvoiceManagerServiceImpl NoInvoiceManagerServiceImpl;
CommonUtils untils=new CommonUtils();
/**
* 获取其他待入集合
* @param in
* @return
*/
@RequestMapping(value = "/getBarCode", method = RequestMethod.POST)
public AjaxResult getQTRList(@RequestBody JSONObject in ){
MaterialPacking m = JSON.toJavaObject(in, MaterialPacking.class);
String materialPackingName = m.getMaterialPackingName();
String locationName = m.getLocationName();
String erpFactory = m.getErpFactory();
String erpLocation = m.getErpLocation();
String createUser = m.getCreateUser();
String[] split = materialPackingName.split("\\|");
// 470110856|1|C|75mm*1000m|SHBP01JT1202305240009|20230524|11|75
String materialSpecName = split[0];
String phase = split[2];
String specName = split[3];
String charge = split[4];
String makeDate = split[5];
String unit = split[6];
String qty = split[7];
//恒温恒湿管控
if(!(untils.JudgeMentERPLocationAndMaterialSpec(erpLocation,materialSpecName)))
{
throw new GlobalException("物料为:"+materialSpecName+" 仓库为:"+erpLocation+" ,不符合恒温恒湿管理");
}
Map<String, Object> expridate = getExpridate(makeDate, materialSpecName);
String sql = "SELECT STOCKSTATE, MAKEDATE, EXPIRINGDATE, CHARGE, MATERIALQUANTITY, ERPFACTORY,ERPLOCATION,SUPPLIERNAME,LOCATIONNAME,SDK_ID,PHASE,MATERIALSPECNAME FROM MATERIALPACKING WHERE ((MATERIALSPECNAME = :MATERIALSPECNAME AND CHARGE = :CHARGE) OR MATERIALPACKINGNAME = :MATERIALPACKINGNAME) ";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("MATERIALSPECNAME", materialSpecName);
hashMap.put("CHARGE", charge);
hashMap.put("MATERIALPACKINGNAME", materialPackingName);
List<Map<String,Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
if (queryForList == null || queryForList.size() < 1) {
throw new GlobalException("录入批次系统未在系统流转");
}
if ("Stocked".equals(queryForList.get(0).get("STOCKSTATE").toString())) {
throw new GlobalException("录入批次在库");
}
String packingGrade = queryForList.get(0).get("OQARESULT") == null ? "" : queryForList.get(0).get("OQARESULT").toString();
Boolean judgeMtaerialStateWithERPLocation = untils.JudgeMtaerialStateWithERPLocation(erpLocation, packingGrade);
if (!judgeMtaerialStateWithERPLocation) {
throw new GlobalException("仓库类型和物料品质等级不一致");
}
List<Map<String, Object>> arrayList = new ArrayList<Map<String,Object>> ();
Map<String,Object> map = new HashMap<String,Object> ();
map.put("MATERIALPACKINGNAME", materialPackingName);
map.put("MATERIALSPECNAME", queryForList.get(0).get("MATERIALSPECNAME") == null ? "" : queryForList.get(0).get("MATERIALSPECNAME") .toString());
map.put("CHARGE", queryForList.get(0).get("CHARGE") == null ? "" : queryForList.get(0).get("CHARGE") .toString());
map.put("PHASE", phase);
map.put("MATERIALQUANTITY", queryForList.get(0).get("MATERIALQUANTITY") == null ? "" : queryForList.get(0).get("MATERIALQUANTITY") .toString());
map.put("SPECNAME", specName);
map.put("LOCATIONNAME", locationName);
map.put("ERPFACTORY", erpFactory);
map.put("ERPLOCATION", erpLocation);
map.put("SDK_ID", queryForList.get(0).get("SDK_ID") == null ? "" : queryForList.get(0).get("SDK_ID") .toString());
// if (expridate != null) {
// map.put("MAKEDATE", makeDate);
// map.put("EXPRIDATE", expridate);
// }
map.put("MAKEDATE", queryForList.get(0).get("MAKEDATE") == null ? "" : queryForList.get(0).get("MAKEDATE") .toString());
map.put("EXPIRINGDATE", queryForList.get(0).get("EXPIRINGDATE") == null ? "" : queryForList.get(0).get("EXPIRINGDATE") .toString());
arrayList.add(map);
return AjaxResult.me().setResultObj(arrayList);
}
/**
* 获取其他待出接口
* @param in
* @return
*/
@RequestMapping(value = "/getQTCList", method = RequestMethod.POST)
public AjaxResult getQTCList(@RequestBody JSONObject in ){
MaterialPacking materialPacking = JSON.toJavaObject(in, MaterialPacking.class);
String sql = "SELECT\r\n" +
" M.*,\r\n" +
" CASE\r\n" +
" WHEN M.MATURATIONINTIME IS NOT NULL THEN SYSDATE - M.MATURATIONINTIME - m2.MATURATIONTIME\r\n" +
" ELSE 1\r\n" +
" END FLAG\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" +
" M.STOCKSTATE = 'Stocked'\r\n" +
" AND M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME ";
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("MATERIALPACKINGNAME", materialPacking.getMaterialPackingName());
List<Map<String,Object>> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bindMap);
if(Objects.isNull(list) || list.isEmpty()) {
throw new GlobalException("未找到对应的数据!");
}
if(!Objects.isNull(list) && !list.isEmpty()) {
String string = list.get(0).get("FLAG").toString();
float parseFloat = Float.parseFloat(string);
float abs = Math.abs(parseFloat);
if (parseFloat < 0) {
throw new GlobalException("还差" + abs + "天才能熟化出库!");
}
}
return AjaxResult.me().setResultObj(list);
}
/**
* 其他出提交
* @param in
* @return
*/
@RequestMapping(value = "/QTCCommit", method = RequestMethod.POST)
public AjaxResult QTCCommit(@RequestBody JSONObject in ){
// List<MaterialPacking> object = (List<MaterialPacking>) in.get("boxList");
MaterialReceiveRequest sl = JSON.toJavaObject(in, MaterialReceiveRequest.class);
List<MaterialPacking> boxList = sl.getBoxList();
String user2 = sl.getUser();
String siteName = sl.getSiteName();
String user = in.get("user").toString();
String commitDatesString = sl.getCommitDate();
String commitDate = commitDatesString + " 00:00:00";
String opCode = sl.getOpCode();
// MaterialPacking selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(new MaterialPackingKey("SDK", "311110026|1|C|75mm*1000m|3111100268001421|20230524|11|75"));
// ArrayList<MaterialPacking> arrayList = new ArrayList<>();
// arrayList.add(selectByKey);
// NoInvoiceManagerServiceImpl.QTC(boxList,user,siteName,commitDate,opCode);
return AjaxResult.me().setResultObj(null);
}
@RequestMapping(value = "/QTRCommit", method = RequestMethod.POST)
public AjaxResult QTCRommit(@RequestBody JSONObject in ) throws ParseException{
MaterialReceiveRequest sl = JSON.toJavaObject(in, MaterialReceiveRequest.class);
String commitDateString = sl.getCommitDate();
List<MaterialPacking> boxList = sl.getBoxList();
String user2 = sl.getUser();
String opCode = sl.getOpCode();
// ArrayList<MaterialPacking> arrayList = new ArrayList<>();
// arrayList.add(selectByKey);
String commitDate = commitDateString + " 00:00:00";
// NoInvoiceManagerServiceImpl.QTR(boxList,user2,commitDate,opCode);
return AjaxResult.me().setResultObj(null);
}
@RequestMapping(value = "/getChangeLocationBarCode", method = RequestMethod.POST)
public AjaxResult getChangeLocationBarCode(@RequestBody JSONObject in ){
MaterialPacking m = JSON.toJavaObject(in, MaterialPacking.class);
String materialPackingName = m.getMaterialPackingName();
String locationName = m.getLocationName();
String erpFactory = m.getErpFactory();
String erpLocation = m.getErpLocation();
String supplierCharge = m.getSupplierCharge();
String createUser = m.getCreateUser();
String[] split = materialPackingName.split("\\|");
// 470110856|1|C|75mm*1000m|SHBP01JT1202305240009|20230524|11|75
String materialSpecName = split[0];
// String phase = split[2];
String specName = split[3];
// String charge = split[4];
// String makeDate = split[5];
// String unit = split[6];
// String qty = split[7];
// String materialSpecName=m.getMaterialSpecName();
if (erpFactory == null || "".equals(erpFactory)) {
throw new GlobalException("组织不能为空!");
}
if (erpLocation == null || "".equals(erpLocation)) {
throw new GlobalException("仓库不能为空!");
}
if (locationName == null || "".equals(locationName)) {
throw new GlobalException("货位不能为空!");
}
//判断货位是否在同一个ERP组织下
String sql = "SELECT PACKINGGRADE,CHARGE, MATERIALQUANTITY, ERPFACTORY,ERPLOCATION,SUPPLIERNAME,LOCATIONNAME,SDK_ID,PHASE,MATERIALSPECNAME FROM MATERIALPACKING M WHERE M.STOCKSTATE = 'Stocked' AND M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME ";
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("MATERIALPACKINGNAME", materialPackingName);
List<Map<String,Object>> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bindMap);
if(Objects.isNull(list) || list.isEmpty()) {
throw new GlobalException("未找到对应的数据!该标签为空或者不为在库状态");
}
// 良品与不良品与仓校验
String packingGrade = list.get(0).get("PACKINGGRADE") == null ? "" : list.get(0).get("PACKINGGRADE").toString();
Boolean judgeMtaerialStateWithERPLocation = untils.JudgeMtaerialStateWithERPLocation(erpLocation, packingGrade);
if (!judgeMtaerialStateWithERPLocation) {
throw new GlobalException("仓库类型和物料品质等级不一致");
}
if ("101".equals(erpFactory) || "102".equals(erpFactory)) {
if ("OK".equals(packingGrade)) {
//恒温恒湿管控
if (!(untils.JudgeMentERPLocationAndMaterialSpec(erpLocation, materialSpecName))) {
throw new GlobalException("物料为:" + materialSpecName + " 仓库为:" + erpLocation + " ,不符合恒温恒湿管理");
}
}
}
//判断是否需要绑定供应商
String SupSql="SELECT ASSFLAG FROM SUPPLIER s WHERE SUPPLIERNO =:SUPPLIERNO";
Map<String, Object> bindMap2 = new HashMap<String, Object>();
bindMap2.put("SUPPLIERNO", list.get(0).get("SUPPLIERNAME") == null ? "" : list.get(0).get("SUPPLIERNAME").toString());
List<Map<String,Object>> list2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(SupSql, bindMap2);
if (list2 == null || list2.size() < 1) {
} else {
String flag = list2.get(0).get("ASSFLAG") == null ? "N" : list2.get(0).get("ASSFLAG").toString();
if("Y".equals(flag) && ("".equals(supplierCharge) || supplierCharge == null ))
{
throw new GlobalException("需要绑定供应商批次!");
}
}
if (!erpFactory.equals(list.get(0).get("ERPFACTORY").toString()) || !erpLocation.equals(list.get(0).get("ERPLOCATION").toString()) ) {
throw new GlobalException("目标仓库与组织与原库存不一致!组织:"+erpFactory+"库存组织:"+list.get(0).get("ERPFACTORY").toString()+"仓库:"+erpLocation+"目标仓库:"+list.get(0).get("ERPLOCATION").toString());
}
String preLocation = list.get(0).get("LOCATIONNAME") == null ? "" : list.get(0).get("LOCATIONNAME").toString();
if (list.get(0).get("LOCATIONNAME") != null && locationName.equals(preLocation) ) {
throw new GlobalException("货位一致不需要调整");
}
List<Map<String, Object>> arrayList = new ArrayList<Map<String,Object>> ();
Map<String,Object> map = new HashMap<String,Object> ();
map.put("MATERIALPACKINGNAME", materialPackingName);
map.put("MATERIALSPECNAME", list.get(0).get("MATERIALSPECNAME"));
map.put("CHARGE", list.get(0).get("CHARGE"));
map.put("PHASE", list.get(0).get("PHASE"));
map.put("SUPPLIERCHARGE", supplierCharge);
map.put("MATERIALQUANTITY", list.get(0).get("MATERIALQUANTITY"));
map.put("SPECNAME", specName);
map.put("LOCATIONNAME", locationName);
map.put("PRELOCATIONNAME", preLocation);
map.put("ERPFACTORY", erpFactory);
map.put("ERPLOCATION", erpLocation);
// map.put("SUPPLIERCHARGE", supplierCharge);
map.put("SDK_ID", list.get(0).get("SDK_ID") == null ? "" : list.get(0).get("SDK_ID").toString());
arrayList.add(map);
return AjaxResult.me().setResultObj(arrayList);
}
@RequestMapping(value = "/getSupplierChargeByPakingname", method = RequestMethod.POST)
public AjaxResult getSupplierChargeByPakingname(@RequestBody JSONObject in ){
MaterialPacking m = JSON.toJavaObject(in, MaterialPacking.class);
String materialPackingName = m.getMaterialPackingName();
String siteName = "SDK";
String sql = "SELECT\n" +
"\tm.MATERIALPACKINGNAME ,\n" +
"\tm.SUPPLIERCHARGE\n" +
"FROM\n" +
"\tMATERIALPACKING m\n" +
"WHERE\n" +
"\tm.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\n" +
"\tAND m.SITENAME = :SITENAME";
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("MATERIALPACKINGNAME", materialPackingName);
bindMap.put("SITENAME", siteName);
List<Map<String,Object>> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bindMap);
String supplierCharge = "";
if(list != null && list.size() > 0){
for(Map<String,Object> map : list) {
supplierCharge = map.get("SUPPLIERCHARGE") == null ? "" : map.get("SUPPLIERCHARGE").toString();
if(supplierCharge == null) {
return AjaxResult.me().setSuccess(false).setMessage("当前批次之前未绑定供应商批次,请确认");
}
}
} else {
return AjaxResult.me().setSuccess(false).setMessage("条码不存在");
}
List<Map<String, Object>> arrayList = new ArrayList<Map<String,Object>> ();
Map<String,Object> map = new HashMap<String,Object> ();
map.put("MATERIALPACKINGNAME", materialPackingName);
map.put("SUPPLIERCHARGE", supplierCharge);
arrayList.add(map);
return AjaxResult.me().setSuccess(true).setResultObj(arrayList);
}
/**
* 货位移动
* @param in
* @return
*/
@RequestMapping(value = "/ChangeLocation", method = RequestMethod.POST)
public AjaxResult ChangeLocation(@RequestBody JSONObject in ){
// com.zxy.idm.wms.solution.model.MaterialPacking materialPacking = JSON.toJavaObject(in, ShelfDto.class);
ShelfDto ShelfDto = JSON.toJavaObject(in, ShelfDto.class);
String siteName = ShelfDto.getSiteName();
String user = ShelfDto.getUser();
String commitDateString = ShelfDto.getCommitDate();
String opCode = ShelfDto.getOpCode();
String commitDate = commitDateString + " 00:00:00";
// List<MaterialPackingKey> list1 = new ArrayList<> ();
// for (MaterialPacking materialPacking : ShelfDto.getBoxList()) {
// MaterialPackingKey materialPackingKey;
// materialPackingKey = new MaterialPackingKey();
// materialPackingKey.setSiteName(siteName);
// materialPackingKey.setMaterialPackingName(materialPacking.getMaterialPackingName());
// list1.add(materialPackingKey);
// }
// List<MaterialPacking> selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(list1);
// ArrayList<MaterialPacking> arrayList = new ArrayList<>();
// arrayList.add(selectByKey);
// NoInvoiceManagerServiceImpl.PDAShelf(ShelfDto.getBoxList(),user,commitDate,opCode);
// String SelectSql="SELECT m.MATERIALSPECNAME ,m2.DESC_CN ,m2.DESCRIPTION ,m.PHASE,m.CHARGE,m.MATERIALQUANTITY FROM MATERIALPACKING m LEFT JOIN MATERIALSPEC m2 ON m.MATERIALSPECNAME =m2.MATERIALSPECNAME WHERE m.MATERIALPACKINGNAME =:MATERIALPACKINGNAME";
// Map<String, Object> bindMap3 = new HashMap<String, Object>();
// bindMap3.put("MATERIALPACKINGNAME", materialPackingName);
// List<Map<String,Object>> list3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(SelectSql, bindMap3);
return AjaxResult.me().setResultObj(null);
}
/**
* 批次换绑供应商批次
*/
@RequestMapping(value = "/ChangeSupplierCharge", method = RequestMethod.POST)
public AjaxResult ChangeSupplierCharge(@RequestBody JSONObject in ){
ShelfDto ShelfDto = JSON.toJavaObject(in, ShelfDto.class);
String user = ShelfDto.getUser();
// NoInvoiceManagerServiceImpl.ChangeChargeName(ShelfDto.getBoxList(),user);
return AjaxResult.me().setResultObj(null);
}
public static Map<String,Object> getExpridate(String makeDate,String materialSpecName) {
String sql = "SELECT TO_TIMESTAMP(:MAKEDATE,'YYYYMMDD') MAKEDATE, NVL(T.EXPIRATIONDAY,180) + TO_TIMESTAMP(:MAKEDATE,'YYYYMMDD') EXP FROM MATERIALSPEC T WHERE T.MATERIALSPECNAME = :MATERIALSPECNAME";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("MATERIALSPECNAME", materialSpecName);
hashMap.put("MAKEDATE", makeDate);
List<Map<String,Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
if (queryForList != null && queryForList.size() > 0) {
HashMap<String, Object> hashMap2 = new HashMap<String, Object> ();
hashMap2.put("MAKEDATE", queryForList.get(0).get("MAKEDATE"));
hashMap2.put("EXP", queryForList.get(0).get("EXP"));
return new HashMap<String, Object> ();
}
return null;
}
}

View File

@ -125,20 +125,34 @@ public class ProduceReturnController {
} }
//判断入库组织与接收组织是否一致 //判断入库组织与接收组织是否一致
String ftySql = "SELECT DISTINCT M.SHIPREQUESTNAME,mt.ERPRECEIVEFACTORY,M.REQUESTQUANTITY,M.ASSIGNEDQUANTITY,M.MATERIALSPECNAME,M.PHASE,M.SDK_ID \n" + // String ftySql = "SELECT DISTINCT M.SHIPREQUESTNAME,mt.ERPRECEIVEFACTORY,M.REQUESTQUANTITY,M.ASSIGNEDQUANTITY,M.MATERIALSPECNAME,M.PHASE,M.SDK_ID \n" +
"FROM MATERIALSHIPREQUEST mt\n" + // "FROM MATERIALSHIPREQUEST mt\n" +
"LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = mt.SHIPREQUESTNAME \n" + // "LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = mt.SHIPREQUESTNAME \n" +
"WHERE (M.RETURNNO = :SOURCEORDER OR M.SHIPREQUESTNAME = :SOURCEORDER)\n" + // "WHERE (M.RETURNNO = :SOURCEORDER OR M.SHIPREQUESTNAME = :SOURCEORDER)\n" +
"AND M.MATERIALSPECNAME = :PRODUCTSPECNAME"; // "AND M.MATERIALSPECNAME = :PRODUCTSPECNAME";
String receiveRequestName = list2.get(0).get("RECEIVEREQUESTNAME") == null ? "" : list2.get(0).get("RECEIVEREQUESTNAME").toString(); String receiveRequestName = list2.get(0).get("RECEIVEREQUESTNAME") == null ? "" : list2.get(0).get("RECEIVEREQUESTNAME").toString();
String materialspecName = list2.get(0).get("MATERIALSPECNAME") == null ? "" : list2.get(0).get("MATERIALSPECNAME").toString(); String materialspecName = list2.get(0).get("MATERIALSPECNAME") == null ? "" : list2.get(0).get("MATERIALSPECNAME").toString();
String ftySql;
if(receiveRequestName.contains("DC")) {
ftySql ="SELECT DISTINCT M.SHIPREQUESTNAME,mt.ERPRECEIVEFACTORY,M.REQUESTQUANTITY,M.ASSIGNEDQUANTITY,M.MATERIALSPECNAME,M.PHASE,M.SDK_ID \n" +
"FROM MATERIALSHIPREQUEST mt\n" +
"LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SOURCENO = mt.SHIPREQUESTNAME \n" +
"WHERE (M.RETURNNO = :SOURCEORDER OR M.SHIPREQUESTNAME = :SOURCEORDER)";
}else {
ftySql = "SELECT DISTINCT M.SHIPREQUESTNAME,mt.ERPRECEIVEFACTORY,M.REQUESTQUANTITY,M.ASSIGNEDQUANTITY,M.MATERIALSPECNAME,M.PHASE,M.SDK_ID \n" +
"FROM MATERIALSHIPREQUEST mt\n" +
"LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = mt.SHIPREQUESTNAME \n" +
"WHERE (M.RETURNNO = :SOURCEORDER OR M.SHIPREQUESTNAME = :SOURCEORDER)\n" +
"AND M.MATERIALSPECNAME = :PRODCUTSPECNAME";
}
Map<String, Object> ftyMap = new HashMap<String, Object>(); Map<String, Object> ftyMap = new HashMap<String, Object>();
ftyMap.put("SOURCEORDER",receiveRequestName); ftyMap.put("SOURCEORDER",receiveRequestName);
ftyMap.put("PRODUCTSPECNAME",materialspecName); ftyMap.put("PRODCUTSPECNAME",materialspecName);
List<Map<String,Object>> list3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(ftySql, ftyMap); List<Map<String,Object>> list3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(ftySql, ftyMap);
String erpreceiveFactory = list3.get(0).get("ERPRECEIVEFACTORY").toString(); String erpreceiveFactory = list3.get(0).get("ERPRECEIVEFACTORY") == null ? "" :list3.get(0).get("ERPRECEIVEFACTORY").toString();
if(!erpreceiveFactory.equals(erpFactory)) { if(!erpreceiveFactory.equals(erpFactory)) {
throw new GlobalException("仓库对应组织与单据接收组织不一致!"); throw new GlobalException("仓库对应组织与单据接收组织不一致!");
} }
@ -150,14 +164,31 @@ public class ProduceReturnController {
// MapAll.put("list2",list2); // MapAll.put("list2",list2);
// MapAll.put("list3",list3); // MapAll.put("list3",list3);
// 求和所有的单据数量 // 求和所有的单据数量
// String totalSql = "SELECT SUM(be.QTY) TOTALQTY FROM BS_MES_SHIPPED be WHERE REQUESTNAME = :SOURCEORDER"; // AND PRODUCTSPECNAME=:PRODUCTSPECNAME // String totalSql = "SELECT SUM(be.QTY) TOTALQTY FROM BS_MES_SHIPPED be WHERE REQUESTNAME = :SOURCEORDER"; // AND PRODCUTSPECNAME=:PRODCUTSPECNAME
// List<Map<String,Object>> list4 = IDMFrameServiceProxy.getSqlTemplate().queryForList(totalSql, ftyMap); // List<Map<String,Object>> list4 = IDMFrameServiceProxy.getSqlTemplate().queryForList(totalSql, ftyMap);
// String totalQty = list4.get(0).get("TOTALQTY").toString(); // String totalQty = list4.get(0).get("TOTALQTY").toString();
// if(!list2.isEmpty()) { // if(!list2.isEmpty()) {
// list2.get(0).put("TOTALQTY",totalQty); // list2.get(0).put("TOTALQTY",totalQty);
// } // }
return AjaxResult.me().setResultObj(list2); String bySql;
// String bySql = "SELECT b.PRODCUTSPECNAME MATERIALSPECNAME,0 HAVEQUANTITY,b.REQUESTNAME RECEIVEREQUESTNAME , b.PHASE,b.TRUEGG,SUM(b.QTY) TOTALQTY FROM BS_MES_SHIPPED b WHERE REQUESTNAME = :SOURCEORDER GROUP BY b.PRODCUTSPECNAME,b.REQUESTNAME,b.PHASE,b.TRUEGG";
if(receiveRequestName.contains("DC")) {
bySql = "SELECT b.MATERIALSPECNAME,0 HAVEQUANTITY,b.SHIPREQUESTNAME RECEIVEREQUESTNAME , b.PHASE,SUM(b.REQUESTQUANTITY) TOTALQTY FROM MATERIALSHIPREQUESTDETAIL b WHERE SHIPREQUESTNAME = :SOURCEORDER GROUP BY b.MATERIALSPECNAME,b.SHIPREQUESTNAME,b.PHASE\n";
}else {
bySql = "SELECT b.MATERIALSPECNAME,0 HAVEQUANTITY,b.SHIPREQUESTNAME RECEIVEREQUESTNAME , b.PHASE,SUM(b.REQUESTQUANTITY) TOTALQTY FROM MATERIALSHIPREQUESTDETAIL b WHERE RETURNNO = :SOURCEORDER GROUP BY b.MATERIALSPECNAME,b.SHIPREQUESTNAME,b.PHASE\n";
}
List<Map<String,Object>> list4 = IDMFrameServiceProxy.getSqlTemplate().queryForList(bySql, ftyMap);
if(!receiveRequestName.contains("DC")) {
// list2.get(0).get("RECEIVEREQUESTNAME") = list3.get(0).get("RECEIVEREQUESTNAME").toString();
list2.get(0).put("RECEIVEREQUESTNAME",list4.get(0).get("RECEIVEREQUESTNAME").toString());
}
Map<String, Object> MapAll = new HashMap<String, Object>();
MapAll.put("list2",list2);
MapAll.put("list4",list4);
return AjaxResult.me().setResultObj(MapAll);
// return AjaxResult.me().setResultObj(list2);
} }

View File

@ -10,6 +10,7 @@ import java.util.UUID;
import com.cim.idm.framework.template.workflow.BpelExecuter; import com.cim.idm.framework.template.workflow.BpelExecuter;
import com.cim.idm.model.ErpMessageLog; import com.cim.idm.model.ErpMessageLog;
import com.cim.idm.service.impl.ToSAPServiceImpl;
import com.cim.idm.utils.AjaxResult; import com.cim.idm.utils.AjaxResult;
import com.cim.idm.utils.EventInfoUtil; import com.cim.idm.utils.EventInfoUtil;
import com.cim.idm.wmsextend.generic.GenericServiceProxy; import com.cim.idm.wmsextend.generic.GenericServiceProxy;
@ -60,6 +61,9 @@ public class QMSController {
@Autowired(required = false) @Autowired(required = false)
private BpelExecuter bpelExecuter; private BpelExecuter bpelExecuter;
@Autowired
private ToSAPServiceImpl toSAPService;
private static final Logger log = LoggerFactory.getLogger(QMSController.class); private static final Logger log = LoggerFactory.getLogger(QMSController.class);
// private NCWServiceImpl NCWServiceImpl = new NCWServiceImpl (); // private NCWServiceImpl NCWServiceImpl = new NCWServiceImpl ();
@ -509,10 +513,10 @@ public class QMSController {
} }
return result; return result;
} }
@RequestMapping(value = "/QMSSyncData", method = RequestMethod.POST) @RequestMapping(value = "/QMSSyncData", method = RequestMethod.POST)
public AjaxResult QMSSyncData(@RequestBody JSONArray in) throws CustomException { public AjaxResult QMSSyncData(@RequestBody JSONArray in) throws CustomException {
//重写QMS回传通用处理方法zd.2024.9.9 //重写QMS回传通用处理方法
AjaxResult result = new AjaxResult(); AjaxResult result = new AjaxResult();
ErpMessageLog loginfo = new ErpMessageLog(); ErpMessageLog loginfo = new ErpMessageLog();
loginfo.setServerName("QMSToWms"); loginfo.setServerName("QMSToWms");
@ -565,18 +569,18 @@ public class QMSController {
String user = ""; String user = "";
String expiringDateType=""; String expiringDateType="";
for (int i = 0; i < in.size(); i++) { for (int i = 0; i < in.size(); i++) {
JSONObject jb = in.getJSONObject(i); JSONObject jb = in.getJSONObject(i);
//String commonNumber = jb.get("commonNumber").toString();//通用单号 //String commonNumber = jb.get("commonNumber").toString();//通用单号
inspectionScenario=jb.get("inspectionScenario").toString();//0原材 1产成品 2PET成品以及分切 3销售退货检结果 4过期复判检验结果 5. 胶水出库检结果 inspectionScenario=jb.get("inspectionScenario").toString();//0原材 1产成品 2PET成品以及分切 3销售退货检结果 4过期复判检验结果 5. 胶水出库检结果
String materialCode = jb.get("materialCode")== null ? "" : jb.get("materialCode").toString();//料号 String materialCode = jb.get("materialCode")== null ? "" : jb.get("materialCode").toString();//料号
String pqcResult = jb.get("judgementResult")==null?"":jb.get("judgementResult").toString();//检验结果0不合格 1合格 String pqcResult = jb.get("judgementResult")==null?"":jb.get("judgementResult").toString();//检验结果0不合格 1合格
if(StringUtils.equals("0", pqcResult)) if(StringUtils.equals("0", pqcResult))
{ {
pqcResult="NG"; pqcResult="NG";
} }
else if(StringUtils.equals("1", pqcResult)) else if(StringUtils.equals("1", pqcResult))
{ {
pqcResult="OK"; pqcResult="OK";
} }
@ -590,7 +594,7 @@ public class QMSController {
// } // }
makeEventInfo = EventInfoUtil.makeEventInfo("QMSSyncData", user, "QMSSyncData:"+inspectionScenario); makeEventInfo = EventInfoUtil.makeEventInfo("QMSSyncData", user, "QMSSyncData:"+inspectionScenario);
String specialTreatment = jb.get("specialTreatment") == null ? "" : jb.get("specialTreatment").toString();//异常处理 0复卷1降级2报废3特采4紧急放行5退货 String specialTreatment = jb.get("specialTreatment") == null ? "" : jb.get("specialTreatment").toString();//异常处理 0复卷1降级2报废3特采4紧急放行5退货
for(int j=0;j<lots.length;j++) for(int j=0;j<lots.length;j++)
{ {
boxList.add(lots[j]); boxList.add(lots[j]);
@ -603,29 +607,30 @@ public class QMSController {
insertQMSTemp(lots[j], pqcResult, specialTreatment, materialCode, inspectionScenario,pqcResultDate,expiringDate); insertQMSTemp(lots[j], pqcResult, specialTreatment, materialCode, inspectionScenario,pqcResultDate,expiringDate);
} }
} }
//判断数据是否需要发送SAP
String undoId = toSAPService.qmsResultFeekback(siteName,user,boxList);
//更新Box状态 //更新Box状态
List<MaterialPackingKey> mpkList=updateOqaResult(boxList,siteName,inspectionScenario,expiringDateType, expBoxList); List<MaterialPackingKey> mpkList=updateOqaResult(boxList,siteName,inspectionScenario,expiringDateType, expBoxList);
//记录履历 //记录履历
if(mpkList.size()>0) if(mpkList.size()>0)
{ {
setEventOqaResult(mpkList,"",siteName,makeEventInfo); setEventOqaResult(mpkList,"",siteName,makeEventInfo);
} }
//删除临时表数据 //删除临时表数据
deleteQMSTemp(boxList); deleteQMSTemp(boxList);
IDMFrameServiceProxy.getTransactionManager().commitTransaction(); IDMFrameServiceProxy.getTransactionManager().commitTransaction();
result = AjaxResult.me().setSuccess(true).setMessage("执行成功"); result = AjaxResult.me().setSuccess(true).setMessage("执行成功");
} }
catch(Exception e) catch(Exception e)
{ {
e.printStackTrace(); e.printStackTrace();
IDMFrameServiceProxy.getTransactionManager().rollbackTransaction(); IDMFrameServiceProxy.getTransactionManager().rollbackTransaction();
result = AjaxResult.me().setSuccess(false).setMessage("处理异常:" + e.getMessage()); result = AjaxResult.me().setSuccess(false).setMessage("处理异常:" + e.getMessage());
return result; return result;
} }
return result; return result;
} }

View File

@ -214,7 +214,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService {
" m.DESC_CN ,\r\n" + " m.DESC_CN ,\r\n" +
" BMS.QTY ,\r\n" + " BMS.QTY ,\r\n" +
" BMS.SHIPTIME ,\r\n" + " BMS.SHIPTIME ,\r\n" +
" SS.SDK_ID ,BMS .REQUESTNAME ,RETURNPC ,\r\n" + " SS.SDK_ID ,BMS.REQUESTNAME ,RETURNPC ,\r\n" +
" REGEXP_SUBSTR(BMS.LOTNAME , '[^|]+', 1, 5) AS CHARGE\r\n" + " REGEXP_SUBSTR(BMS.LOTNAME , '[^|]+', 1, 5) AS CHARGE\r\n" +
"FROM\r\n" + "FROM\r\n" +
" BS_MES_SHIPPED BMS LEFT JOIN MATERIALSPEC m ON m.MATERIALSPECNAME = BMS.PRODUCTSPECNAME \r\n" + " BS_MES_SHIPPED BMS LEFT JOIN MATERIALSPEC m ON m.MATERIALSPECNAME = BMS.PRODUCTSPECNAME \r\n" +
@ -229,23 +229,24 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService {
if(list2.size() < 1) { if(list2.size() < 1) {
throw new GlobalException( materialPackingName + "未打印退料标签,请联系IT处理"); throw new GlobalException( materialPackingName + "未打印退料标签,请联系IT处理");
} }
//根据退库信息获取退料单
String sql3 = "SELECT\r\n" +
" M.SHIPREQUESTNAME,\r\n" +
" M.SHIPREQUESTDETAILNAME\r\n" +
"FROM\r\n" +
" MATERIALSHIPREQUESTDETAIL M\r\n" +
"WHERE\r\n" +
" (M.RETURNNO = :SHIPREQUESTNAME OR M.SHIPREQUESTNAME = :SHIPREQUESTNAME)\r\n" +
" AND M.MATERIALSPECNAME = :MATERIALSPECNAME AND M.CHARGE = :RETURNPC ";
bindMap.put("SHIPREQUESTNAME",list2.get(0).get("REQUESTNAME")); //根据退库信息获取退料单
bindMap.put("MATERIALSPECNAME",list2.get(0).get("PRODUCTSPECNAME")); // String sql3 = "SELECT\r\n" +
bindMap.put("RETURNPC",list2.get(0).get("RETURNPC")); // " M.SHIPREQUESTNAME,\r\n" +
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql3, bindMap); // " M.SHIPREQUESTDETAILNAME\r\n" +
if (queryForList == null || queryForList.size() < 1) { // "FROM\r\n" +
throw new GlobalException(list2.get(0).get("REQUESTNAME")+"退库单据信息不存在,请联系IT处理"); // " MATERIALSHIPREQUESTDETAIL M\r\n" +
} // "WHERE\r\n" +
// " (M.RETURNNO = :SHIPREQUESTNAME OR M.SHIPREQUESTNAME = :SHIPREQUESTNAME)\r\n" +
// " AND M.MATERIALSPECNAME = :MATERIALSPECNAME AND M.CHARGE = :RETURNPC ";
//
// bindMap.put("SHIPREQUESTNAME",list2.get(0).get("REQUESTNAME"));
// bindMap.put("MATERIALSPECNAME",list2.get(0).get("PRODUCTSPECNAME"));
// bindMap.put("RETURNPC",list2.get(0).get("RETURNPC"));
// List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql3, bindMap);
// if (queryForList == null || queryForList.size() < 1) {
// throw new GlobalException(list2.get(0).get("REQUESTNAME")+"退料单据信息不存在,请联系IT处理");
// }
EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("createBoxInfoReturn", user, "createBoxInfoReturn", "", ""); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("createBoxInfoReturn", user, "createBoxInfoReturn", "", "");
try { try {
@ -260,7 +261,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService {
// args.add(actType1); // args.add(actType1);
// args.add(f.format(c.getTime())); // args.add(f.format(c.getTime()));
String ReceiveRequestActNo = ""; String ReceiveRequestActNo = opCode;
// ReceiveRequestActNo = NameServiceProxy.getNameRuleDefService() // ReceiveRequestActNo = NameServiceProxy.getNameRuleDefService()
// .generateName("ReceiveActNo", args, 1).get(0); // .generateName("ReceiveActNo", args, 1).get(0);
@ -269,8 +270,11 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService {
// queryForList.get(0).get("SHIPREQUESTDETAILNAME").toString(), list2.get(0).get("SHIPTIME").toString(), // queryForList.get(0).get("SHIPREQUESTDETAILNAME").toString(), list2.get(0).get("SHIPTIME").toString(),
// ReceiveRequestActNo, "ProduceReturn", list2.get(0).get("QTY").toString(), list2.get(0).get("PRODUCTSPECNAME").toString()); // ReceiveRequestActNo, "ProduceReturn", list2.get(0).get("QTY").toString(), list2.get(0).get("PRODUCTSPECNAME").toString());
SHIPMesShippInfo(makeEventInfo, "SDK", materialPackingName, "", user, // SHIPMesShippInfo(makeEventInfo, "SDK", materialPackingName, "", user,
materialPackingName, ReceiveRequestActNo, erpLocation, erpFactory, locationName,queryForList.get(0).get("SHIPREQUESTNAME").toString(), queryForList.get(0).get("SHIPREQUESTDETAILNAME").toString()); // materialPackingName, ReceiveRequestActNo, erpLocation, erpFactory, locationName,queryForList.get(0).get("SHIPREQUESTNAME").toString(), queryForList.get(0).get("SHIPREQUESTDETAILNAME").toString());
SHIPMesShippInfo(makeEventInfo, "SDK", materialPackingName, "", user,
materialPackingName, ReceiveRequestActNo, erpLocation, erpFactory, locationName,list2.get(0).get("REQUESTNAME").toString(), "");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -540,7 +544,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService {
for (int i = 0; i < queryForList2.size(); i++) { for (int i = 0; i < queryForList2.size(); i++) {
String receiveRequestName = queryForList2.get(i).get("RECEIVEREQUESTNAME").toString(); String receiveRequestName = queryForList2.get(i).get("RECEIVEREQUESTNAME").toString();
String erpLocation = queryForList2.get(i).get("ERPLOCATION").toString(); String erpLocation = queryForList2.get(i).get("ERPLOCATION").toString();
String shipRequestType=queryForList2.get(i).get("SHIPREQUESTTYPE").toString(); // String shipRequestType=queryForList2.get(i).get("SHIPREQUESTTYPE").toString();
String billCode=""; String billCode="";
ToSAPServiceImpl.ReturnStockInNew("SDK", eventUser, receiveRequestName, commitDate,opCode); ToSAPServiceImpl.ReturnStockInNew("SDK", eventUser, receiveRequestName, commitDate,opCode);
if (billCode.length() == 0) { if (billCode.length() == 0) {