Browse Source

Merge remote-tracking branch 'origin/dev'

Hu Jie 7 years ago
parent
commit
030c100191

+ 3 - 3
pom.xml

@@ -33,9 +33,9 @@
         </profile>
         <profile>
             <!-- 生产环境 -->
-            <id>prod</id>
+            <id>ptest</id>
             <properties>
-                <profile>prod</profile>
+                <profile>ptest</profile>
                 <!-- static plugin -->
                 <static-path>static</static-path>
             </properties>
@@ -585,4 +585,4 @@
             </plugins>
         </pluginManagement>
     </build>
-</project>
+</project>

+ 33 - 0
src/main/java/com/uas/platform/b2b/erp/model/PurchaseDetail.java

@@ -50,8 +50,38 @@ public class PurchaseDetail {
 	private Float pd_purctaxrate;
 	//终端币别
 	private String pd_purccurrency;
+	//税收分类编码
+	private String pd_taxcode;
+	//开票名称
+	private String pd_billname;
+	//开票型号
+	private String pd_orispeccode;
 	private List<Attach> attaches;
 
+	public String getPd_taxcode() {
+		return pd_taxcode;
+	}
+
+	public void setPd_taxcode(String pd_taxcode) {
+		this.pd_taxcode = pd_taxcode;
+	}
+
+	public String getPd_billname() {
+		return pd_billname;
+	}
+
+	public void setPd_billname(String pd_billname) {
+		this.pd_billname = pd_billname;
+	}
+
+	public String getPd_orispeccode() {
+		return pd_orispeccode;
+	}
+
+	public void setPd_orispeccode(String pd_orispeccode) {
+		this.pd_orispeccode = pd_orispeccode;
+	}
+
 	public Float getPd_purcprice() {
 		return pd_purcprice;
 	}
@@ -265,6 +295,9 @@ public class PurchaseDetail {
 		item.setPurcCurrency(this.pd_purccurrency);
 		item.setPurcPrice(this.pd_purcprice);
 		item.setPurcTaxRate(this.pd_purctaxrate);
+		item.setTaxCode(this.pd_taxcode);
+		item.setBillName(this.pd_billname);
+		item.setOriSpecCode(this.pd_orispeccode);
 		if (!CollectionUtils.isEmpty(this.attaches)) {
 			Set<com.uas.platform.b2b.model.Attach> b2bAttaches = new HashSet<com.uas.platform.b2b.model.Attach>();
 			for(Attach attach : this.attaches) {

+ 33 - 0
src/main/java/com/uas/platform/b2b/erp/model/SaleDownDetail.java

@@ -42,6 +42,36 @@ public class SaleDownDetail {
 	private Float sd_SpecTaxRate;
 	//终端币别
 	private String sd_SpecCurrency;
+	//客户物料税收分类编码
+	private String sd_prodtaxcode;
+	//客户物料开票名称
+	private String sd_prodbillname;
+	//客户物料开票型号
+	private String sd_prodorispeccode;
+
+	public String getSd_prodtaxcode() {
+		return sd_prodtaxcode;
+	}
+
+	public void setSd_prodtaxcode(String sd_prodtaxcode) {
+		this.sd_prodtaxcode = sd_prodtaxcode;
+	}
+
+	public String getSd_prodbillname() {
+		return sd_prodbillname;
+	}
+
+	public void setSd_prodbillname(String sd_prodbillname) {
+		this.sd_prodbillname = sd_prodbillname;
+	}
+
+	public String getSd_prodorispeccode() {
+		return sd_prodorispeccode;
+	}
+
+	public void setSd_prodorispeccode(String sd_prodorispeccode) {
+		this.sd_prodorispeccode = sd_prodorispeccode;
+	}
 
 	public Float getSd_SpecPrice() {
 		return sd_SpecPrice;
@@ -296,6 +326,9 @@ public class SaleDownDetail {
 		this.sd_SpecPrice = orderItem.getPurcPrice();
 		this.sd_SpecCurrency = orderItem.getPurcCurrency();
 		this.sd_SpecTaxRate = orderItem.getPurcTaxRate();
+		this.sd_prodtaxcode = orderItem.getTaxCode();
+		this.sd_prodbillname = orderItem.getBillName();
+		this.sd_prodorispeccode = orderItem.getOriSpecCode();
 	}
 
 	/**

+ 2 - 1
src/main/java/com/uas/platform/b2b/model/Distribute.java

@@ -13,7 +13,8 @@ import java.io.Serializable;
 @Entity
 @Table(name = "purc$distribute", indexes =
         {@Index(name = "purc$distribute_vdid_IDX", columnList = "pd_vdid"),
-                @Index(name = "purc$distribute_useruu_IDX", columnList = "pd_useruu")
+                @Index(name = "purc$distribute_useruu_IDX", columnList = "pd_useruu"),
+                @Index(name = "purc$distribute_leaderuu_IDX", columnList = "pd_leaderuu")
 })
 public class Distribute implements Serializable {
 	

+ 42 - 0
src/main/java/com/uas/platform/b2b/model/PurcOrderInfoItem.java

@@ -244,6 +244,48 @@ public class PurcOrderInfoItem extends AbstractRedDotKey {
 	@Column(name = "pd_erpdate")
 	private Date erpDate;
 
+	/**
+	 * 税收分类编码
+	 */
+	@Column(name = "pd_taxcode")
+	private String taxCode;
+
+	/**
+	 * 开票名称
+	 */
+	@Column(name = "pd_billname")
+	private String billName;
+
+	/**
+	 * 开票型号
+	 */
+	@Column(name = "pd_orispeccode")
+	private String oriSpecCode;
+
+	public String getTaxCode() {
+		return taxCode;
+	}
+
+	public void setTaxCode(String taxCode) {
+		this.taxCode = taxCode;
+	}
+
+	public String getBillName() {
+		return billName;
+	}
+
+	public void setBillName(String billName) {
+		this.billName = billName;
+	}
+
+	public String getOriSpecCode() {
+		return oriSpecCode;
+	}
+
+	public void setOriSpecCode(String oriSpecCode) {
+		this.oriSpecCode = oriSpecCode;
+	}
+
 	public Long getId() {
 		return id;
 	}

+ 43 - 1
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java

@@ -247,6 +247,24 @@ public class PurchaseOrderAllItem extends AbstractRedDotKey {
 	@Column(name = "pd_purccurrency")
 	private String purcCurrency;
 
+	/**
+	 * 税收分类编码
+	 */
+	@Column(name = "pd_taxcode")
+	private String taxCode;
+
+	/**
+	 * 开票名称
+	 */
+	@Column(name = "pd_billname")
+	private String billName;
+
+	/**
+	 * 开票型号
+	 */
+	@Column(name = "pd_orispeccode")
+	private String oriSpecCode;
+
 	/**
 	 * 是否在变更中
 	 */
@@ -259,7 +277,31 @@ public class PurchaseOrderAllItem extends AbstractRedDotKey {
 	@Transient
 	private Double latestReplyQty;
 
-    public Long getId() {
+	public String getTaxCode() {
+		return taxCode;
+	}
+
+	public void setTaxCode(String taxCode) {
+		this.taxCode = taxCode;
+	}
+
+	public String getBillName() {
+		return billName;
+	}
+
+	public void setBillName(String billName) {
+		this.billName = billName;
+	}
+
+	public String getOriSpecCode() {
+		return oriSpecCode;
+	}
+
+	public void setOriSpecCode(String oriSpecCode) {
+		this.oriSpecCode = oriSpecCode;
+	}
+
+	public Long getId() {
 		return id;
 	}
 

+ 9 - 9
src/main/java/com/uas/platform/b2b/ps/ProductUtils.java

@@ -127,7 +127,7 @@ public class ProductUtils {
                 throw new RuntimeException("批量更新物料出现异常:" + e.getMessage());
             }
         }
-        return null;
+        return new ArrayList<>();
     }
 
     /**
@@ -151,7 +151,7 @@ public class ProductUtils {
         } else {
             throw new RuntimeException("单个更新物料异常");
         }
-        return null;
+        return 0L;
     }
 
     /**
@@ -441,7 +441,7 @@ public class ProductUtils {
             String resultCode = null != res ? String.valueOf(res.getStatusCode()) : "access error";
             logger.error("findByEnUUAndCode http response status error: " + resultCode);
         }
-        return null;
+        return new ArrayList<>();
     }
 
     /**
@@ -465,7 +465,7 @@ public class ProductUtils {
             String resultCode = null != res ? String.valueOf(res.getStatusCode()) : "access error";
             logger.error("findByIds http response status error: " + resultCode);
         }
-        return null;
+        return new ArrayList<>();
     }
 
     /**
@@ -494,17 +494,17 @@ public class ProductUtils {
             String resultCode = null != res ? String.valueOf(res.getStatusCode()) : "access error";
             logger.error("findByPageInfo http response status error: " + resultCode);
         }
-        return null;
+        return new Page<>();
     }
 
     /**
      * 搜索物料资料
      *
-     * @param pageParams 分页参数
      * @param keyword 关键字
+     * @param pageParams 分页参数
      * @return
      */
-    public static SPage<Product> searchProducts(String keyword, PageParams pageParams) {
+    public static SPage searchProducts(String keyword, PageParams pageParams) {
         Response res = null;
         try {
             JSONObject formData = JSON.parseObject(JSON.toJSONString(pageParams));
@@ -522,7 +522,7 @@ public class ProductUtils {
             String resultCode = null != res ? String.valueOf(res.getStatusCode()) : "access error";
             logger.error("searchProducts http response status error: " + resultCode);
         }
-        return null;
+        return new SPage<>();
     }
 
     /**
@@ -550,7 +550,7 @@ public class ProductUtils {
             String resultCode = null != res ? String.valueOf(res.getStatusCode()) : "access error";
             logger.error("searchProducts http response status error: " + resultCode);
         }
-        return null;
+        return new SPage<>();
     }
 
     /**

+ 55 - 48
src/main/java/com/uas/platform/b2b/service/impl/UserServiceImpl.java

@@ -1,26 +1,11 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.message.mail.service.MailService;
-import com.uas.platform.b2b.dao.DistributeDao;
-import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.RoleDao;
-import com.uas.platform.b2b.dao.UserDao;
-import com.uas.platform.b2b.dao.VendorDao;
-import com.uas.platform.b2b.model.Distribute;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.Role;
-import com.uas.platform.b2b.model.SearchFilter;
-import com.uas.platform.b2b.model.User;
-import com.uas.platform.b2b.model.UserInfo;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.service.VendorService;
-import com.uas.platform.b2b.support.MessageConf;
-import com.uas.platform.b2b.support.SPageUtils;
-import com.uas.platform.b2b.support.SendMailService;
-import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.b2b.support.TokenService;
-import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.b2b.support.*;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.exception.SystemException;
 import com.uas.platform.core.logging.BufferedLoggerManager;
@@ -41,14 +26,7 @@ import org.springframework.util.StringUtils;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @author US50
@@ -852,34 +830,63 @@ public class UserServiceImpl implements UserService {
 	public boolean addUserToVendor(Long custUU, List<User> users) {
 		List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(custUU, SystemSession.getUser().getEnterprise().getUu());
 		if (!CollectionUtils.isEmpty(users)) {
+		    List<Distribute> saveList = new ArrayList<>();
 			for (User u : users) {
-				Distribute distribute = new Distribute();
-				List<Distribute> butes = distributeDao.findByUserUUAndVendorId(u.getUserUU(), vendors.get(0).getId());
-				if (u.getDistribute()) {
-					if (CollectionUtils.isEmpty(butes)) {
-						distribute.setUserUU(u.getUserUU());
-						distribute.setVendorId(vendors.get(0).getId());
-						distribute.setLeaderUU(SystemSession.getUser().getUserUU());
-						distributeDao.save(distribute);
-					}
-				} else {
-					if (!CollectionUtils.isEmpty(butes)) {
-						List<Distribute> deleteList = new ArrayList<>();
-						// 删除时,同时删除其绑定权限的其他用户
-						List<Distribute> distributes = distributeDao.findByVendorIdAndLeaderUU(vendors.get(0).getId(), u.getUserUU());
-						if (!CollectionUtils.isEmpty(distributes)) {
-							deleteList.addAll(distributes);
-						}
-						deleteList.add(butes.get(0));
-                        distributeDao.delete(deleteList);
-					}
-				}
-			}
+				List<Distribute> deleteList = new ArrayList<>();
+				if (null != u.getUserUU()) {
+                    Distribute distribute = new Distribute();
+                    List<Distribute> butes = distributeDao.findByUserUUAndVendorId(u.getUserUU(), vendors.get(0).getId());
+                    if (u.getDistribute()) {
+                        if (CollectionUtils.isEmpty(butes)) {
+                            distribute.setUserUU(u.getUserUU());
+                            distribute.setVendorId(vendors.get(0).getId());
+                            distribute.setLeaderUU(SystemSession.getUser().getUserUU());
+                            saveList.add(distribute);
+                        }
+                    } else {
+                        // 删除当前用户的权限子节点用户
+                        if (!CollectionUtils.isEmpty(butes)) {
+                            // 当前用户
+                            deleteList.add(butes.get(0));
+                            Long vendorId = vendors.get(0).getId();
+                            Long userUU = u.getUserUU();
+							if (null != butes.get(0).getIsTransfer() && 1 == butes.get(0).getIsTransfer()) {
+								deleteList = deleteChildrenDistributes(vendorId, userUU, deleteList);
+							}
+                            // 防止出现作为参数的用户之间存在权限父子节点关系,导致重复查询,所以每次递归完成,执行一次删除
+                            distributeDao.delete(deleteList);
+                        }
+                    }
+                }
+            }
+            distributeDao.save(saveList);
 			return true;
 		}
 		return false;
 	}
 
+    /**
+     * 删除用户的所有关联节点
+     * @param vendorId 供应商关系id
+     * @param userUU  用户UU
+     * @param deleteList 删除idList
+     * @return
+     */
+	private List<Distribute> deleteChildrenDistributes(Long vendorId, Long userUU, List<Distribute> deleteList) {
+        // 删除时,同时删除被其分配权限的其他用户
+        List<Distribute> distributes = distributeDao.findByVendorIdAndLeaderUU(vendorId, userUU);
+        if (!CollectionUtils.isEmpty(distributes)) {
+            deleteList.addAll(distributes);
+            // 被删除用户拥有转移权限时,继续删除其子节点
+            for (Distribute distribute : distributes) {
+                if (null != distribute.getIsTransfer() && 1 == distribute.getIsTransfer()) {
+                    return deleteChildrenDistributes(vendorId, distribute.getUserUU(), deleteList);
+                }
+            }
+        }
+        return deleteList;
+    }
+
 	@Override
 	public boolean transferUserToVendor(Long custUU, List<User> users) {
 		List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(custUU, SystemSession.getUser().getEnterprise().getUu());

+ 11 - 11
src/main/resources/ptest/account.properties

@@ -1,24 +1,24 @@
 ### account center config, 
-account.us.save.url=https://sso.ubtob.com/api/userspace
-account.user.save.url=https://sso.ubtob.com/api/user
-account.user.getPartners.url = https://sso.ubtob.com/api/partners
-account.user.getContactPage.url=https://sso.ubtob.com/business/groups
+account.us.save.url=https://tsso.usoftchina.com/api/userspace
+account.user.save.url=https://tsso.usoftchina.com/api/user
+account.user.getPartners.url = https://tsso.usoftchina.com/api/partners
+account.user.getContactPage.url=https://tsso.usoftchina.com/business/groups
 
 ### sso config
 sso.app=b2b
 # token secretkey
 sso.secretkey=0taQcW073Z7G628g5H
-sso.cookie.domain=ubtob.com
+sso.cookie.domain=usoftchina.com
 sso.cookie.secure=false
 sso.cookie.browser=false
-sso.login.url=https://sso.ubtob.com
+sso.login.url=https://tsso.usoftchina.com
 
 #cross domain
-sso.ask.url=https://sso.ubtob.com/sso/login/ask
-sso.askout.url=https://sso.ubtob.com/sso/logout/ask
-sso.updatePassword.url=https://sso.ubtob.com/reset/forgetPasswordValidationAccount
-sso.cloudcenter.url=https://sso.ubtob.com/cloudcenter
-mall.login.url=https://mall.usoftchina.com/newLogin/other
+sso.ask.url=https://tsso.usoftchina.com/sso/login/ask
+sso.askout.url=https://tsso.usoftchina.com/sso/logout/ask
+sso.updatePassword.url=https://tsso.usoftchina.com/reset/forgetPasswordValidationAccount
+sso.cloudcenter.url=https://tsso.usoftchina.com/cloudcenter
+mall.login.url=https://tmall.usoftchina.com/newLogin/other
 sso.proxy.uri=login/proxy
 sso.authcookie.secretkey=Z318866alN6gA0piuO
 sso.client.private_key=MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAIquTH9rOygR1iyMzU1CSQDXG+lJpMQgWkRWMwO3lzS+UJ3GRq1yxxD8mPFZCuItMRxP4Mvu3nvxDvsJx8lfRXk4MGswROIBPcdBAnasphN7wS5mDvDe/VBIKv+fg4j4VEnak9VUAQhS1gDtp+ZmQpCc9/gz8vueF1ueIXspAoUhAgMBAAECgYBfMP8PY1KK0Zt6nvd5NauYqQ7elg9EFJUBXU3NGmLu8Eez1NrEygk8braoy57921lffrDmKsOKvc+zn2YEoqGzbHCOuYsTDBXFCGLkj8oPeHyrs02+XuJe9j2ejhq2N04oP/TMxerFeyWnHdRCNXECrthqhwTRmGitnj2/+FLVAQJBAM93HY/5HoFlfRv9zjFy72ft/ZC60jHERXwyumbFs8z/x8sHCY1GWfgGhm1ShE1bDWAPY3W9WCFsx6nOETsHajECQQCrH8Dl7IIIHJ5D0TDisFkePnYELxpmOGlPwPOQ7hyLAdW4aB1fVIpjsWmgGOyPvmhK+b99XeLUbwpxVU7AAB3xAkAJNxJCFd+sAbUH7EMfYSqPJDwSFKpHeZ9Yf+xVqkxtO6NFOl/LPae7Y5bO/k5QHU4/yQ8y6KEkgu9vdG7Bf3fRAkEAiDlX6vDytphpmN0PyHXQC9Z3Rm9k2ZjwpM+aVXZn/HSyeQFQ2JHJNQGHby5IK0nNZloYiSlTJ/9ZVc0uSoQNUQJBAJFix2tD7b0Zq82xpeGt81rhXsofuerq1x9WM5UyYILCKJMHZw5lt58snINVzA7JxV+l60dbIgJjmRYm0yxQIAY=

+ 1 - 1
src/main/resources/ptest/jdbc.properties

@@ -1,6 +1,6 @@
 #mysql info
 jdbc.driverClassName=com.mysql.jdbc.Driver
-jdbc.url=jdbc:mysql://192.168.100.3:3306/b2b_prod?characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true
+jdbc.url=jdbc:mysql://192.168.100.3:3306/b2b_mysql_test?characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true
 jdbc.username=sa
 jdbc.password=select111***
 jdbc.initialSize=5

+ 4 - 4
src/main/resources/ptest/sys.properties

@@ -1,10 +1,10 @@
 #path
-b2b=http://b2b.usoftchina.com
+b2b=http://tb2b.usoftchina.com
 manage=http://manage.ubtob.com
-#manageInner=http://10.10.100.81:8080
+manageInner=http://192.168.100.13:8080
 im=http://113.105.74.140:8092
-b2c=https://mall.usoftchina.com
-registerUrl=https://sso.ubtob.com/register/enterpriseRegistration
+b2c=https://tmall.usoftchina.com
+registerUrl=https://tsso.usoftchina.com/register/enterpriseRegistration
 
 #report url
 reportPrintUrl=http://192.168.100.8:8080/report/print?userName=B2B%s&profile=${profile}&reportName=%s&whereCondition=%s

+ 2 - 2
src/main/webapp/WEB-INF/log4j.properties

@@ -9,7 +9,7 @@ log4j.appender.stdout.layout.ConversionPattern=%d %p [%c]:%m%n
 log4j.appender.logfile=org.apache.log4j.RollingFileAppender
 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
 #log4j.appender.logfile.File=/var/log/log4j.log
-log4j.appender.logfile.File=../logs/b2b_log4j.log
+log4j.appender.logfile.File=${catalina.home}/logs/b2b_log4j.log
 # Keep three backup files.
 log4j.appender.logfile.MaxBackupIndex=3
 log4j.appender.logfile.MaxFileSize=5120KB
@@ -21,4 +21,4 @@ log4j.logger.com.uas = info, stdout, logfile
 #=========================================
 #=   spring framewokr log configuration  =
 #=========================================
-log4j.logger.org.springframework = error
+log4j.logger.org.springframework = error

+ 2 - 2
src/main/webapp/resources/js/index/app.js

@@ -2484,7 +2484,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             $scope.distribute = distribute;
             $scope.havedone = angular.copy($scope.distribute);
             $scope.loading = false;
-        })
+        });
 
         var checkStatus = function (userinfos) {
             var distribute = [];
@@ -2495,7 +2495,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             });
             $scope.distribute = distribute;
             $scope.isChanged = !angular.equals($scope.havedone, $scope.distribute);
-        }
+        };
         $scope.isChanged = false;
         $scope.isChangedAll = false;
         $scope.changes = [];

+ 2 - 2
src/main/webapp/resources/tpl/index/account/transfer_userInfo.html

@@ -44,7 +44,7 @@
 		</tbody>
 		<tbody ng-if="!thisUser.sys && thisUser.transfer">
 			<!-- 当前用户是被管理员转移权限时 -->
-			<tr ng-repeat="user in userinfos| filter: keyword" ng-if="!user.sys && thisUser.userUU != user.userUU">
+			<tr ng-repeat="user in userinfos| filter: keyword" ng-if="thisUser.userUU != user.userUU">
 				<td width="80px;">{{user.userUU}}</td>
 				<td width="100px;">{{user.userName}}</td>
 				<td width="40px;" style="text-align: center"><input ng-model="user.transfer" name="checkbox" ng-click="checkOne(user)" ng-checked="user.checked" type="checkbox" title="选择"></td>
@@ -52,7 +52,7 @@
 		</tbody>
 		<tbody ng-if="!thisUser.sys && !thisUser.transfer">
 			<!-- 当前用户是非管理员,但有查看权限时 -->
-			<tr ng-repeat="user in userinfos| filter: keyword" ng-if="!user.distribute && !user.sys && thisUser.userUU != user.userUU">
+			<tr ng-repeat="user in userinfos| filter: keyword" ng-if="!user.distribute && thisUser.userUU != user.userUU">
 				<td width="80px;">{{user.userUU}}</td>
 				<td width="100px;">{{user.userName}}</td>
 				<td width="40px;" style="text-align: center"><input ng-model="user.transfer" name="distribute" ng-click="checkOne(user)" ng-checked="user.checked" type="checkbox" title="选择"></td>