|
|
@@ -15,6 +15,7 @@ import common.annotation.CACHEING;
|
|
|
import common.annotation.CACHEING_CLEAN;
|
|
|
import common.data.*;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
+import org.apache.cxf.configuration.security.DNConstraintsType;
|
|
|
import restcontroller.R;
|
|
|
import restcontroller.webmanage.sale.order.Order;
|
|
|
import restcontroller.webmanage.sale.order.OrderItems;
|
|
|
@@ -23,6 +24,7 @@ import restcontroller.webmanage.sale.sendrepair.sendrepair_pj;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
|
|
|
import static java.time.LocalDate.now;
|
|
|
|
|
|
@@ -92,7 +94,7 @@ public class stockbill extends Controller {
|
|
|
insertSQL.setValue("rb", content.getString("rb"));
|
|
|
insertSQL.setValue("remarks", remarks);
|
|
|
if (StringUtils.isBlank(billdate)) {
|
|
|
- insertSQL.setValue("billdate", "current_time");
|
|
|
+ insertSQL.setDateValue("billdate");
|
|
|
} else {
|
|
|
insertSQL.setValue("billdate", billdate);
|
|
|
}
|
|
|
@@ -744,6 +746,151 @@ public class stockbill extends Controller {
|
|
|
return queryStockbillMain();
|
|
|
}
|
|
|
|
|
|
+ @API(title = "序列号收集", apiversion = R.ID2025101613261703.v1.class)
|
|
|
+ public String skuCollect() throws YosException {
|
|
|
+ long stockid=content.getLong("stockid");
|
|
|
+ String sku=content.getString("sku");
|
|
|
+ long st_stockbillid=content.getLong("st_stockbillid");
|
|
|
+ long st_stockbill_itemsid=content.getLong("st_stockbill_itemsid");
|
|
|
+ ArrayList<String> sqllist=new ArrayList<>();
|
|
|
+ String ss = "&&%$&&";
|
|
|
+ if (sku.contains(",")) {
|
|
|
+ ss = ",";
|
|
|
+ } else if (sku.contains(",")) {
|
|
|
+ ss = ",";
|
|
|
+ } else if (sku.contains(" ")) {
|
|
|
+ ss = " ";
|
|
|
+ } else if (sku.contains(";")) {
|
|
|
+ ss = ";";
|
|
|
+ } else if (sku.contains(";")) {
|
|
|
+ ss = ";";
|
|
|
+ }
|
|
|
+ String CODE[] = getDistinctArray(sku.split(ss));
|
|
|
+
|
|
|
+ Rows rows = dbConnect.runSqlQuery("select t1.*,t2.stockno from st_stockbill t1 left join st_stock t2 on t1.stockid=t2.stockid where t1.st_stockbillid ='"
|
|
|
+ + st_stockbillid + "' and t1.siteid='" + siteid + "'");
|
|
|
+ Rows stockbillitemsrows = dbConnect.runSqlQuery("select t1.*,t2.skucontrol from st_stockbill_items t1 left join plm_item t2 on t1.itemid=t2.itemid where t1.st_stockbillid ='"
|
|
|
+ + st_stockbillid + "' and siteid='" + siteid + "'");
|
|
|
+ Rows stockbillitemskurows = dbConnect.runSqlQuery("select * from st_stockbill_items_sku where st_stockbillid ='"
|
|
|
+ + st_stockbillid + "' and siteid='" + siteid + "'");
|
|
|
+ Rows skuRows = dbConnect.runSqlQuery("select t1.*,t2.itemno,t3.stockno from sa_itemsku t1 left join plm_item t2 on t1.itemid=t2.itemid left join st_stock t3 on t1.stockid=t3.st_stockid where t1.siteid='" + siteid + "'");
|
|
|
+ RowsMap skuRowsMap = skuRows.toRowsMap("sku");
|
|
|
+ if (rows.isEmpty()) {
|
|
|
+ return getErrReturnObject().setErrMsg("该出入库单不存在")
|
|
|
+ .toString();
|
|
|
+ }
|
|
|
+ Row st_stockbill =rows.get(0);
|
|
|
+ for (String FMACHINECODE : CODE) {
|
|
|
+ if (FMACHINECODE.equals("")) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (st_stockbill.getString("type").contains("入库")
|
|
|
+ && FMACHINECODE.startsWith("66")) {
|
|
|
+ return getErrReturnObject().setErrMsg("序列号" + FMACHINECODE
|
|
|
+ + "不可在DRP手工入库").toString();
|
|
|
+ }
|
|
|
+ if (stockbillitemskurows.size() == stockbillitemsrows.toRowsMap("skucontrol").get("1").sum("qty").intValue()) {
|
|
|
+ return getErrReturnObject().setErrMsg("序列号数量已经满足,不可继续添加").toString();
|
|
|
+ }
|
|
|
+ if (stockbillitemskurows.toRowsMap("sku").containsKey(FMACHINECODE)) {
|
|
|
+ return getErrReturnObject().setErrMsg("序列号" + FMACHINECODE + "重复").toString();
|
|
|
+ }
|
|
|
+ if (!skuRowsMap.containsKey(FMACHINECODE)) {
|
|
|
+ return getErrReturnObject().setErrMsg("序列号" + FMACHINECODE + "不存在").toString();
|
|
|
+ } else {
|
|
|
+ if (skuRowsMap.get(FMACHINECODE).get(0).getString("status").equals("报废")) {
|
|
|
+ return getErrReturnObject().setErrMsg("该序列号已作废").toString();
|
|
|
+ }
|
|
|
+ long skustockid = skuRowsMap.get(FMACHINECODE).get(0).getLong(
|
|
|
+ "stockid");
|
|
|
+ long skuitemid = skuRowsMap.get(FMACHINECODE).get(0).getLong("itemid");
|
|
|
+ String skuitemno = skuRowsMap.get(FMACHINECODE).get(0).getString("itemno");
|
|
|
+ if (st_stockbill.getString("status").equals("审核")) {
|
|
|
+ Rows stockbillskucheckRows=dbConnect.runSqlQuery("select * from stockbillskucheck where itemid="+skuitemid+" and st_stockbillid="+st_stockbillid);
|
|
|
+ if (!stockbillskucheckRows.isEmpty()) {
|
|
|
+ return getErrReturnObject().setErrMsg("商品编号"+skuitemno
|
|
|
+ + stockbillskucheckRows.get(0)
|
|
|
+ .getString("msg")).toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (skustockid!=0 && isinstock(st_stockbill.getString("type"),st_stockbill.getString("rb"),true)) {
|
|
|
+ return getErrReturnObject().setErrMsg("该序列号不可进行入库操作").toString();
|
|
|
+ }
|
|
|
+ if (skustockid==0 && !isinstock(st_stockbill.getString("type"),st_stockbill.getString("rb"),true)) {
|
|
|
+ return getErrReturnObject().setErrMsg("该序列号不可进行出库操作").toString();
|
|
|
+ }
|
|
|
+ if (skustockid==0 && stockid==0) {
|
|
|
+ return getErrReturnObject().setErrMsg("请指定仓库").toString();
|
|
|
+ }
|
|
|
+ if (st_stockbill.getString("status").equals("审核")
|
|
|
+ && !stockbillitemsrows.toRowsMap("skucontrol").get("1").toRowsMap("itemid").containsKey(
|
|
|
+ skuRowsMap.get(FMACHINECODE).get(0).getString("itemid"))) {
|
|
|
+ return getErrReturnObject().setErrMsg("序列号所属的商品编号没有包含在单据表体中").toString();
|
|
|
+ }
|
|
|
+ if (st_stockbill.getString("type").equals("生产入库")
|
|
|
+ && skuRowsMap.get("FMACHINECODE").get(0).getString("mono")
|
|
|
+ .equals("")) {
|
|
|
+ return getErrReturnObject().setErrMsg("序列号非生产订单生成,不可添加").toString();
|
|
|
+ }
|
|
|
+
|
|
|
+// if (st_stockbill.getString("type").equals("其他入库")
|
|
|
+// && st_stockbill.getString("stockno").equals("101")
|
|
|
+// && !getPaoSet(
|
|
|
+// "MACHINECODEUSEVIEW",
|
|
|
+// "MACHINECODEUSEVIEW",
|
|
|
+// "fmachinecode='" + FMACHINECODE
|
|
|
+// + "' and ftype like'%出库%'")
|
|
|
+// .isEmpty()) {
|
|
|
+// ((PaoSet) getThisPaoSet())
|
|
|
+// .addWarning(new P2AppException("", "序列号"
|
|
|
+// + FMACHINECODE + "已存在出库记录,请确认该序列号是否有误"));
|
|
|
+// }
|
|
|
+ String stockno =st_stockbill.getString("type").equals("销售出库")
|
|
|
+ && (skuRowsMap.get(FMACHINECODE).get(0).getString("stockno")
|
|
|
+ .equals("103") || skuRowsMap.get(FMACHINECODE).get(0).getString("stockno").equals("109")) ? "101"
|
|
|
+ : skuRowsMap.get(FMACHINECODE).get(0).getString("stockno");
|
|
|
+ Rows stockrows =dbConnect.runSqlQuery("select *from st_stock where stockno='"+stockno+"'");
|
|
|
+
|
|
|
+ InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
|
|
|
+ long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
|
|
|
+ insertSQL.setUniqueid(st_stockbill_items_skuid);
|
|
|
+ insertSQL.setSiteid(siteid);
|
|
|
+ if(stockrows.isNotEmpty()){
|
|
|
+ skustockid=stockrows.get(0).getLong("stockid");
|
|
|
+ }
|
|
|
+ if(stockid==0){
|
|
|
+ skustockid=st_stockbill.getLong("stockid");
|
|
|
+ }
|
|
|
+ insertSQL.setValue("stockid", skustockid);
|
|
|
+ insertSQL.setValue("itemid",skuitemid);
|
|
|
+ insertSQL.setValue("sku",FMACHINECODE);
|
|
|
+ insertSQL.setValue("st_stockbillid",st_stockbillid);
|
|
|
+ insertSQL.setValue("st_stockbill_itemsid",st_stockbill_itemsid);
|
|
|
+ sqllist.add(insertSQL.getSQL());
|
|
|
+ if (st_stockbill.getString("status").equals("审核")) {
|
|
|
+ if (isinstock(st_stockbill.getString("type"),st_stockbill.getString("rb"),true)) {
|
|
|
+ sqllist.add("update sa_itemsku set stockid="+skustockid+" where sku='"+FMACHINECODE+"'");
|
|
|
+ if (st_stockbill.getString("type").equals("销售出库")) {
|
|
|
+ sqllist.add("update sa_itemsku set sa_agentsid=0 where sku='"+FMACHINECODE+"'");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sqllist.add("update sa_itemsku set stockid=0 where sku='"+FMACHINECODE+"'");
|
|
|
+ if (st_stockbill.getString("type").equals("销售出库")) {
|
|
|
+ sqllist.add("update sa_itemsku set sa_agentsid=(select sa_agentsid from sa_agents where sys_enterpriseid="+st_stockbill.getLong("sys_enterpriseid")+") where sku='"+FMACHINECODE+"'");
|
|
|
+ if (st_stockbill.getBoolean("iswx")) {
|
|
|
+ sqllist.add("update sa_itemsku set stockid=(select stockid from st_stock where stockno='00') where sku='"+FMACHINECODE+"'");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ dbConnect.runSqlUpdate(sqllist);
|
|
|
+ return getSucReturnObject().toString();
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@API(title = "更新站点信息详情详情", apiversion = R.ID20230720143503.v1.class)
|
|
|
public String updateParameterSiteInfo() throws YosException {
|
|
|
@@ -939,4 +1086,15 @@ public class stockbill extends Controller {
|
|
|
}
|
|
|
return sqllist;
|
|
|
}
|
|
|
+
|
|
|
+ public String[] getDistinctArray(String[] arrays) {
|
|
|
+ ArrayList<String> a = new ArrayList<String>();
|
|
|
+ for (String array : arrays) {
|
|
|
+ if (!a.contains(array)) {
|
|
|
+ a.add(array);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int size = a.size();
|
|
|
+ return (String[]) a.toArray(new String[size]);
|
|
|
+ }
|
|
|
}
|