2025-04-22 17:31:59 +08:00

965 lines
45 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.framework.IDMFrameServiceProxy;
import com.cim.idm.model.MaterialPacking;
import com.cim.idm.model.MaterialshipRequest;
import com.cim.idm.model.SalePreOrderDto;
import com.cim.idm.model.StockOutDto;
import com.cim.idm.service.Impl.InvoiceServiceImpl;
import com.cim.idm.service.Impl.SaleOutServiceImpl;
import com.cim.idm.utils.AjaxResult;
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
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.io.IOException;
import java.math.BigDecimal;
import java.util.*;
@Api("调拨入接口")
@RestController
@RequestMapping("/SaleOut")
@EnableAutoConfiguration
public class SaleOutController {
@Autowired
private SaleOutServiceImpl SaleOut;
@RequestMapping(value = "/getBhCondition", method = RequestMethod.POST)
public AjaxResult getBhCondition(@RequestBody JSONObject in ){
MaterialshipRequest ship = JSON.toJavaObject(in, MaterialshipRequest.class);
String barCode = ship.getBarCode();
StringBuffer stringBuffer = new StringBuffer ();
stringBuffer.append(" ");
stringBuffer.append(" WITH AA AS ( SELECT MATERIALSPECNAME,LISTAGG(CAREER_ASSISTANCE, ',') ");
stringBuffer.append(" WITHIN GROUP (ORDER BY MATERIALSPECNAME) CAREER_ASSISTANCE FROM ");
stringBuffer.append(" (SELECT DISTINCT MATERIALSPECNAME,CAREER_ASSISTANCE FROM MATERIALPACKING m ");
stringBuffer.append(" WHERE CAREER_ASSISTANCE IS NOT NULL) GROUP BY MATERIALSPECNAME ) ");
stringBuffer.append(" SELECT ");
stringBuffer.append(" m.MATERIALSPECNAME, ");
stringBuffer.append(" m.SDK_ID, ");
stringBuffer.append(" m.PHASE, ");
stringBuffer.append(" AA.CAREER_ASSISTANCE, ");
stringBuffer.append(" ss.SPECNAME ");
stringBuffer.append(" FROM ");
stringBuffer.append(" MATERIALPACKING m ");
stringBuffer.append(" LEFT JOIN SDK_SPEC ss ON ");
stringBuffer.append(" m.SDK_ID = ss.SDK_ID LEFT JOIN AA ON m.MATERIALSPECNAME = AA.MATERIALSPECNAME ");
stringBuffer.append(" WHERE ");
stringBuffer.append(" MATERIALPACKINGNAME = :MATERIALPACKINGNAME ");
//查询单据明细信息
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("MATERIALPACKINGNAME",barCode);
List<Map<String,Object>> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(stringBuffer.toString(), bindMap);
if (list == null || list.size() < 1) {
return AjaxResult.me().setSuccess(false).setMessage("标签不存在");
}
return AjaxResult.me().setSuccess(true).setResultObj(list);
}
//查询预备货信息
@RequestMapping(value = "/getSalePreOrderInvoice", method = RequestMethod.POST)
public AjaxResult getSalePreOrderInvoice(@RequestBody JSONObject in ){
MaterialshipRequest ship = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestType = ship.getShipRequestType();
String shipRequestName = ship.getShipRequestName();
String erpfactory = ship.getErpfactory();
String materialSpecName = ship.getMaterialSpecName();
String sdk_id = ship.getSdk_id();
String phase = ship.getPhase();
String user = ship.getUser();
StringBuffer stringBuffer = new StringBuffer ();
stringBuffer.append(" ");
stringBuffer.append(" SELECT ");
stringBuffer.append(" m2.MATERIALSPECNAME , ");
stringBuffer.append(" m2.PHASE , ");
stringBuffer.append(" m2.SDK_ID , ");
stringBuffer.append(" m2.REQUESTQUANTITY, m2.ASSIGNEDQUANTITY,");
stringBuffer.append(" m.SHIPREQUESTNAME , ");
stringBuffer.append(" m2.SHIPREQUESTDETAILNAME , ");
stringBuffer.append(" m.LASTEVENTUSER ,m2.ERPFACTORY, ");
stringBuffer.append(" ss.SPECNAME ");
stringBuffer.append(" FROM ");
stringBuffer.append(" MATERIALSHIPREQUESTDETAIL m2 ");
stringBuffer.append(" LEFT JOIN MATERIALSHIPREQUEST m ON ");
stringBuffer.append(" m2.SHIPREQUESTNAME = m.SHIPREQUESTNAME ");
stringBuffer.append(" LEFT JOIN SDK_SPEC ss ON m2.SDK_ID = ss.SDK_ID ");
stringBuffer.append(" WHERE ");
stringBuffer.append(" 1 = 1 ");
stringBuffer.append(" AND m.SHIPREQUESTSTATE = 'Created' ");
stringBuffer.append(" AND m2.ASSIGNEDQUANTITY <> 0 ");
stringBuffer.append(" AND m.SHIPREQUESTTYPE = 'SaleOutPre' ");
stringBuffer.append(" AND m2.ERPFACTORY = :ERPFACTORY ");
stringBuffer.append(" AND m.LASTEVENTUSER = :USER ");
// stringBuffer.append(" AND m.SHIPREQUESTNAME = :SHIPREQUESTNAME ");
stringBuffer.append(" AND m2.MATERIALSPECNAME = :MATERIALSPECNAME ");
stringBuffer.append(" AND ( :SDK_ID IS NULL OR m2.SDK_ID = :SDK_ID ) ");
stringBuffer.append(" AND ( :PHASE IS NULL OR m2.PHASE = :PHASE ) ");
//查询单据明细信息
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("MATERIALSPECNAME",materialSpecName);
bindMap.put("ERPFACTORY",erpfactory );
// bindMap.put("SHIPREQUESTNAME",shipRequestName );
bindMap.put("USER",user );
bindMap.put("SDK_ID",sdk_id );
bindMap.put("PHASE",phase );
List<Map<String,Object>> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(stringBuffer.toString(), bindMap);
return AjaxResult.me().setResultObj(list);
}
//查询发货单信息
@RequestMapping(value = "/getSaleOrderInvoice", method = RequestMethod.POST)
public AjaxResult getSaleOrderInvoice(@RequestBody JSONObject in ){
MaterialshipRequest ship = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestType = ship.getShipRequestType();
String shipRequestName = ship.getShipRequestName();
String erpfactory = ship.getErpfactory();
String materialSpecName = ship.getMaterialSpecName();
String sdk_id = ship.getSdk_id();
String phase = ship.getPhase();
String user = ship.getUser();
StringBuffer stringBuffer = new StringBuffer ();
stringBuffer.append(" ");
stringBuffer.append(" SELECT ");
stringBuffer.append(" m2.MATERIALSPECNAME , ");
stringBuffer.append(" m2.PHASE , ");
stringBuffer.append(" ss.SPECNAME , ");
stringBuffer.append(" m2.ERPFACTORY , ");
stringBuffer.append(" m2.SITENAME , ");
stringBuffer.append(" m2.SHIPREQUESTNAME , ");
stringBuffer.append(" m.LASTEVENTUSER, ");
stringBuffer.append(" SUM(m2.REQUESTQUANTITY) REQUESTQUANTITY, ");
stringBuffer.append(" SUM(m2.ASSIGNEDQUANTITY) ASSIGNEDQUANTITY ,m2.SDK_ID ,SUM(m2.REQUESTQUANTITY - m2.ASSIGNEDQUANTITY) MINUSQTY ");
stringBuffer.append(" FROM ");
stringBuffer.append(" MATERIALSHIPREQUESTDETAIL m2 ");
stringBuffer.append(" LEFT JOIN MATERIALSHIPREQUEST m ON ");
stringBuffer.append(" m2.SHIPREQUESTNAME = m.SHIPREQUESTNAME ");
stringBuffer.append(" LEFT JOIN SDK_SPEC ss ON ");
stringBuffer.append(" m2.SDK_ID = ss.SDK_ID ");
stringBuffer.append(" LEFT JOIN MATERIALSPEC m3 ON ");
stringBuffer.append(" m2.MATERIALSPECNAME = m3.MATERIALSPECNAME ");
stringBuffer.append(" WHERE ");
stringBuffer.append(" 1 = 1 ");
stringBuffer.append(" AND m.SHIPREQUESTSTATE <> 'Completed' ");
stringBuffer.append(" AND m.SHIPREQUESTTYPE = '4C' ");
stringBuffer.append(" AND m.SHIPREQUESTNAME = :SHIPREQUESTNAME ");
stringBuffer.append(" GROUP BY m2.MATERIALSPECNAME , ");
stringBuffer.append(" m2.PHASE , ");
stringBuffer.append(" ss.SPECNAME , ");
stringBuffer.append(" m2.ERPFACTORY , ");
stringBuffer.append(" m2.SITENAME , ");
stringBuffer.append(" m2.SHIPREQUESTNAME , ");
stringBuffer.append(" m.LASTEVENTUSER ,m2.SDK_ID ");
//查询单据明细信息
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("MATERIALSPECNAME",materialSpecName);
bindMap.put("ERPFACTORY",erpfactory );
bindMap.put("SHIPREQUESTNAME",shipRequestName );
bindMap.put("USER",user );
bindMap.put("SDK_ID",sdk_id );
bindMap.put("PHASE",phase );
List<Map<String,Object>> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(stringBuffer.toString(), bindMap);
return AjaxResult.me().setResultObj(list);
}
//查询发货单绑定批次信息
@RequestMapping(value = "/getChargeBindBySale", method = RequestMethod.POST)
public AjaxResult getChargeBindBySale(@RequestBody JSONObject in ){
MaterialshipRequest ship = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestType = ship.getShipRequestType();
String shipRequestName = ship.getShipRequestName();
String erpfactory = ship.getErpfactory();
String materialSpecName = ship.getMaterialSpecName();
String sdk_id = ship.getSdk_id();
String phase = ship.getPhase();
String user = ship.getUser();
StringBuffer stringBuffer = new StringBuffer ();
stringBuffer.append(" ");
stringBuffer.append(" SELECT ");
stringBuffer.append(" m.MATERIALSPECNAME , ");
stringBuffer.append(" m.MATERIALPACKINGNAME , ");
stringBuffer.append(" m.CHARGE , ");
stringBuffer.append(" m.ERPFACTORY , ");
stringBuffer.append(" m.MATERIALQUANTITY , ");
stringBuffer.append(" m.MATERIALQUANTITY2 , ");
stringBuffer.append(" m2.SHIPREQUESTNAME , ");
stringBuffer.append(" m3.DESC_CN , ");
stringBuffer.append(" ss.SPECNAME ,m.PHASE, ");
stringBuffer.append(" be.DESCRIPTION ERPLOCATION, ");
stringBuffer.append(" s.DESCRIPTION LOCATIONNAME ");
stringBuffer.append(" FROM ");
stringBuffer.append(" MATERIALPACKING m ");
stringBuffer.append(" LEFT JOIN MATERIALSHIPREQUEST m2 ON ");
stringBuffer.append(" m.SHIPREQUESTNAME = m2.SHIPREQUESTNAME ");
stringBuffer.append(" LEFT JOIN MATERIALSPEC m3 ON ");
stringBuffer.append(" m.MATERIALSPECNAME = m3.MATERIALSPECNAME ");
stringBuffer.append(" LEFT JOIN SDK_SPEC ss ON ");
stringBuffer.append(" ss.SDK_ID = m.SDK_ID ");
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 ");
stringBuffer.append(" AND s.STORAGENAME = m.LOCATIONNAME ");
stringBuffer.append(" WHERE m2.SHIPREQUESTTYPE = '4C' ");
stringBuffer.append(" AND m.SHIPREQUESTNAME = :SHIPREQUESTNAME AND m.STOCKSTATE = 'Stocked' ");
if (sdk_id != null && !"".equals(sdk_id)) {
stringBuffer.append(" AND m.SDK_ID = :SDK_ID ");
}
if (phase != null && !"".equals(phase)) {
stringBuffer.append(" AND m.PHASE = :PHASE ");
}
stringBuffer.append(" ORDER BY m.MATERIALSPECNAME, be.DESCRIPTION,s.DESCRIPTION");
//查询单据明细信息
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("MATERIALSPECNAME",materialSpecName);
bindMap.put("ERPFACTORY",erpfactory );
bindMap.put("SHIPREQUESTNAME",shipRequestName );
bindMap.put("USER",user );
bindMap.put("SDK_ID",sdk_id );
bindMap.put("PHASE",phase );
List<Map<String,Object>> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(stringBuffer.toString(), bindMap);
return AjaxResult.me().setResultObj(list);
}
//重写拣配功能.zd.2024.9.10
@Transactional
@RequestMapping(value = "/AssignShipRequest", method = RequestMethod.POST)
public AjaxResult assignShipRequest(@RequestBody JSONObject in ) throws Exception {
MaterialPacking materialPacking = JSON.toJavaObject(in, MaterialPacking.class);
String materialPackingName = materialPacking.getMaterialPackingName();
String[] mpList=materialPackingName.split(";");
String user = materialPacking.getUser();
String siteName = "SDK";
String shipRequestName=materialPacking.getShipRequestName();
String materialSpecName=materialPacking.getMaterialSpecName();
String phase=materialPacking.getPhase();
String sdk_id=materialPacking.getSdk_id();
List<String> boxList=new ArrayList<>();
for(int i=0;i<mpList.length;i++)
{
if(StringUtils.isNotEmpty(mpList[i]))
{
boxList.add(mpList[i]);
}
}
InvoiceServiceImpl invoiceServiceImpl =new InvoiceServiceImpl();
String sql=" SELECT * FROM (\r\n" +
" SELECT sum(m.MATERIALQUANTITY)ALLQTY,min(m.MATERIALQUANTITY)MINQTY FROM MATERIALPACKING m \r\n" +
" WHERE m.SITENAME = :SITENAME \r\n" +
" AND m.MATERIALPACKINGNAME IN (:BOXLIST))\r\n" +
" LEFT JOIN (SELECT (sum(m2.REQUESTQUANTITY)-sum(m2.ASSIGNEDQUANTITY))MINUSQTY FROM MATERIALSHIPREQUESTDETAIL m2 \r\n" +
" WHERE m2.SHIPREQUESTNAME=:SHIPREQUESTNAME\r\n" +
" AND m2.MATERIALSPECNAME=:MATERIALSPECNAME\r\n" +
" AND (:PHASE IS NULL OR m2.PHASE=:PHASE)\r\n" +
" AND ( :SDK_ID IS NULL OR m2.SDK_ID=:SDK_ID) \r\n" +
" ) ON 1=1\r\n" +
" LEFT JOIN (SELECT m3.SHIPREQUESTTYPE FROM MATERIALSHIPREQUEST m3 WHERE m3.SHIPREQUESTNAME=:SHIPREQUESTNAME)\r\n" +
" ON 1=1 ";
Map<String,Object> bp=new HashMap<>();
bp.put("SITENAME", siteName);
bp.put("BOXLIST", boxList);
bp.put("SHIPREQUESTNAME", shipRequestName);
bp.put("MATERIALSPECNAME", materialSpecName);
bp.put("PHASE", phase);
bp.put("SDK_ID", sdk_id);
List<Map<String,Object>> sr=IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bp);
String MINUSQTY=sr.get(0).get("MINUSQTY")==null?"0":sr.get(0).get("MINUSQTY").toString();
String ALLQTY=sr.get(0).get("ALLQTY")==null?"0":sr.get(0).get("ALLQTY").toString();
String MINQTY=sr.get(0).get("MINQTY")==null?"0":sr.get(0).get("MINQTY").toString();
String shipRequestType=sr.get(0).get("SHIPREQUESTTYPE")==null?"":sr.get(0).get("SHIPREQUESTTYPE").toString();
String shipRequestDetailType=sr.get(0).get("SHIPREQUESTDETAILTYPE")==null?"":sr.get(0).get("SHIPREQUESTDETAILTYPE").toString();
BigDecimal minusQty = new BigDecimal(MINUSQTY);//剩余需求数量
BigDecimal allQty = new BigDecimal(ALLQTY);//Box总数量
BigDecimal minQty = new BigDecimal(MINQTY);//最小Box数量
BigDecimal Fzero = new BigDecimal(0);
int dy0 = minusQty.compareTo(Fzero);
// if ("4C".equals(shipRequestType)) {
// if ((allQty.subtract(minusQty)).compareTo(Fzero)>0) {
// //return AjaxResult.me().setSuccess(false).setMessage("销售不允许超发!");
// throw new CustomException("销售不允许超发");
// }
// }
// else
// {
// if ((allQty.subtract(minusQty)).compareTo(minQty)>0) {
// return AjaxResult.me().setSuccess(false).setMessage("只允许超发1个");
// //throw new CustomException("只允许超发1个");
// }
// }
// 销售订单不允许超发 但超发一只的时候可以挪到右侧,进行拆箱取数量保证不超发
// if ("4Y".equals(shipRequestType)) {//调拨单
// if ( "4Y-Cxx-03".equals(shipRequestDetailType)) {
// if ((allQty.subtract(minusQty)).compareTo(minQty)>0) {
// return AjaxResult.me().setSuccess(false).setMessage("只允许超发1个");
// //throw new CustomException("只允许超发1个");
// }
// }
// } else if ("BLSQ4K".equals(shipRequestType)) {//领料
// if ((allQty.subtract(minusQty)).compareTo(minQty)>0) {
// return AjaxResult.me().setSuccess(false).setMessage("只允许超发1个");
// //throw new CustomException("只允许超发1个");
// }
// } else if ("CKSQ4I".equals(shipRequestType)) { //其他出库
// if ((allQty.subtract(minusQty)).compareTo(minQty)>0) {
// return AjaxResult.me().setSuccess(false).setMessage("只允许超发1个");
// //throw new CustomException("只允许超发1个");
// }
// } else if ("OEM".equals(shipRequestType)) { //委外
// if ((allQty.subtract(minusQty)).compareTo(minQty)>0) {
// return AjaxResult.me().setSuccess(false).setMessage("只允许超发1个");
// //throw new CustomException("只允许超发1个");
// }
// } else if ("4C".equals(shipRequestType)) {
// if ((allQty.subtract(minusQty)).compareTo(minQty)>0) {
// return AjaxResult.me().setSuccess(false).setMessage("销售不允许超发!");
// //throw new CustomException("只允许超发1个");
// }
// }else {
// return AjaxResult.me().setSuccess(false).setMessage("单据类型不正确!");
// }
for(int i=0;i<boxList.size();i++)
{
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName,boxList.get(i));
com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(materialPackingKey);
try {
invoiceServiceImpl.Reserve2(selectByKey, shipRequestName, materialSpecName,sdk_id, phase, "Assign", "SDK", user,"","N");
} catch (Exception e) {
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
}
return AjaxResult.me().setResultObj(null);
}
//重写取消拣配功能.zd.2024.9.10
@Transactional
@RequestMapping(value = "/DeAssignShipRequest", method = RequestMethod.POST)
public AjaxResult deAssignShipRequest(@RequestBody JSONObject in) throws Exception {
MaterialPacking materialPacking = JSON.toJavaObject(in, MaterialPacking.class);
String materialPackingName = materialPacking.getMaterialPackingName();
String[] mpList = materialPackingName.split(";");
String user = materialPacking.getUser();
String siteName = "SDK";
String shipRequestName = materialPacking.getShipRequestName();
String materialSpecName = materialPacking.getMaterialSpecName();
List<String> boxList = new ArrayList<>();
for (int i = 0; i < mpList.length; i++) {
if (StringUtils.isNotEmpty(mpList[i])) {
boxList.add(mpList[i]);
}
}
InvoiceServiceImpl invoiceServiceImpl = new InvoiceServiceImpl();
for (int i = 0; i < boxList.size(); i++) {
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, boxList.get(i));
com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking selectByKey = MaterialPackingServiceProxy
.getMaterialPackingService().selectByKey(materialPackingKey);
try {
String sdk_ID = selectByKey.getSDK_ID();
String phase = selectByKey.getPHASE();
invoiceServiceImpl.Reserve2(selectByKey, shipRequestName, materialSpecName, sdk_ID, phase, "Dessign", "SDK",
user, "", "N");
} catch (Exception e) {
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
}
return AjaxResult.me().setResultObj(null);
}
//指定批次拣配功能.zd.2024.9.10
@Transactional
@RequestMapping(value = "/AssignShipRequestByCharge", method = RequestMethod.POST)
public AjaxResult assignShipRequestByCharge(@RequestBody JSONObject in) throws Exception {
MaterialPacking materialPacking = JSON.toJavaObject(in, MaterialPacking.class);
String materialPackingName = materialPacking.getMaterialPackingName();
String[] mpList = materialPackingName.split(";");
String user = materialPacking.getUser();
String siteName = "SDK";
String shipRequestName = materialPacking.getShipRequestName();
//String materialSpecName = materialPacking.getMaterialSpecName();
List<String> boxList = new ArrayList<>();
for (int i = 0; i < mpList.length; i++) {
if (StringUtils.isNotEmpty(mpList[i])) {
boxList.add(mpList[i]);
}
}
InvoiceServiceImpl invoiceServiceImpl = new InvoiceServiceImpl();
for(int i=0;i<boxList.size();i++)
{
String sqlmp=" SELECT m.MATERIALPACKINGNAME,m.MATERIALSPECNAME,m.MATERIALQUANTITY FROM MATERIALPACKING m WHERE m.CHARGE =:CHARGE AND m.STOCKSTATE ='Stocked' AND m.MATERIALQUANTITY >0 ";
Map<String,Object> bpmp=new HashMap<>();
bpmp.put("CHARGE", boxList.get(i));
List<Map<String,Object>> srmp=IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlmp, bpmp);
if(srmp.size()==0)
{
return AjaxResult.me().setSuccess(false).setMessage("未查询到批次:"+boxList.get(i));
}
String boxid=srmp.get(0).get("MATERIALPACKINGNAME").toString();
String materialSpecName=srmp.get(0).get("MATERIALSPECNAME").toString();
String materialQuantity=srmp.get(0).get("MATERIALQUANTITY").toString();
MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",boxid);
com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(materialPackingKey);
//查询单据类型
String sql = "SELECT\r\n" +
" m.SHIPREQUESTTYPE ,\r\n" +
" m.SHIPREQUESTDETAILTYPE,\r\n" +
" t.MATERIALSPECNAME ,\r\n" +
" SUM(t.REQUESTQUANTITY - t.ASSIGNEDQUANTITY) MINUSQTY,t.SDK_ID,t.PHASE\r\n" +
"FROM\r\n" +
" MATERIALSHIPREQUESTDETAIL t\r\n" +
"LEFT JOIN MATERIALSHIPREQUEST m ON\r\n" +
" t.SHIPREQUESTNAME = m.SHIPREQUESTNAME\r\n" +
"WHERE\r\n" +
" m.SHIPREQUESTNAME = :SHIPREQUESTNAME\r\n" +
" AND t.MATERIALSPECNAME = :MATERIALSPECNAME\r\n" +
" AND (:SDK_ID IS NULL\r\n" +
" OR t.SDK_ID = :SDK_ID)\r\n" +
" AND (:PHASE IS NULL\r\n" +
" OR t.PHASE = :PHASE)\r\n" +
" GROUP BY m.SHIPREQUESTTYPE ,\r\n" +
" m.SHIPREQUESTDETAILTYPE,\r\n" +
" t.MATERIALSPECNAME,t.SDK_ID,t.PHASE\r\n" +
"ORDER BY\r\n" +
" t.MATERIALSPECNAME ,\r\n" +
" t.SDK_ID,\r\n" +
" t.PHASE";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("SHIPREQUESTNAME", shipRequestName);
hashMap.put("MATERIALSPECNAME", materialSpecName);
hashMap.put("SDK_ID", "");
hashMap.put("PHASE", "");
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
if(Objects.isNull(queryForList) || queryForList.isEmpty()) {
return AjaxResult.me().setSuccess(false).setMessage("未找到对应的数据:"+shipRequestName+","+materialSpecName);
}
String judge = "SELECT\r\n" +
" m.SDK_ID,MATERIALSPECNAME,\r\n" +
" m.PHASE,\r\n" +
" CASE WHEN MATERIALQUANTITY2 > 0 THEN MATERIALQUANTITY2 " +
" ELSE MATERIALQUANTITY END MATERIALQUANTITY2 , " +
" m.SHIPREQUESTNAME,\r\n" +
" m.STOCKSTATE,\r\n" +
" m.PACKINGGRADE ,\r\n" +
" CASE WHEN to_char(EXPIRINGDATE, 'yyyymmdd') >= to_char(SYSDATE, 'yyyymmdd') THEN 1\r\n" +
" ELSE 0 END EXP, OQARESULTSTATE \r\n" +
"FROM\r\n" +
" MATERIALPACKING m\r\n" +
"WHERE\r\n" +
" m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
Map<String, Object> hashMap2 = new HashMap<String,Object> ();
hashMap2.put("MATERIALPACKINGNAME", boxid);
List<Map<String, Object>> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(judge, hashMap2);
String materialQuantity2="";
if (queryForList2 != null && queryForList2.size() > 0) {
materialSpecName = queryForList2.get(0).get("MATERIALSPECNAME") == null ? "" : queryForList2.get(0).get("MATERIALSPECNAME").toString();
//sdk_id = queryForList2.get(0).get("SDK_ID") == null ? "" : queryForList2.get(0).get("SDK_ID").toString();
//phase = queryForList2.get(0).get("PHASE") == null ? "" : queryForList2.get(0).get("PHASE").toString();
materialQuantity2 = queryForList2.get(0).get("MATERIALQUANTITY2") == null ? "" : queryForList2.get(0).get("MATERIALQUANTITY2").toString();
String invoice = queryForList2.get(0).get("SHIPREQUESTNAME") == null ? "" : queryForList2.get(0).get("SHIPREQUESTNAME").toString();
String stockState = queryForList2.get(0).get("STOCKSTATE") == null ? "" : queryForList2.get(0).get("STOCKSTATE").toString();
String packinggrade = queryForList2.get(0).get("PACKINGGRADE") == null ? "" : queryForList2.get(0).get("PACKINGGRADE").toString();
String exp = queryForList2.get(0).get("EXP") == null ? "" : queryForList2.get(0).get("EXP").toString();
String oqaresultstate = queryForList2.get(0).get("OQARESULTSTATE") == null ? "" : queryForList2.get(0).get("OQARESULTSTATE").toString();
if (!"Stocked".equals(stockState)) {
return AjaxResult.me().setSuccess(false).setMessage("条码不在库!");
}
if (!"OK".equals(packinggrade)) {
return AjaxResult.me().setSuccess(false).setMessage("批次不合格!");
}
if (!"1".equals(exp)) {
return AjaxResult.me().setSuccess(false).setMessage("批次已过期!");
}
if (!"END".equals(oqaresultstate)) {
return AjaxResult.me().setSuccess(false).setMessage("未完成质检!");
}
// if (!"".equals(invoice)) {
// return AjaxResult.me().setSuccess(false).setMessage("条码已被" + invoice + "备货!");
// }
} else {
return AjaxResult.me().setSuccess(false).setMessage("未找到对应的条码!");
}
String shipRequestType = queryForList.get(0).get("SHIPREQUESTTYPE").toString();
String shipRequestDetailType = queryForList.get(0).get("SHIPREQUESTDETAILTYPE").toString();
String minusQty = queryForList.get(0).get("MINUSQTY").toString();
BigDecimal FmaterialQuantity = new BigDecimal(materialQuantity);
BigDecimal FminusQty = new BigDecimal(minusQty);
BigDecimal Fzero = new BigDecimal(0);
//"SHIPREQUESTDETAILTYPE": "4Y-Cxx-03",//跨组织领料调拨单
//"BLSQ4K".equals(shipRequestType) || "4Y".equals(shipRequestType) || "CKSQ4I".equals(shipRequestType)
int dy0 = FminusQty.compareTo(Fzero);
if ("NLCC".equals(shipRequestType)) {//调拨单
// if ( "4Y-Cxx-03".equals(shipRequestDetailType)) {
if (dy0 < 0) {//只能超发一个
return AjaxResult.me().setSuccess(false).setMessage("只能超发一个不能出库了!");
}
// }
} else if ("01".equals(shipRequestType)) {//领料
if (dy0 < 0) {//只能超发一个
return AjaxResult.me().setSuccess(false).setMessage("只能超发一个不能出库了!");
}
}
// else if ("CKSQ4I".equals(shipRequestType)) { //其他出库
// if (dy0 < 0) {//只能超发一个
// return AjaxResult.me().setSuccess(false).setMessage("只能超发一个不能出库了!");
// }
// }
else if ("OEM".equals(shipRequestType)) { //委外出库
if (dy0 < 0) {//只能超发一个
return AjaxResult.me().setSuccess(false).setMessage("只能超发一个不能出库了!");
}
} else if (shipRequestType.contains("ZLF")) {
if (dy0 < 0) {//只能超发一个
return AjaxResult.me().setSuccess(false).setMessage("销售不允许超发!");
}
}else {
return AjaxResult.me().setSuccess(false).setMessage("单据类型不正确!");
}
try {
invoiceServiceImpl.Reserve2(selectByKey, shipRequestName, materialSpecName,"", "", "Assign", "SDK", user,materialQuantity2,"N");
} catch (CustomException e) {
e.printStackTrace();
AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
}
return AjaxResult.me().setResultObj(null);
}
//修改发货数量功能.zd.2024.9.10
@Transactional
@RequestMapping(value = "/UpdateOutQty", method = RequestMethod.POST)
public AjaxResult updateOutQty(@RequestBody JSONObject in) {
MaterialPacking materialPacking = JSON.toJavaObject(in, MaterialPacking.class);
String materialPackingName = materialPacking.getMaterialPackingName();
String user = materialPacking.getUser();
String siteName = "SDK";
String shipRequestName = materialPacking.getShipRequestName();
String mqty2 = materialPacking.getMaterialQuantity2();
String materialSpecName=materialPacking.getMaterialSpecName();
String sdk_id = materialPacking.getSdk_id();
String phase = materialPacking.getPhase();
String sql="SELECT (m.MATERIALQUANTITY2 - :MQTY2) MQTY2,(m.MATERIALQUANTITY - :MQTY2)MQTY, SDK_ID,PHASE FROM MATERIALPACKING m \r\n" +
" WHERE m.SITENAME =:SITENAME\r\n" +
" AND m.MATERIALPACKINGNAME =:MATERIALPACKINGNAME";
Map<String,Object> bp=new HashMap<>();
bp.put("SITENAME", siteName);
bp.put("MATERIALPACKINGNAME", materialPackingName);
bp.put("MQTY2", mqty2);
List<Map<String,Object>> sr=IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bp);
String minusQty="";
if(sr.size()>0)
{
minusQty=sr.get(0).get("MQTY2").toString();
sdk_id = sr.get(0).get("SDK_ID") == null ? "" : sr.get(0).get("SDK_ID").toString();
phase = sr.get(0).get("PHASE") == null ? "" : sr.get(0).get("PHASE").toString();
String mQty=sr.get(0).get("MQTY").toString();
if(Double.parseDouble(mQty)<0)
{
return AjaxResult.me().setSuccess(false).setMessage("发料数量不能超过批次总数量");
}
}
else
{
return AjaxResult.me().setSuccess(false).setMessage("未查询到条码");
}
try
{
//更新materialpacking表字段materialQuantity2并留履历
MaterialPackingKey mpk=new MaterialPackingKey(siteName, materialPackingName);
com.cim.idm.wmspackage.materialpacking.management.info.SetEventInfo setEventInfo=new com.cim.idm.wmspackage.materialpacking.management.info.SetEventInfo();
Map<String,Object> userc=new HashMap<>();
userc.put("materialQuantity2", mqty2);
//
//// set会精度缺失mqty2
// setEventInfo.setUserColumns(userc);
// EventInfo eventInfo=EventInfoUtil.makeEventInfo("UpdateOutQty", user, "UpdateOutQty");
// MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mpk, eventInfo, setEventInfo);
// 再用这个update更新
Map<String,Object> LKbp=new HashMap<>();
LKbp.put("SITENAME", siteName);
LKbp.put("MATERIALPACKINGNAME", materialPackingName);
LKbp.put("MATERIALQUANTITY2", mqty2);
String sqlK = "UPDATE\r\n" +
" MATERIALPACKING m\r\n" +
"SET\r\n" +
" m.MATERIALQUANTITY2 = :MATERIALQUANTITY2\r\n" +
"WHERE\r\n" +
" m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\r\n" +
" AND m.SITENAME = :SITENAME ";
IDMFrameServiceProxy.getSqlTemplate().update(sqlK, LKbp);
//更新MaterialShipRequestDetail表ASSIGNEDQUANTITY
// String sqlu="UPDATE MATERIALSHIPREQUESTDETAIL m SET m.ASSIGNEDQUANTITY=m.ASSIGNEDQUANTITY - :MQTY\r\n" +
// " WHERE m.SHIPREQUESTNAME =:SHIPREQUESTNAME AND m.MATERIALSPECNAME =:MATERIALSPECNAME\r\n" +
// " AND m.ASSIGNEDQUANTITY >0 AND (:SDK_ID IS NULL OR m.SDK_ID = :SDK_ID) AND (:PHASE IS NULL OR m.PHASE = :PHASE)";
String sqlu="UPDATE MATERIALSHIPREQUESTDETAIL m SET m.ASSIGNEDQUANTITY=m.ASSIGNEDQUANTITY - :MQTY\r\n" +
" WHERE m.SHIPREQUESTNAME =:SHIPREQUESTNAME AND m.MATERIALSPECNAME =:MATERIALSPECNAME\r\n" +
" AND m.ASSIGNEDQUANTITY >0 AND (:PHASE IS NULL OR m.PHASE = :PHASE)";
Map<String,Object> bpu=new HashMap<>();
bpu.put("MQTY", minusQty);
bpu.put("SHIPREQUESTNAME", shipRequestName);
bpu.put("MATERIALSPECNAME", materialSpecName);
bpu.put("SDK_ID", sdk_id);
bpu.put("PHASE", phase);
IDMFrameServiceProxy.getSqlTemplate().update(sqlu, bpu);
} catch (Exception e)
{
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
return AjaxResult.me().setResultObj(null);
}
@Transactional
@RequestMapping(value = "/CompleteShipRequest", method = RequestMethod.POST)
public AjaxResult completeShipRequest(@RequestBody JSONObject in ) throws Exception{
StockOutDto ms = JSON.toJavaObject(in, StockOutDto.class);
String shipRequestName = ms.getShipRequestName();
String siteName = "SDK";
String user = ms.getUser();
// String erpfactory = ms.getErpfactory();
// String erplocation = ms.getErplocation();
// String locationName = ms.getLocationName();
// String shipRequestType = ms.getShipRequestType();
String commitDate = ms.getCommitDate();
String opCode = ms.getOpCode();
String reMark = ms.getReMark();
List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> boxList = new ArrayList<>();
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("SHIPREQUESTNAME", shipRequestName);
String sqlGetBox="SELECT m.MATERIALPACKINGNAME,m.MATERIALQUANTITY,DECODE(NVL(m.MATERIALQUANTITY2,0), 0 ,m.MATERIALQUANTITY,m.MATERIALQUANTITY2) MATERIALQUANTITY2 FROM MATERIALPACKING m \r\n" +
" WHERE m.SHIPREQUESTNAME =:SHIPREQUESTNAME\r\n" +
" AND m.STOCKSTATE ='Stocked'\r\n" +
" AND m.MATERIALQUANTITY2 >0";
List<Map<String, Object>> sr = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlGetBox, hashMap);
if(sr.size()>0)
{
for(int i=0;i<sr.size();i++)
{
MaterialPackingKey mpk=new MaterialPackingKey(siteName, sr.get(i).get("MATERIALPACKINGNAME").toString());
com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking mp = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(mpk);
mp.setMaterialQuantity( Double.parseDouble(sr.get(i).get("MATERIALQUANTITY").toString()));
mp.setMaterialQuantity2( Double.parseDouble(sr.get(i).get("MATERIALQUANTITY2").toString()));
boxList.add(mp);
}
}
else
{
throw new CustomException("找不到出库单号" + shipRequestName);
}
String sendERPStockOut = null;
String shipRequestType="";
String sql = "SELECT m.SHIPREQUESTTYPE FROM MATERIALSHIPREQUEST m WHERE m.SHIPREQUESTNAME = :SHIPREQUESTNAME";
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
if (queryForList != null && queryForList.size() > 0) {
String type = queryForList.get(0).get("SHIPREQUESTTYPE").toString();
shipRequestType = type;
} else {
return AjaxResult.me().setSuccess(false).setMessage("找不到出库单据" + shipRequestName);
}
InvoiceServiceImpl invoiceServiceImpl=new InvoiceServiceImpl();
sendERPStockOut=invoiceServiceImpl.SendERPStockOut20240802(shipRequestName, siteName, user, boxList,commitDate,opCode);
// sendERPStockOut="1";
if (sendERPStockOut == null || "".equals(sendERPStockOut)) {
return AjaxResult.me().setSuccess(false).setMessage("过账失败");
}
return AjaxResult.me().setResultObj(null);
}
//查询发货单绑定批次信息
@RequestMapping(value = "/BindSalePreToSale", method = RequestMethod.POST)
public AjaxResult BindSalePreToSale(@RequestBody JSONObject in ){
SalePreOrderDto sp = JSON.toJavaObject(in, SalePreOrderDto.class);
List<SalePreOrderDto> salePreList = sp.getSalePreList();
String saleOrder = sp.getSaleOrder();//第三个表格单据
String saleQty = sp.getSaleQty();//第三表格备货数量
String saleMaterialSpecName = sp.getSaleMaterialSpecName();
String saleSdk_id = sp.getSaleSdk_id();
String salePhase = sp.getSalePhase();
String user = sp.getUser();
if (saleMaterialSpecName == null || "".equals(saleMaterialSpecName)) {
return AjaxResult.me().setSuccess(false).setMessage("发货物料号不能为空");
}
if (saleOrder == null || "".equals(saleOrder)) {
return AjaxResult.me().setSuccess(false).setMessage("发货单不能为空");
}
if (user == null || "".equals(user)) {
return AjaxResult.me().setSuccess(false).setMessage("作业员不能为空");
}
// 比较数量saleQty是salePreQty的和
// BigDecimal fsalePreQty = new BigDecimal(salePreQty);
// BigDecimal fsaleQty = new BigDecimal(saleQty);
// if (fsalePreQty.compareTo(fsaleQty) != 0) {
// return AjaxResult.me().setSuccess(false).setMessage("数量不一致");
// }
BigDecimal sumPreQty = BigDecimal.ZERO;
int listSize = salePreList.size();
for (int i = 0; i < listSize; i++) {
BigDecimal fsalePreQty = new BigDecimal(salePreList.get(i).getSalePreQty());
sumPreQty = sumPreQty.add(fsalePreQty);
}
BigDecimal fsaleQty = new BigDecimal(saleQty);
if (sumPreQty.compareTo(fsaleQty) != 0) {
return AjaxResult.me().setSuccess(false).setMessage("数量不一致");
}
for(SalePreOrderDto pre : salePreList)
{
String salePreNo = pre.getSalePreNo();//第二个表格单据
// String salePreQty = pre.getSalePreQty();//第二表格剩余数量
String salePreSdk_id = pre.getSalePreSdk_id();
String salePrePhase = pre.getSalePrePhase();
String salePreMaterialSpecName = pre.getSalePreMaterialSpecName();
if (!salePreMaterialSpecName.equals(saleMaterialSpecName)) {
return AjaxResult.me().setSuccess(false).setMessage("物料号不一致");
}
if (salePrePhase != null && salePhase != null) { //规格都不为空
if (!salePrePhase.equals(salePhase)) {
return AjaxResult.me().setSuccess(false).setMessage("物料阶段不一致");
}
} else if (salePrePhase == null && salePhase == null) {
} else {
return AjaxResult.me().setSuccess(false).setMessage("物料阶段不一致");
}
if (salePreSdk_id != null && saleSdk_id != null) { //规格都不为空
if (!salePreSdk_id.equals(saleSdk_id)) {
return AjaxResult.me().setSuccess(false).setMessage("物料号规格不一致");
}
} else if (salePreSdk_id == null && saleSdk_id == null) {
} else {
return AjaxResult.me().setSuccess(false).setMessage("物料号规格不一致");
}
if (salePreMaterialSpecName == null || "".equals(salePreMaterialSpecName)) {
return AjaxResult.me().setSuccess(false).setMessage("预备货物料号不能为空");
}
if (salePreNo == null || "".equals(salePreNo)) {
return AjaxResult.me().setSuccess(false).setMessage("预备货单不能为空");
}
SaleOut.BindSalePreToSale(saleOrder, saleMaterialSpecName, salePreSdk_id, user, salePhase, salePreNo);
String sql = "UPDATE MATERIALSHIPREQUEST SET SHIPREQUESTSTATE = 'Completed' WHERE SHIPREQUESTNAME = :SHIPREQUESTNAME ";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("SHIPREQUESTNAME", salePreNo);
IDMFrameServiceProxy.getSqlTemplate().update(sql, hashMap);
}
return AjaxResult.me().setSuccess(true).setMessage("备货成功");
}
/**
* pc备货出库添加是否可以不良品校验
* @param in
* @return
*/
@Transactional
@RequestMapping(value = "/RejectsAndExpCheck", method = RequestMethod.POST)
public AjaxResult RejectsAndExpCheck(@RequestBody JSONObject in ) throws CustomException {
MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestName2 = materialShipRequest.getShipRequestName();
//根据单据类型判断生产订单类型,如果是领料单且单据类型是复卷和返工的不卡控批次质量状态
String dTypeSql = "SELECT M.PRODUCTORDERTYPE,M.PRODUCTORDERNO FROM MATERIALSHIPREQUEST M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME";
Map<String, Object> hashMap3 = new HashMap<String,Object> ();
hashMap3.put("SHIPREQUESTNAME", shipRequestName2);
String productOrderType = "";
List<Map<String, Object>> queryForListW = new ArrayList<>();
List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3);
if (queryForList3 != null && queryForList3.size() > 0) {
productOrderType = queryForList3.get(0).get("PRODUCTORDERTYPE") == null ? "" :queryForList3.get(0).get("PRODUCTORDERTYPE").toString();
}
// 查询工单维护表 是否有对应的生产订单
String workSql = "SELECT w.WORKORDER FROM WORKORDER w WHERE w.WORKORDER =:WORKORDER";
Map<String, Object> hashMapW = new HashMap<String,Object> ();
hashMapW.put("WORKORDER", shipRequestName2);
queryForListW = IDMFrameServiceProxy.getSqlTemplate().queryForList(workSql, hashMapW);
String IsCheck = "N"; // 是否可以为不良和过期
if (("55A2-02".equals(productOrderType) || "55A2-Cxx-08".equals(productOrderType)
|| "4455-Cxx-10".equals(productOrderType) || "4455-Cxx-01".equals(productOrderType)
|| "5X-Cxx-07".equals(productOrderType)) || (queryForListW != null && !queryForListW.isEmpty())) {//复卷,返工工单
IsCheck = "Y";
}
return AjaxResult.me().setResultObj(IsCheck);
}
/**
* 销售出库
* @param in
* @return
*/
@RequestMapping(value = "/Commit4CToERP", method = RequestMethod.POST)
public AjaxResult Commit4CToERP(@RequestBody JSONObject in ){
MaterialshipRequest ship = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestName = ship.getShipRequestName();
String commitDate = ship.getCommitDate();
String opcode = ship.getOpcode();
List<MaterialPacking> boxList = ship.getBoxList();
String user = ship.getUser();
try {
SaleOut.Commit4CToERP(shipRequestName, boxList, user,commitDate,opcode);
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
return AjaxResult.me().setSuccess(true).setMessage("出库成功");
}
/**
* 销售解绑
* @param in
* @return
*/
@RequestMapping(value = "/DessignSaleCharge", method = RequestMethod.POST)
public AjaxResult DessignSaleCharge(@RequestBody JSONObject in ){
MaterialshipRequest ship = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestName = ship.getShipRequestName();
String pcSql = "UPDATE MATERIALPACKING T SET T.MATERIALQUANTITY2 = 0,T.SHIPREQUESTNAME = '' WHERE T.SHIPREQUESTNAME = :SHIPREQUESTNAME";
String subSql = "DELETE FROM MATERIALPACKINGSUB m WHERE m.RECEIVEREQUESTNAME = :SHIPREQUESTNAME";
String dhSql = "UPDATE MATERIALSHIPREQUESTDETAIL T SET T.ASSIGNEDQUANTITY = 0 WHERE T.SHIPREQUESTNAME = :SHIPREQUESTNAME";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("SHIPREQUESTNAME", shipRequestName);
IDMFrameServiceProxy.getSqlTemplate().update(dhSql, hashMap);
IDMFrameServiceProxy.getSqlTemplate().update(pcSql, hashMap);
IDMFrameServiceProxy.getSqlTemplate().update(subSql, hashMap);
return AjaxResult.me().setSuccess(true).setMessage("取消备货成功");
}
@RequestMapping(value = "/updateSalePreOrder", method = RequestMethod.POST)
public AjaxResult updateSalePreOrder(@RequestBody JSONObject in ){
MaterialshipRequest ship = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestName = ship.getShipRequestName();
String shipRequestDetailName = ship.getShipRequestDetailName();
String materialPackingName = ship.getMaterialPackingName();
String materialQuantity = ship.getMaterialQuantity();
String materialQuantity2 = ship.getMaterialQuantity2();
BigDecimal fmaterialQuantity = new BigDecimal(materialQuantity);
BigDecimal fmaterialQuantity2 = new BigDecimal(materialQuantity2);
String materialSpecName = ship.getMaterialSpecName();
String sdk_id = ship.getSdk_id();
String phase = ship.getPhase();
String pcSql = "UPDATE MATERIALPACKING T SET T.MATERIALQUANTITY2 = :QTY WHERE T.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
//查询已过帐,待过账数量更新到已接受数量
String dck = "SELECT SUM(DECODE(m2.MATERIALQUANTITY2, 0, m2.MATERIALQUANTITY,m2.MATERIALQUANTITY2)) QTY FROM MATERIALPACKING m2 WHERE m2.SHIPREQUESTNAME = :SHIPREQUESTNAME "
+ "AND m2.MATERIALSPECNAME = :MATERIALSPECNAME AND (:SDK_ID IS NULL OR m2.SDK_ID = :SDK_ID) AND (:PHASE IS NULL OR m2.PHASE = :PHASE) AND STOCKSTATE = 'Stocked'";
String ckls = "SELECT NVL(SUM(m.QTY),0) QTY FROM MATERIALPACKINGSUBHISTORY m LEFT JOIN MATERIALPACKING m2 ON m.MATERIALPACKINGNAME = m2.MATERIALPACKINGNAME WHERE m.RECEIVEREQUESTNAME = :SHIPREQUESTNAME "
+ "AND m2.MATERIALSPECNAME = :MATERIALSPECNAME AND (:SDK_ID IS NULL OR m2.SDK_ID = :SDK_ID) AND (:PHASE IS NULL OR m2.PHASE = :PHASE)";
String ck = "SELECT NVL(SUM(m.QTY),0) QTY FROM MATERIALPACKINGSUB m LEFT JOIN MATERIALPACKING m2 ON m.MATERIALPACKINGNAME = m2.MATERIALPACKINGNAME WHERE m.RECEIVEREQUESTNAME = :SHIPREQUESTNAME "
+ "AND m2.MATERIALSPECNAME = :MATERIALSPECNAME AND (:SDK_ID IS NULL OR m2.SDK_ID = :SDK_ID) AND (:PHASE IS NULL OR m2.PHASE = :PHASE)";
String dhSql = " UPDATE\r\n" +
" MATERIALSHIPREQUESTDETAIL m\r\n" +
"SET\r\n" +
" m.ASSIGNEDQUANTITY = :ASSIGNEDQUANTITY WHERE\r\n" +
" m.SITENAME = :SITENAME\r\n" +
" AND m.SHIPREQUESTNAME = :SHIPREQUESTNAME\r\n" +
" AND m.MATERIALSPECNAME = :MATERIALSPECNAME\r\n" +
" AND (:SDK_ID IS NULL\r\n" +
" OR m.SDK_ID = :SDK_ID)\r\n" +
" AND (:PHASE IS NULL\r\n" +
" OR m.PHASE = :PHASE) \r\n" +
" AND ROWNUM = 1 ";
Map<String, Object> bindMap = new HashMap<String,Object> ();
bindMap.put("QTY", materialQuantity2);
bindMap.put("SITENAME", "SDK");
bindMap.put("SHIPREQUESTNAME", shipRequestName);
bindMap.put("MATERIALPACKINGNAME", materialPackingName);
bindMap.put("MATERIALSPECNAME", materialSpecName);
bindMap.put("SDK_ID", sdk_id);
bindMap.put("PHASE", phase);
IDMFrameServiceProxy.getSqlTemplate().update(pcSql, bindMap);
BigDecimal ASSIGNEDQUANTITY = new BigDecimal(0);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(dck, bindMap);
if (queryForList != null && queryForList.size() > 0) {
String string = queryForList.get(0).get("QTY").toString();
BigDecimal bigDecimal = new BigDecimal(string);
ASSIGNEDQUANTITY = ASSIGNEDQUANTITY.add(bigDecimal);
}
List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(ckls, bindMap);
if (queryForList3 != null && queryForList3.size() > 0) {
String string = queryForList3.get(0).get("QTY").toString();
ASSIGNEDQUANTITY = ASSIGNEDQUANTITY.add(new BigDecimal(string));
}
List<Map<String, Object>> queryForList4 = IDMFrameServiceProxy.getSqlTemplate().queryForList(ck, bindMap);
if (queryForList4 != null && queryForList4.size() > 0) {
String string = queryForList4.get(0).get("QTY").toString();
ASSIGNEDQUANTITY = ASSIGNEDQUANTITY.add(new BigDecimal(string));
}
bindMap.put("ASSIGNEDQUANTITY", ASSIGNEDQUANTITY);
IDMFrameServiceProxy.getSqlTemplate().update(dhSql, bindMap);
return AjaxResult.me().setSuccess(true).setMessage("更新备货成功");
}
}