Преглед на файлове

Merge remote-tracking branch 'origin/develop' into develop

shenjingwei преди 4 месеца
родител
ревизия
94e70ade9f

+ 1 - 1
src/custom/beans/stockbill/bills/BasicBill.java

@@ -313,7 +313,7 @@ public abstract class BasicBill {
         this.siteid = billRow.getString("siteid");
         this.status = billRow.getString("status");
         this.period = billRow.getString("period");
-        itemRows = dbConnect.runSqlQuery("select t1.*,ifnull(t1.sa_orderitemsid,0) sa_orderitemsidnum from st_stockbill_items t1 where t1.st_stockbillid ='" + st_stockbillid + "'");
+        itemRows = dbConnect.runSqlQuery("select t1.*,ifnull(t1.sa_orderitemsid,0) sa_orderitemsidnum,t2.isnegative,t2.ismodule from st_stockbill_items t1 left join plm_item t2 on t1.itemid=t2.itemid where t1.st_stockbillid ='" + st_stockbillid + "'");
         codeRows = dbConnect.runSqlQuery("select t1.* from st_stockbill_items_sku t1 where t1.st_stockbillid ='" + st_stockbillid + "'");
     }
 

+ 22 - 0
src/custom/beans/stockbill/bills/XSCK.java

@@ -58,6 +58,7 @@ public class XSCK extends BasicBill {
                 }
             }
 
+
             /*
               库存校验
              */
@@ -75,6 +76,27 @@ public class XSCK extends BasicBill {
             其他校验
              */
         }
+        //库存校验
+        RowsMap invbalsRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal").setWhere("siteid", siteid).setWhere("itemid", itemRows.toArrayList("itemid")).query().toRowsMap("itemid");
+        for(Row row : itemRows){
+            if(!row.getBoolean("isnegative") && row.getBoolean("ismodule")){
+                long itemid = row.getLong("itemid");
+                long stockid = row.getLong("stockid");
+                BigDecimal qty =row.getBigDecimal("qty");
+                if(!isInStock(ischeck)){
+                    if (!invbalsRowsMap.containsKey(String.valueOf(itemid)) || !invbalsRowsMap.get(String.valueOf(itemid)).toRowsMap("stockid").containsKey(String.valueOf(stockid))) {
+                        throw new YosException("行【"+row.getString("itemno")+"】不能负库存出库");
+                    } else {
+                        BigDecimal invbalqty = invbalsRowsMap.get(String.valueOf(itemid)).toRowsMap("stockid").get(String.valueOf(stockid)).get(0).getBigDecimal("qty");
+                        if(invbalqty.compareTo(qty)<0){
+                            throw new YosException("行【"+row.getString("itemno")+"】不能负库存出库");
+                        }
+                    }
+                }
+
+            }
+        }
+
         if ((ischeck && rb == 1) || (!ischeck && rb == 0)) {
             if (order_paymentnode.equals("3") && !Accountbalance.judgeBalance(dbConnect, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), itemRows.toRowsMap("sa_orderitemsidnum").get("0").sum("amount"))) {
                 throw new YosException("账户余额不足,还差" + Accountbalance.InsufficientBalance(dbConnect, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), itemRows.toRowsMap("sa_orderitemsidnum").get("0").sum("amount")) + "元!");

+ 1 - 0
src/custom/restcontroller/webmanage/sale/invbal/invbal.java

@@ -97,6 +97,7 @@ public class invbal extends Controller {
             if (whereObject.containsKey("ismodule") && !"".equals(whereObject.getString("ismodule"))) {
                 where.append(" and(");
                 where.append("t2.ismodule ='").append(whereObject.getString("ismodule")).append("' ");
+                where.append(" and t2.isnegative ='0' ");
                 where.append(")");
             }
         }

+ 4 - 4
src/custom/restcontroller/webmanage/sale/item/Item.java

