|
|
@@ -14,6 +14,7 @@ import com.actionsoft.sdk.local.SDK;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.awspaas.user.apps.donenow_ivt.constant.IVTConstant;
|
|
|
import com.awspaas.user.apps.donenow_ivt.utils.BigDecimalUtil;
|
|
|
+import com.ibm.icu.math.BigDecimal;
|
|
|
import me.chanjar.weixin.common.util.StringUtils;
|
|
|
|
|
|
import java.sql.Connection;
|
|
|
@@ -164,7 +165,43 @@ public class IVTController extends BaseController {
|
|
|
return success("");
|
|
|
}
|
|
|
|
|
|
+ @Mapping("com.awspaas.user.apps.donenow_ivt.queryExistPurchasereceive")
|
|
|
+ public String queryExistPurchasereceive(String ids, String bindId, UserContext uc) {
|
|
|
+ // 处理入参:优先用bindId查询采购项ID
|
|
|
+ String pureIds = "";
|
|
|
+ if (StringUtils.isNotBlank(bindId)) {
|
|
|
+ // 核心:通过bindId获取关联的采购项ID(和创建接口逻辑一致)
|
|
|
+ pureIds = DBSql.getString("SELECT GROUP_CONCAT(ID) from bo_eu_dnivt_order_product WHERE BINDID=?", new Object[]{bindId});
|
|
|
+ } else if (StringUtils.isNotBlank(ids)) {
|
|
|
+ pureIds = ids.trim();
|
|
|
+ if (pureIds.endsWith(",")) {
|
|
|
+ pureIds = pureIds.substring(0, pureIds.length() - 1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return "{\"code\":-1,\"msg\":\"请传入bindId或ids\"}";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(pureIds)) {
|
|
|
+ return "{\"code\":-1,\"msg\":\"无已存在的待接收接收单\"}";
|
|
|
+ }
|
|
|
+
|
|
|
+ String quotedIds = "'" + pureIds.replace(",", "','") + "'";
|
|
|
+ String checkSql = "SELECT DISTINCT s.BINDID FROM BO_EU_DNIVT_RECEIVE_SUB s " +
|
|
|
+ "WHERE s.ORDER_PRODUCT_ID IN (" + quotedIds + ") ";
|
|
|
+ String existBindId = DBSql.getString(checkSql, new Object[]{});
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(existBindId)) {
|
|
|
+ String url = SDK.getFormAPI().getFormURL("", uc.getSessionId(), existBindId, "", 1, "", "", "");
|
|
|
+ url = SDK.getPortalAPI().getPortalUrl() + "/r" + url.substring(1);
|
|
|
+ return "{\"code\":0,\"msg\":\"操作成功\",\"data\":\"" + url + "\"}";
|
|
|
+ } else {
|
|
|
+ return "{\"code\":-1,\"msg\":\"无已存在的待接收接收单\"}";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ *采购项接收
|
|
|
+ */
|
|
|
/**
|
|
|
*
|
|
|
*采购项接收
|
|
|
@@ -175,7 +212,10 @@ public class IVTController extends BaseController {
|
|
|
System.out.print("bindId:" + bindId);
|
|
|
|
|
|
if (StringUtils.isNotBlank(ids)) {
|
|
|
- ids = ids.substring(0, ids.length() - 1);
|
|
|
+ ids = ids.trim();
|
|
|
+ if (ids.endsWith(",")) {
|
|
|
+ ids = ids.substring(0, ids.length() - 1);
|
|
|
+ }
|
|
|
} else if (StringUtils.isNotBlank(bindId)) {
|
|
|
ids = DBSql.getString("SELECT GROUP_CONCAT(ID) from bo_eu_dnivt_order_product WHERE BINDID=?", new Object[]{bindId});
|
|
|
} else {
|
|
|
@@ -220,30 +260,50 @@ public class IVTController extends BaseController {
|
|
|
if (maps.size() == 0) {
|
|
|
return fail("请检查采购订单是否未审批!");
|
|
|
}
|
|
|
- ProcessInstance createBOProcessInstance = SDK.getProcessAPI().createBOProcessInstance(IVTConstant.obj_3121af9039dc454aa776f9bdadf6b239, uc.getUID(), "");
|
|
|
- //校验是否是同一个采购订单
|
|
|
+
|
|
|
+ // ========== 关键修改1:获取采购订单号 ==========
|
|
|
+ String purchaseOrderNo = null;
|
|
|
Set<String> set = new HashSet<String>();
|
|
|
- List<BO> list = new ArrayList<BO>();
|
|
|
for (RowMap map : maps) {
|
|
|
if (StringUtils.isNotBlank(map.getString("PURCHASE_ORDER_NO")) && StringUtils.isNotBlank(map.getString("PURCHASE_ORDER_NO").trim())) {
|
|
|
set.add(map.getString("PURCHASE_ORDER_NO"));
|
|
|
+ purchaseOrderNo = map.getString("PURCHASE_ORDER_NO"); // 提取采购订单号
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
if (set.size() > 1) {
|
|
|
System.out.println("setsetset:" + set);
|
|
|
-
|
|
|
return fail("一次只能接收同一个采购订单的采购项");
|
|
|
}
|
|
|
- for (RowMap orgMap : maps) {
|
|
|
|
|
|
- System.out.println("map:" + orgMap);
|
|
|
+ // ========== 关键修改2:查询是否已有采购接收主记录 ==========
|
|
|
+ BO existingMainBO = null;
|
|
|
+ if (StringUtils.isNotBlank(purchaseOrderNo)) {
|
|
|
+ // 查询条件:采购订单号匹配,可根据业务补充状态条件(比如排除已删除/已完成的记录)
|
|
|
+ existingMainBO = SDK.getBOAPI().query(IVTConstant.BO_EU_DNIVT_RECEIVE_MAIN)
|
|
|
+ .addQuery("PURCHASE_ORDER_NO=", purchaseOrderNo)
|
|
|
+ // 可选:添加状态过滤,比如 .addQuery("STATUS!=", "已完成")
|
|
|
+ .detail();
|
|
|
+ }
|
|
|
+
|
|
|
+ // ========== 关键修改3:有则返回已有记录的URL,无则创建新记录 ==========
|
|
|
+ if (existingMainBO != null) {
|
|
|
+ // 获取已有记录的流程实例ID,生成打开URL
|
|
|
+ String processInstanceId = existingMainBO.getBindId();
|
|
|
+ String url = SDK.getFormAPI().getFormURL("", uc.getSessionId(), processInstanceId, "", 1, "", "", "");
|
|
|
+ url = SDK.getPortalAPI().getPortalUrl() + "/r" + url.substring(1);
|
|
|
+ return success(url); // 直接返回已有记录的URL
|
|
|
+ }
|
|
|
|
|
|
+ // 原创建逻辑:无已有记录时才执行
|
|
|
+ ProcessInstance createBOProcessInstance = SDK.getProcessAPI().createBOProcessInstance(IVTConstant.obj_3121af9039dc454aa776f9bdadf6b239, uc.getUID(), "");
|
|
|
+
|
|
|
+ List<BO> list = new ArrayList<BO>();
|
|
|
+ for (RowMap orgMap : maps) {
|
|
|
+ System.out.println("map:" + orgMap);
|
|
|
Map<String, Object> map = convertKeysToUppercase(orgMap);
|
|
|
|
|
|
//采购数量不能为空,也不能小于0
|
|
|
Object purchaseQuantity = map.get("QUANTITY");
|
|
|
-
|
|
|
System.out.println("purchaseQuantity:" + purchaseQuantity);
|
|
|
if (purchaseQuantity == null || StringUtils.isBlank(purchaseQuantity.toString()) || Double.parseDouble(purchaseQuantity.toString()) <= 0) {
|
|
|
continue;
|
|
|
@@ -284,12 +344,14 @@ public class IVTController extends BaseController {
|
|
|
if (list.size() == 0) {
|
|
|
return fail("采购订单项都已经接收完毕");
|
|
|
}
|
|
|
+
|
|
|
//采购接收主表添加数据
|
|
|
RowMap rowMap = maps.get(0);
|
|
|
BO detail = SDK.getBOAPI().query(IVTConstant.BO_EU_DNIVT_ORDER).addQuery("PURCHASE_ORDER_NO=", rowMap.getString("purchase_order_no")).detail();
|
|
|
if (null == detail) {
|
|
|
return fail("未找到对应的订单");
|
|
|
}
|
|
|
+
|
|
|
//主表数据
|
|
|
BO bo = new BO();
|
|
|
bo.setBindId(createBOProcessInstance.getId());
|