Kaynağa Gözat

Merge branch 'master' of http://210.51.45.41:3000/itcat_admin/aws_donenow

HULEI 6 gün önce
ebeveyn
işleme
aefc13b283

+ 18 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractCreateController.java

@@ -569,4 +569,22 @@ public class contractCreateController {
         return ResponseObject.newOkResponse();
         return ResponseObject.newOkResponse();
     }
     }
 
 
+
+    /**
+     * 批量生产合同服务周期
+     * @return
+     */
+    @Mapping(value = "com.awspaas.user.apps.donenow_ctt.contract_service_exec", session = false, noSessionEvaluate = "无安全隐患", noSessionReason = "批量生产")
+    public String contractServicExec() {
+        List<RowMap> services = DBSql.getMaps("SELECT CONTRACT_ID,GROUP_CONCAT(ID) IDS FROM bo_eu_dnctt_contract_service WHERE CONTRACT_ID in (SELECT ID FROM BO_EU_DNCTT_CONTRACT WHERE FRAMEWORK='7c2841c3-8f51-4dea-a6ea-984d9b9c3574' AND NO NOT LIKE '%old%' ) GROUP BY CONTRACT_ID");
+        UserContext uc = UserContext.fromUID("admin");
+        for (RowMap service : services) {
+            String contractId = service.getString("CONTRACT_ID");
+            String serviceIds = service.getString("IDS");
+            servicePeriod(uc, contractId, serviceIds);
+            serviceCost(uc, contractId, serviceIds);
+        }
+        return "ok";
+    }
+
 }
 }

+ 20 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/contractCreateFormAfterSave.java

@@ -8,6 +8,7 @@ import com.actionsoft.bpms.commons.database.RowMap;
 import com.actionsoft.bpms.util.DBSql;
 import com.actionsoft.bpms.util.DBSql;
 import com.actionsoft.sdk.local.SDK;
 import com.actionsoft.sdk.local.SDK;
 import com.awspaas.user.apps.donenow_ctt.service.contractService;
 import com.awspaas.user.apps.donenow_ctt.service.contractService;
+import org.apache.commons.lang3.StringUtils;
 
 
 import java.sql.Connection;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLException;
@@ -122,6 +123,25 @@ public class contractCreateFormAfterSave extends ExecuteListener {
 
 
 
 
              */
              */
+
+            String CONTRACT_ID = DBSql.getString("select CONTRACT_ID from BO_EU_DNCTT_CONTRACT_SERVICE where BINDID=?", new Object[]{bindid});
+            try {
+                //新增服务后,根据服务的月成本、月收入 计算月利润
+                String profit = DBSql.getString("SELECT (SUM(UNIT_PRICE_MONTH)-SUM(UNIT_COST_MONTH))/SUM(UNIT_COST_MONTH) FROM BO_EU_DNCTT_CONTRACT_SERVICE WHERE CONTRACT_ID=? ", new Object[]{CONTRACT_ID});
+                RowMap contractBO = DBSql.getMap("select MINIMUM_PROFIT_MARGIN,ALLOW_COMMISSION_PAYMENT from BO_EU_DNCTT_CONTRACT where ID=?", new Object[]{CONTRACT_ID});
+                Double profitMargin = contractBO.getDouble("MINIMUM_PROFIT_MARGIN");
+                int ALLOW_COMMISSION_PAYMENT = 0;
+                if (profitMargin == null && StringUtils.isNotBlank(profit)) {
+                    if (Double.parseDouble(profit) * 100 >= profitMargin) {
+                        ALLOW_COMMISSION_PAYMENT = 1;
+                    }
+                }
+                DBSql.update("update BO_EU_DNCTT_CONTRACT set ALLOW_COMMISSION_PAYMENT=? where ID=?", new Object[]{ALLOW_COMMISSION_PAYMENT, CONTRACT_ID});
+            } catch (Exception e) {
+                e.printStackTrace();
+
+                DBSql.update("update BO_EU_DNCTT_CONTRACT set ALLOW_COMMISSION_PAYMENT=0 where ID=?", new Object[]{CONTRACT_ID});
+            }
         }
         }
 
 
         //修改服务
         //修改服务