@@ -75,10 +75,10 @@ public class Item extends Controller {
             }
             
             if(content.getBooleanValue("ismodule")){
-                Rows aftersalesitemnorows = dbConnect.runSqlQuery("select aftersalesitemno from plm_item where siteid='"+siteid+"' and aftersalesitemno='"+aftersalesitemno+"'");
-                if(aftersalesitemnorows.isNotEmpty()){
-                    return getErrReturnObject().setErrMsg("该配件的售后品号" + aftersalesitemno + "已存在,请修改").toString();
-                }
+//                Rows aftersalesitemnorows = dbConnect.runSqlQuery("select aftersalesitemno from plm_item where siteid='"+siteid+"' and aftersalesitemno='"+aftersalesitemno+"'");
+//                if(aftersalesitemnorows.isNotEmpty()){
+//                    return getErrReturnObject().setErrMsg("该配件的售后品号" + aftersalesitemno + "已存在,请修改").toString();
+//                }
             }
 
 

+ 44 - 14
src/custom/restcontroller/webmanage/sale/serviceorder/serviceorder.java

@@ -763,7 +763,7 @@ public class serviceorder extends Controller {
     public String sendMessage() throws YosException {
         String customerphone = "";
         long sa_workorderid=content.getLong("sa_workorderid");
-        Rows rows = dbConnect.runSqlQuery("select t1.type,t2.* from sa_workorder t1 inner join sa_serviceorder t2 on t1.sa_serviceorderid=t2.sa_serviceorderid and t1.siteid=t2.siteid where t1.sa_workorderid="+sa_workorderid);
+        Rows rows = dbConnect.runSqlQuery("select t1.type,t1.verificationcode,t1.verificationdate,t2.* from sa_workorder t1 inner join sa_serviceorder t2 on t1.sa_serviceorderid=t2.sa_serviceorderid and t1.siteid=t2.siteid where t1.sa_workorderid="+sa_workorderid);
         if(rows.isEmpty()){
             return getErrReturnObject().setErrMsg("该工单不存在").toString();
         }
@@ -783,12 +783,18 @@ public class serviceorder extends Controller {
                 customerphone=rows.get(0).getString("scenecontactphonenumber");
             }
         }
-
-
-        if (!Pattern.matches("^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$", customerphone)) {
-            return getErrReturnObject().setErrMsg("手机格式有误").toString();
+        if(StringUtils.isNotBlank(customerphone)){
+            if (!Pattern.matches("^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$", customerphone)) {
+                return getErrReturnObject().setErrMsg("手机格式有误").toString();
+            }
+        }
+        String verificationCode ="";
+        if(StringUtils.isBlank(rows.get(0).getString("verificationcode"))){
+            verificationCode = createVerificationCode();
+        }else{
+            verificationCode = rows.get(0).getString("verificationcode");
         }
-        String verificationCode = createVerificationCode();
+
         dbConnect.runSqlUpdate("update sa_workorder set verificationcode='"+verificationCode+"' where sa_workorderid="+sa_workorderid);
         Rows wxserviceRows = dbConnect.runSqlQuery("select t2.userid from sys_wechatapp_openids t1 inner join sys_users t2 on t1.userid=t2.userid where t2.phonenumber='"+customerphone+"'");
         Row row = new Row();
@@ -802,12 +808,23 @@ public class serviceorder extends Controller {
                 row.put("msg", "验证码已发送,请注意查收!");
             }
         }else {
-            if(StringUtils.isNotBlank("customerphone")){
-                Sms sms = new Sms();
-                sms.sendout(Sms.SmsType.PassWord,customerphone, Parameter.getString("chuanglan_sms_model_password"), new String[]{verificationCode});
-                message_map.put(customerphone, new VerificationManage(verificationCode));
-            }
             if (!BaseClass.isdebug() && !Arrays.asList(Parameter.getString("system_invalidate_phonenumber").split(",")).contains(customerphone)) {
+                if(StringUtils.isNotBlank("customerphone")){
+                    if(StringUtils.isNotBlank(rows.get(0).getString("verificationdate"))){
+                        if(isMoreThanOneHourUsingCalendar(rows.get(0).getDate("verificationdate"),new Date())){
+                            Sms sms = new Sms();
+                            sms.sendout(Sms.SmsType.PassWord,customerphone, Parameter.getString("chuanglan_sms_model_password"), new String[]{verificationCode});
+                            message_map.put(customerphone, new VerificationManage(verificationCode));
+                            dbConnect.runSqlUpdate("update sa_workorder set verificationdate=CURRENT_TIME where sa_workorderid="+sa_workorderid);
+                        }
+                    }else{
+                        Sms sms = new Sms();
+                        sms.sendout(Sms.SmsType.PassWord,customerphone, Parameter.getString("chuanglan_sms_model_password"), new String[]{verificationCode});
+                        message_map.put(customerphone, new VerificationManage(verificationCode));
+                        dbConnect.runSqlUpdate("update sa_workorder set verificationdate=CURRENT_TIME where sa_workorderid="+sa_workorderid);
+                    }
+
+                }
                 row.put("code", 1);
                 row.put("msg", "手机验证码已发送,请注意查收!");
             }else{
@@ -908,9 +925,9 @@ public class serviceorder extends Controller {
                         workpresetInfo1.setRequired(row2.getLong("required"));
                         workpresetInfo1.setTextedit(row2.getLong("textedit"));
                         workpresetInfo1.setSignature(row2.getLong("signature"));
-                        workpresetInfo1.setPasscheck(row.getLong("passcheck"));
-                        workpresetInfo1.setQuestionedit(row.getLong("questionedit"));
-                        workpresetInfo1.setQuestionoption(row.getString("questionoption"));
+                        workpresetInfo1.setPasscheck(row2.getLong("passcheck"));
+                        workpresetInfo1.setQuestionedit(row2.getLong("questionedit"));
+                        workpresetInfo1.setQuestionoption(row2.getString("questionoption"));
                         String workpresetjson1 = JSONObject.toJSONString(workpresetInfo1);
                         SQLFactory sqlFactory1 = new SQLFactory(this, "服务工单流程节点新增");
                         sqlFactory1.addParameter("sa_workorder_nodeid", createTableID("sa_workorder_node"));
@@ -957,4 +974,17 @@ public class serviceorder extends Controller {
         return s;
     }
 
+    /**
+     * 方法2:使用 Calendar 计算是否超过一小时
+     */
+    public  boolean isMoreThanOneHourUsingCalendar(Date date1, Date date2) {
+        Calendar cal1 = Calendar.getInstance();
+        Calendar cal2 = Calendar.getInstance();
+        cal1.setTime(date1);
+        cal2.setTime(date2);
+
+        // 计算相差的毫秒数
+        long diffInMillis = Math.abs(cal2.getTimeInMillis() - cal1.getTimeInMillis());
+        return diffInMillis >= 3600000L;
+    }
 }

+ 2 - 1
src/custom/restcontroller/webmanage/sale/serviceorder/tools/VerificationManage.java

@@ -38,7 +38,8 @@ public class VerificationManage {
     }
 
     public boolean isExpire(){
-        return effectivedate.before(new Date());
+        //return effectivedate.before(new Date());
+        return false; //验证码不过期
     }
 
     public boolean check(String code){

+ 1 - 0
src/custom/restcontroller/webmanage/sale/workorder/SQL/查询可添加配件列表.sql

@@ -19,6 +19,7 @@ SELECT t1.itemid,
        t1.colorschemeid,
        t1.cheekschemeid,
        t1.sa_customschemeid,
+       t1.repairattribute,
        t4.unitname unit,
        t5.unitname auxunit,
        t2.conversionrate,

+ 3 - 3
src/custom/restcontroller/webmanage/sale/workorder/workorder.java

@@ -1265,9 +1265,9 @@ public class workorder extends Controller {
                         workpresetInfo1.setRequired(row2.getLong("required"));
                         workpresetInfo1.setTextedit(row2.getLong("textedit"));
                         workpresetInfo1.setSignature(row2.getLong("signature"));
-                        workpresetInfo1.setPasscheck(row.getLong("passcheck"));
-                        workpresetInfo1.setQuestionedit(row.getLong("questionedit"));
-                        workpresetInfo1.setQuestionoption(row.getString("questionoption"));
+                        workpresetInfo1.setPasscheck(row2.getLong("passcheck"));
+                        workpresetInfo1.setQuestionedit(row2.getLong("questionedit"));
+                        workpresetInfo1.setQuestionoption(row2.getString("questionoption"));
                         String workpresetjson1 = JSONObject.toJSONString(workpresetInfo1);
                         SQLFactory sqlFactory1 = new SQLFactory(this, "服务工单流程节点新增");
                         sqlFactory1.addParameter("sa_workorder_nodeid", createTableID("sa_workorder_node"));