+ 46 - 29
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractCommissionService.java

@@ -12,6 +12,7 @@ import com.actionsoft.sdk.local.api.Logger;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -150,10 +151,13 @@ public class contractCommissionService {
                 String CONTRACT_COST_ID = commission.getString("CONTRACT_COST_ID");
                 String CONTRACT_COST_ID = commission.getString("CONTRACT_COST_ID");
                 String CONTRACT_SERVICE_ID = commission.getString("CONTRACT_SERVICE_ID");
                 String CONTRACT_SERVICE_ID = commission.getString("CONTRACT_SERVICE_ID");
 
 
+                serviceLogger.info("CONTRACT_SERVICE_ID=" + CONTRACT_SERVICE_ID);
+                serviceLogger.info("CONTRACT_COST_ID=" + CONTRACT_COST_ID);
+
                 if (StringUtils.isBlank(CONTRACT_COST_ID) && StringUtils.isBlank(CONTRACT_SERVICE_ID))
                 if (StringUtils.isBlank(CONTRACT_COST_ID) && StringUtils.isBlank(CONTRACT_SERVICE_ID))
                     continue;
                     continue;
 
 
-                List<RowMap> bills = DBSql.getMaps("SELECT a.* FROM VIEW_EU_DNCTT_INVOICE_DETAIL a WHERE a.CONTRACT_ID =? AND a.RECEIVE_AMOUNT > 0 AND a.INVOICE_AMOUNT = 0 AND NOT EXISTS( SELECT 1 FROM BO_EU_DNCTT_SALES_COMMISSION_PERIOD b WHERE b.SALES_COMMISSION_ID =? AND b.CONTRACT_ID = a.CONTRACT_ID AND b.PAY_AMOUNT > 0 AND b.INVOICE_DETAIL_ID = a.ID) AND EXISTS ( SELECT 1 FROM BO_EU_DNCRM_ACCOUNT_DEDUCTION c WHERE c.ID = a.ACCOUNT_DEDUCTION_ID AND ( ( c.TYPE_ID = 1325 AND FIND_IN_SET( c.OBJECT_ID, ? )) OR ( c.TYPE_ID = 1321 AND FIND_IN_SET( c.OBJECT_ID, ? ) ) ) )", new Object[]{commission.getString("CONTRACT_ID"), commission.getString("ID"), CONTRACT_SERVICE_ID, CONTRACT_COST_ID});
+                List<RowMap> bills = DBSql.getMaps("SELECT a.* FROM VIEW_EU_DNCTT_INVOICE_DETAIL a WHERE a.CONTRACT_ID =? AND a.RECEIVE_AMOUNT > 0 AND a.INVOICE_AMOUNT = 0 AND NOT EXISTS( SELECT 1 FROM BO_EU_DNCTT_SALES_COMMISSION_PERIOD b WHERE b.SALES_COMMISSION_ID =? AND b.CONTRACT_ID = a.CONTRACT_ID AND b.PAY_AMOUNT > 0 AND b.INVOICE_DETAIL_ID = a.ID) AND ( EXISTS ( SELECT 1 FROM BO_EU_DNCRM_ACCOUNT_DEDUCTION c WHERE c.ID = a.ACCOUNT_DEDUCTION_ID AND c.TYPE_ID = 1321 AND FIND_IN_SET( c.OBJECT_ID, ? ) ) OR EXISTS ( SELECT 1 FROM BO_EU_DNCRM_ACCOUNT_DEDUCTION c JOIN BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD d ON c.OBJECT_ID = d.ID WHERE c.ID = a.ACCOUNT_DEDUCTION_ID AND c.TYPE_ID = 1325 AND FIND_IN_SET( d.CONTRACT_SERVICE_ID, ? ) ))", new Object[]{commission.getString("CONTRACT_ID"), commission.getString("ID"), CONTRACT_COST_ID, CONTRACT_SERVICE_ID});
 
 
                 serviceLogger.info("获取付款的收费条目:" + bills.size());
                 serviceLogger.info("获取付款的收费条目:" + bills.size());
 
 
@@ -163,6 +167,17 @@ public class contractCommissionService {
                     period.set("ID", null);
                     period.set("ID", null);
                     String ACCOUNT_DEDUCTION_ID = bill.getString("ACCOUNT_DEDUCTION_ID");//计费条目ID
                     String ACCOUNT_DEDUCTION_ID = bill.getString("ACCOUNT_DEDUCTION_ID");//计费条目ID
 
 
+                    //FEE_DATE  费用账期
+                    String FEE_DATE = DBSql.getString("SELECT MAX(c.RECEIVE_DATE) FROM BO_EU_DNCTT_INVOICE_PLAN a JOIN BO_EU_DNCTT_INVOICE_PLAN_DETAIL b ON a.BINDID=b.BINDID JOIN BO_EU_DNCTT_INVOICE_PLAN_RECEIVE c ON a.BINDID=c.BINDID WHERE a.ISEND=1 AND b.ACCOUNT_DEDUCTION_ID=?  ", new Object[]{ACCOUNT_DEDUCTION_ID});
+                    if (StringUtils.isBlank(FEE_DATE))
+                        continue;
+                    serviceLogger.info("FEE_DATE=" + FEE_DATE);
+                    FEE_DATE = FEE_DATE.substring(0, 10);
+                    //获取 FEE_DATE 的下个月
+                    FEE_DATE = contractService.getLocalDate(FEE_DATE).plusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM"));
+                    period.set("FEE_DATE", FEE_DATE);
+
+
                     BigDecimal shou_tax = BigDecimal.ZERO;//税率-收
                     BigDecimal shou_tax = BigDecimal.ZERO;//税率-收
                     BigDecimal fu_tax = BigDecimal.ZERO;//税率-付
                     BigDecimal fu_tax = BigDecimal.ZERO;//税率-付
 
 
@@ -176,11 +191,17 @@ public class contractCommissionService {
                         SDK.getProcessAPI().deleteById(comssionperiodBindId, uc.getUID());
                         SDK.getProcessAPI().deleteById(comssionperiodBindId, uc.getUID());
                     }
                     }
                     //获取合同服务的周期
                     //获取合同服务的周期
-                    RowMap service = DBSql.getMap("SELECT b.PERIOD_BEGIN_DATE,b.PERIOD_END_DATE,b.PERIOD_COST,b.CONTRACT_SERVICE_ID from BO_EU_DNCRM_ACCOUNT_DEDUCTION a JOIN BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD b ON a.OBJECT_ID=b.ID AND a.TYPE_ID=1325 AND a.ID=? ", new Object[]{ACCOUNT_DEDUCTION_ID});
+                    RowMap service = DBSql.getMap("SELECT b.PERIOD_BEGIN_DATE,b.PERIOD_END_DATE,b.PERIOD_COST,b.CONTRACT_SERVICE_ID,b.CONTRACT_ID,c.MINIMUM_PROFIT_MARGIN,c.ALLOW_COMMISSION_PAYMENT from BO_EU_DNCRM_ACCOUNT_DEDUCTION a JOIN BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD b ON a.OBJECT_ID=b.ID AND a.TYPE_ID=1325 JOIN BO_EU_DNCTT_CONTRACT c ON b.CONTRACT_ID=c.ID WHERE  a.ID=? ", new Object[]{ACCOUNT_DEDUCTION_ID});
 
 
                     RowMap ded = DBSql.getMap("select * from BO_EU_DNCRM_ACCOUNT_DEDUCTION where ID=?", new Object[]{ACCOUNT_DEDUCTION_ID});
                     RowMap ded = DBSql.getMap("select * from BO_EU_DNCRM_ACCOUNT_DEDUCTION where ID=?", new Object[]{ACCOUNT_DEDUCTION_ID});
 
 
                     if (service != null) {
                     if (service != null) {
+
+                        //利润不达标,不需要计算佣金
+                        if (RULE_CATE.equals("4648") && service.getDouble("MINIMUM_PROFIT_MARGIN") > 0 && service.getDouble("ALLOW_COMMISSION_PAYMENT") == 0) {
+                            continue;
+                        }
+
                         period.set("CONTRACT_SERVICE_ID", service.get("CONTRACT_SERVICE_ID"));
                         period.set("CONTRACT_SERVICE_ID", service.get("CONTRACT_SERVICE_ID"));
                         period.set("PERIOD_BEGIN_DATE", service.get("PERIOD_BEGIN_DATE"));//周期开始时间
                         period.set("PERIOD_BEGIN_DATE", service.get("PERIOD_BEGIN_DATE"));//周期开始时间
                         period.set("PERIOD_END_DATE", service.get("PERIOD_END_DATE"));//周期结束
                         period.set("PERIOD_END_DATE", service.get("PERIOD_END_DATE"));//周期结束
@@ -197,17 +218,18 @@ public class contractCommissionService {
                             COST_INCLUDE_TAX = COST_INCLUDE_TAX.subtract(RECEIVED_DOLLARS_INCLUDE_TAX);
                             COST_INCLUDE_TAX = COST_INCLUDE_TAX.subtract(RECEIVED_DOLLARS_INCLUDE_TAX);
 
 
                             if (lastPeriod.get("COST_BF_INCLUDE_TAX") != null) {
                             if (lastPeriod.get("COST_BF_INCLUDE_TAX") != null) {
-                                COST_INCLUDE_TAX = COST_INCLUDE_TAX.subtract(TypeUtil.convert(lastPeriod.get("COST_BF_INCLUDE_TAX"), BigDecimal.class));
+                                COST_INCLUDE_TAX = COST_INCLUDE_TAX.add(TypeUtil.convert(lastPeriod.get("COST_BF_INCLUDE_TAX"), BigDecimal.class));
                             }
                             }
 
 
+                            //本次转结成本
                             if (COST_INCLUDE_TAX.compareTo(BigDecimal.ZERO) > 0) {
                             if (COST_INCLUDE_TAX.compareTo(BigDecimal.ZERO) > 0) {
                                 period.set("COST_BF_INCLUDE_TAX", COST_INCLUDE_TAX);
                                 period.set("COST_BF_INCLUDE_TAX", COST_INCLUDE_TAX);
                             }
                             }
                         }
                         }
 
 
-                        RowMap contractService = DBSql.getMap("SELECT IS_CTRTAX_APPLIED,TAX_CATEGORY_ID,VAT_TAX,PURCHASE_TAX_CATEGORY_ID FROM BO_EU_DNCTT_CONTRACT_SERVICE WHERE ID=?", new Object[]{service.get("CONTRACT_SERVICE_ID")});
+                        RowMap contractService = DBSql.getMap("SELECT IS_CTRTAX_APPLIED,TAX_CATEGORY_ID,VAT_TAX,PURCHASE_TAX_CATEGORY_ID,NAME FROM BO_EU_DNCTT_CONTRACT_SERVICE WHERE ID=?", new Object[]{service.get("CONTRACT_SERVICE_ID")});
                         if (contractService != null) {
                         if (contractService != null) {
-
+                            period.set("CONTRACT_SERVICE_NAME", contractService.get("NAME"));
                             //应收用的税
                             //应收用的税
                             RowMap taxcate = DBSql.getMap("SELECT NAME,EXT1 FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{contractService.getString("TAX_CATEGORY_ID"), uc.getCompanyModel().getId()});
                             RowMap taxcate = DBSql.getMap("SELECT NAME,EXT1 FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{contractService.getString("TAX_CATEGORY_ID"), uc.getCompanyModel().getId()});
                             shou_tax = TypeUtil.convert(taxcate.get("EXT1"), BigDecimal.class);
                             shou_tax = TypeUtil.convert(taxcate.get("EXT1"), BigDecimal.class);
@@ -235,21 +257,20 @@ public class contractCommissionService {
                     //period.set("COST_INCLUDE_TAX", bill.get(""));//本期成本(含税)
                     //period.set("COST_INCLUDE_TAX", bill.get(""));//本期成本(含税)
                     //period.set("COST_BF_INCLUDE_TAX", bill.get(""));//上期结转成本(含税)
                     //period.set("COST_BF_INCLUDE_TAX", bill.get(""));//上期结转成本(含税)
 
 
-                    if (shou_tax.compareTo(BigDecimal.ZERO) > 0) {
-                        shou_tax = BigDecimal.ONE.add(shou_tax);
-                        period.set("RECEIVABLE_DOLLARS", TypeUtil.convert(period.get("RECEIVABLE_DOLLARS_INCLUDE_TAX"), BigDecimal.class).divide(shou_tax, 10, BigDecimal.ROUND_HALF_UP));//本期应收款(不含税)
+                    // if (shou_tax.compareTo(BigDecimal.ZERO) > 0) {
+                    shou_tax = BigDecimal.ONE.add(shou_tax);
+                    period.set("RECEIVABLE_DOLLARS", TypeUtil.convert(period.get("RECEIVABLE_DOLLARS_INCLUDE_TAX"), BigDecimal.class).divide(shou_tax, 10, BigDecimal.ROUND_HALF_UP));//本期应收款(不含税)
 
 
-                        period.set("RECEIVED_DOLLARS", TypeUtil.convert(period.get("RECEIVED_DOLLARS_INCLUDE_TAX"), BigDecimal.class).divide(shou_tax, 10, BigDecimal.ROUND_HALF_UP));//本期已收款(不含税)
-                    }
-
-                    if (fu_tax.compareTo(BigDecimal.ZERO) > 0) {
-                        fu_tax = BigDecimal.ONE.add(fu_tax);
-                        if (period.containsKey("COST_INCLUDE_TAX") && period.get("COST_INCLUDE_TAX") != null)
-                            period.set("COST", TypeUtil.convert(period.get("COST_INCLUDE_TAX"), BigDecimal.class).divide(fu_tax, 10, BigDecimal.ROUND_HALF_UP));//本期成本(不含税)
-                        if (period.containsKey("COST_BF_INCLUDE_TAX") && period.get("COST_BF_INCLUDE_TAX") != null)
-                            period.set("COST_BF", TypeUtil.convert(period.get("COST_BF_INCLUDE_TAX"), BigDecimal.class).divide(fu_tax, 10, BigDecimal.ROUND_HALF_UP));//上期结转成本(不含税)
-                    }
+                    period.set("RECEIVED_DOLLARS", TypeUtil.convert(period.get("RECEIVED_DOLLARS_INCLUDE_TAX"), BigDecimal.class).divide(shou_tax, 10, BigDecimal.ROUND_HALF_UP));//本期已收款(不含税)
+                    // }
 
 
+                    // if (fu_tax.compareTo(BigDecimal.ZERO) > 0) {
+                    fu_tax = BigDecimal.ONE.add(fu_tax);
+                    if (period.containsKey("COST_INCLUDE_TAX") && period.get("COST_INCLUDE_TAX") != null)
+                        period.set("COST", TypeUtil.convert(period.get("COST_INCLUDE_TAX"), BigDecimal.class).divide(fu_tax, 10, BigDecimal.ROUND_HALF_UP));//本期成本(不含税)
+                    if (period.containsKey("COST_BF_INCLUDE_TAX") && period.get("COST_BF_INCLUDE_TAX") != null)
+                        period.set("COST_BF", TypeUtil.convert(period.get("COST_BF_INCLUDE_TAX"), BigDecimal.class).divide(fu_tax, 10, BigDecimal.ROUND_HALF_UP));//上期结转成本(不含税)
+                    // }
 
 
                     switch (RULE_CATE) {
                     switch (RULE_CATE) {
                         case "4647": {
                         case "4647": {
@@ -275,10 +296,10 @@ public class contractCommissionService {
                             //销售净利百分比:针对已经全部收款的合同服务进行生成,创建一条合同佣金周期记录
                             //销售净利百分比:针对已经全部收款的合同服务进行生成,创建一条合同佣金周期记录
                             BigDecimal RATIO = TypeUtil.convert(commission.get("RATIO"), BigDecimal.class);
                             BigDecimal RATIO = TypeUtil.convert(commission.get("RATIO"), BigDecimal.class);
                             //使用含税价
                             //使用含税价
+
                             if (commission.getString("INCLUDE_TAX").equals("1")) {
                             if (commission.getString("INCLUDE_TAX").equals("1")) {
                                 COMMISSION_DOLLARS = TypeUtil.convert(bill.get("RECEIVE_AMOUNT"), BigDecimal.class);
                                 COMMISSION_DOLLARS = TypeUtil.convert(bill.get("RECEIVE_AMOUNT"), BigDecimal.class);
 
 
-                                //本期成本(含税)
                                 if (period.containsKey("COST_INCLUDE_TAX") && period.get("COST_INCLUDE_TAX") != null)
                                 if (period.containsKey("COST_INCLUDE_TAX") && period.get("COST_INCLUDE_TAX") != null)
                                     COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_INCLUDE_TAX"), BigDecimal.class));
                                     COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_INCLUDE_TAX"), BigDecimal.class));
 
 
@@ -286,13 +307,6 @@ public class contractCommissionService {
                                 if (period.containsKey("COST_BF_INCLUDE_TAX") && period.get("COST_BF_INCLUDE_TAX") != null)
                                 if (period.containsKey("COST_BF_INCLUDE_TAX") && period.get("COST_BF_INCLUDE_TAX") != null)
                                     COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_BF_INCLUDE_TAX"), BigDecimal.class));
                                     COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_BF_INCLUDE_TAX"), BigDecimal.class));
 
 
-                                period.set("NET_PROFIT", COMMISSION_DOLLARS);//利润
-
-                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
-
-                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
-                                period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
-
                             } else {
                             } else {
                                 //使用不含税价
                                 //使用不含税价
                                 COMMISSION_DOLLARS = TypeUtil.convert(period.get("RECEIVED_DOLLARS"), BigDecimal.class);//不含税已收
                                 COMMISSION_DOLLARS = TypeUtil.convert(period.get("RECEIVED_DOLLARS"), BigDecimal.class);//不含税已收
@@ -305,13 +319,16 @@ public class contractCommissionService {
                                 if (period.containsKey("COST_BF") && period.get("COST_BF") != null)
                                 if (period.containsKey("COST_BF") && period.get("COST_BF") != null)
                                     COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_BF"), BigDecimal.class));
                                     COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_BF"), BigDecimal.class));
 
 
-                                period.set("NET_PROFIT", COMMISSION_DOLLARS);//利润
+                            }
 
 
+                            if (COMMISSION_DOLLARS.compareTo(BigDecimal.ZERO) > 0) {
+                                period.set("NET_PROFIT", COMMISSION_DOLLARS);//利润
                                 COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
                                 COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
-
                                 COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
                                 COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
                                 period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
                                 period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
-
+                            } else {
+                                period.set("NET_PROFIT", BigDecimal.ZERO);
+                                period.set("COMMISSION_DOLLARS", BigDecimal.ZERO);
                             }
                             }
 
 
                         }
                         }

+ 42 - 1
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/controller/ivtOrderController.java

@@ -15,6 +15,7 @@ import com.actionsoft.bpms.util.DBSql;
 import com.actionsoft.bpms.util.TypeUtil;
 import com.actionsoft.bpms.util.TypeUtil;
 import com.actionsoft.sdk.local.SDK;
 import com.actionsoft.sdk.local.SDK;
 import com.actionsoft.sdk.local.api.Logger;
 import com.actionsoft.sdk.local.api.Logger;
+import com.actionsoft.sdk.local.api.TaskAPI;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
@@ -626,7 +627,8 @@ public class ivtOrderController {
         sql = sql.substring(0, sql.length() - 1) + ")";
         sql = sql.substring(0, sql.length() - 1) + ")";
         List<RowMap> costList = DBSql.getMaps(sql, Arrays.stream(serviceArr).toArray());
         List<RowMap> costList = DBSql.getMaps(sql, Arrays.stream(serviceArr).toArray());
 
 
-        if (costList.isEmpty()) return ResponseObject.newErrResponse("没有找到对应的合同产品");
+        if (costList.isEmpty())
+            return ResponseObject.newErrResponse("没有找到对应的合同产品");
 
 
 
 
         String costIds = costList.stream().map(cost -> cost.getString("ID")).collect(Collectors.joining(","));
         String costIds = costList.stream().map(cost -> cost.getString("ID")).collect(Collectors.joining(","));
@@ -648,6 +650,45 @@ public class ivtOrderController {
 
 
         return createPurchaseOrder(uc, costIds);
         return createPurchaseOrder(uc, costIds);
     }
     }
+456
+
+    @Mapping(value = "com.awspaas.user.apps.donenow_ivt.contract_serviceOrder_exec", session = false, noSessionEvaluate = "无安全隐患", noSessionReason = "批量生产")
+    public String contractServicExec() throws SQLException {
+        List<RowMap> services = DBSql.getMaps("SELECT CONTRACT_ID,GROUP_CONCAT(ID) IDS FROM bo_eu_dnctt_contract_service WHERE CONTRACT_ID in (SELECT ID FROM BO_EU_DNCTT_CONTRACT WHERE FRAMEWORK='7c2841c3-8f51-4dea-a6ea-984d9b9c3574' AND NO NOT LIKE '%old%' ) GROUP BY CONTRACT_ID");
+        UserContext uc = UserContext.fromUID("admin");
+        for (RowMap service : services) {
+            String contractId = service.getString("CONTRACT_ID");
+            String serviceIds = service.getString("IDS");
+            createPurchaseOrderByServiceId(uc, serviceIds);
+
+        }
+
+        return "ok";
+    }
+
+    @Mapping(value = "com.awspaas.user.apps.donenow_ivt.contract_serviceOrder_exec2", session = false, noSessionEvaluate = "无安全隐患", noSessionReason = "批量生产")
+    public String contractServicExec2() throws SQLException {
+        List<RowMap> services = DBSql.getMaps("SELECT c.ID FROM bo_eu_dnctt_contract_service a JOIN bo_eu_dnivt_order_product b ON a.ID=b.CONTRACT_SERVICE_ID JOIN wfc_task c ON b.BINDID=c.PROCESSINSTID WHERE  c.CONTROLSTATE='active' AND c.TASKSTATE=1  AND a.CONTRACT_ID in (SELECT ID FROM BO_EU_DNCTT_CONTRACT WHERE FRAMEWORK='7c2841c3-8f51-4dea-a6ea-984d9b9c3574' AND NO NOT LIKE '%old%' ) ");
+        UserContext uc = UserContext.fromUID("admin");
+
+        TaskAPI taskAPI = SDK.getTaskAPI();
+
+        for (RowMap service : services) {
+            String taskId = service.getString("ID");
+            taskAPI.completeTask(taskId, "admin");
+        }
+
+
+        DBSql.update("UPDATE bo_eu_dnctt_contract_service a \n" +
+                "JOIN bo_eu_dnivt_order_product b ON a.ID=b.CONTRACT_SERVICE_ID \n" +
+                "JOIN bo_eu_dnivt_order c ON b.BINDID=c.BINDID \n" +
+                "JOIN BO_EU_DNCTT_CONTRACT d ON a.CONTRACT_ID=d.ID \n" +
+                "JOIN BO_EU_1763622342236 e ON d.`NAME`=e.`NAME` \n" +
+                "SET c.PURCHASE_ORDER_NO=e.NO\n" +
+                "WHERE  d.FRAMEWORK='7c2841c3-8f51-4dea-a6ea-984d9b9c3574' AND d.NO NOT LIKE '%old%'");
+
+        return "ok";
+    }
 
 
     /**
     /**
      * 创建采购订单
      * 创建采购订单