Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

hy 7 years ago
parent
commit
1aec424d5b
66 changed files with 588 additions and 195 deletions
  1. 1 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 10 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Bom.java
  3. 1 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java
  4. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductDetailMapper.java
  5. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java
  6. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  7. 52 6
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  8. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  9. 1 1
      applications/document/document-server/src/main/resources/mapper/AddressMapper.xml
  10. 1 0
      applications/document/document-server/src/main/resources/mapper/BomMapper.xml
  11. 1 1
      applications/document/document-server/src/main/resources/mapper/CustomerkindMapper.xml
  12. 1 1
      applications/document/document-server/src/main/resources/mapper/FundinouttypeMapper.xml
  13. 5 2
      applications/document/document-server/src/main/resources/mapper/ProductDetailMapper.xml
  14. 2 2
      applications/document/document-server/src/main/resources/mapper/ProductMapper.xml
  15. 1 1
      applications/document/document-server/src/main/resources/mapper/ProductbrandMapper.xml
  16. 1 1
      applications/document/document-server/src/main/resources/mapper/ProducttypeMapper.xml
  17. 1 1
      applications/document/document-server/src/main/resources/mapper/ProductunitMapper.xml
  18. 1 1
      applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml
  19. 1 1
      applications/document/document-server/src/main/resources/mapper/WarehouseMapper.xml
  20. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/FundtransferController.java
  21. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthreceiptsController.java
  22. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthspengdingsController.java
  23. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java
  24. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/RecbalanceContorller.java
  25. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/FundtransferService.java
  26. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/OthreceiptsService.java
  27. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/OthspendingsService.java
  28. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/PaybalanceService.java
  29. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/RecbalanceService.java
  30. 6 15
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  31. 9 19
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  32. 7 16
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  33. 7 10
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  34. 7 9
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  35. 78 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRoleDTO.java
  36. 27 27
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/PowerDTO.java
  37. 18 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  38. 5 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java
  39. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/RoleResourceMapper.java
  40. 43 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/PowerInfo.java
  41. 15 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java
  42. 14 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java
  43. 34 13
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/RoleServiceImpl.java
  44. 7 0
      base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml
  45. 8 0
      base-servers/account/account-server/src/main/resources/mapper/RoleResourceMapper.xml
  46. 1 1
      base-servers/auth/auth-client/src/main/java/com/usoftchina/saas/auth/client/interceptor/AuthRestInterceptor.java
  47. 3 1
      base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/jwt/JwtHelper.java
  48. 11 1
      base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/jwt/JwtInfo.java
  49. 2 2
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  50. 1 1
      base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/AuthFilter.java
  51. 0 1
      base-servers/gateway-server/src/main/resources/application.yml
  52. 1 0
      base-servers/mail/mail-dto/src/main/java/com/usoftchina/saas/mail/dto/TemplateMailMessage.java
  53. 1 1
      frontend/saas-web/app/Application.scss
  54. 49 2
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  55. 1 1
      frontend/saas-web/app/view/document/bom/FormPanel.js
  56. 1 1
      frontend/saas-web/app/view/document/product/FormPanel.js
  57. 6 0
      frontend/saas-web/app/view/home/InfoCard.scss
  58. 1 0
      frontend/saas-web/app/view/main/Main.js
  59. 2 0
      frontend/saas-web/app/view/main/Navigation.js
  60. 1 0
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  61. 1 0
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  62. 6 0
      frontend/saas-web/app/view/purchase/report/Purchase.js
  63. 23 5
      frontend/saas-web/app/view/sale/report/Sale.js
  64. 46 8
      frontend/saas-web/app/view/sale/report/SaleProfit.js
  65. 1 1
      frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js
  66. 32 23
      frontend/saas-web/app/view/stock/appropriationInOut/FormPanelController.js

+ 1 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -29,6 +29,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_RELDELETE_UPDATE(79306,"存在关联单据,不允许更新编号"),
     BIZ_RELDELETE_UPDATEPROD(79307,"存在关联单据,不允许更新"),
     BIZ_RELDELETE_DELETEPROD(79308,"存在关联单据,不允许删除"),
+    BIZ_PRODWHCODE_REPEAT(79309, "明细仓库重复"),
     NO_OPRATIONDATA(79400,"无可操作单据"),
     BOM_SAVE(79401, "产品编号+版本号已存在"),
     REPEAT_NAME(79501, "名称重复"),

+ 10 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Bom.java

@@ -41,6 +41,16 @@ public class Bom extends CommonBaseEntity implements Serializable {
 
     private String pr_orispeccode;
 
+    private String pr_unit;
+
+    public String getPr_unit() {
+        return pr_unit;
+    }
+
+    public void setPr_unit(String pr_unit) {
+        this.pr_unit = pr_unit;
+    }
+
     public String getPr_spec() {
         return pr_spec;
     }

+ 1 - 3
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java

@@ -99,9 +99,7 @@ public class ProductController {
 
     @GetMapping("/read/{id}")
     public Result getDataById(@PathVariable("id") Long id){
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put("main", productService.getDataById(id));
-        return Result.success(map);
+        return Result.success(productService.getDataById(id));
     }
 
     @GetMapping("/ReserveCost")

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductDetailMapper.java

@@ -25,4 +25,6 @@ public interface ProductDetailMapper extends CommonBaseMapper<ProductDetail> {
     Long selectProdidByPrimaryKey(Long id);
 
     List<ProductDetail> selectByProdId(Long id);
+
+    boolean deleteByProdId(Long id);
 }

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java

@@ -101,7 +101,7 @@ public interface ProductService extends CommonBaseService<ProductMapper, Product
      * @param id
      * @return
      */
-    Product getDataById(Long id);
+    ProductListDTO getDataById(Long id);
 
     /**
      * 物料库存数量金额表

+ 4 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java

@@ -127,6 +127,10 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         customer.setCompanyId(companyId);
         customer.setCreatorId(userId);
         customer.setCreateTime(new Date());
+        //应付款余额
+        Double beginapamount = main.getCu_beginaramount()==null?new Double(0):main.getCu_beginaramount();
+        Double beginprepayamount = main.getCu_beginprerecamount()==null?new Double(0):main.getCu_beginprerecamount();
+        customer.setCu_leftamount(beginapamount-beginprepayamount);
 
         //编号校验
         cu_code = pushMaxnubmer(cu_code, cu_id);

+ 52 - 6
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java

@@ -25,6 +25,7 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
 import java.util.*;
@@ -75,20 +76,34 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public DocBaseDTO saveData(ProductListDTO productListDTO){
         Product product = productListDTO.getMain();
         List<ProductDetail> productDetailList = productListDTO.getItems();
         DocBaseDTO docBaseDTO = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        Long userId = BaseContextHolder.getUserId();
+
+        //校验明细仓库是否重复
+        validRepeatWarehouse(productDetailList);
+
         if(product.getId() == 0){
             //保存
             String code = pushMaxnubmer(product.getPr_code(), product.getId());
-            product.setCompanyId(BaseContextHolder.getCompanyId());
-            product.setCreatorId(BaseContextHolder.getUserId());
+            product.setCompanyId(companyId);
+            product.setCreatorId(userId);
             product.setCreateTime(new Date());
             //保存主表
             getMapper().insertSelective(product);
             //保存明细表数据
-            productDetailMapper.batchInsert(productDetailList);
+            if (productDetailList.size() > 0) {
+                for (ProductDetail productDetail : productDetailList){
+                    productDetail.setPd_prodid(product.getId());
+                    productDetail.setCompanyId(companyId);
+                }
+
+                productDetailMapper.batchInsert(productDetailList);
+            }
             //生成库存初始化数据并过账
             generateProdIOPost(product, productDetailList);
 
@@ -116,8 +131,12 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
                 List<ProductDetail> updateItems = new ArrayList<ProductDetail>();
                 for(ProductDetail productDetail : productDetailList){
                     if (productDetail.getId() == 0){
+                        productDetail.setUpdaterId(userId);
+                        productDetail.setUpdateTime(new Date());
                         insertItems.add(productDetail);
                     }else{
+                        productDetail.setUpdaterId(userId);
+                        productDetail.setUpdateTime(new Date());
                         updateItems.add(productDetail);
                     }
                 }
@@ -144,6 +163,27 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
         return docBaseDTO;
     }
 
+    /**
+     * 校验明细仓库是否重复
+     * @param productDetailList
+     */
+    private void validRepeatWarehouse(List<ProductDetail> productDetailList) {
+        if (productDetailList.size() > 0){
+            boolean flag = true;   //假设不重复
+            for (int i = 0; i < productDetailList.size() - 1; i ++){
+                for (int j = i + 1; j < productDetailList.size(); j++){
+                    if (productDetailList.get(i).getPd_whcode().equals(productDetailList.get(j).getPd_whcode())){
+                        flag = false;
+                        break;
+                    }
+                }
+            }
+            if (!flag){
+                throw new BizException(BizExceptionCode.BIZ_PRODWHCODE_REPEAT);
+            }
+        }
+    }
+
     /**
      * 物料发生过除库存初始化外的出入库单时,不能新增,修改,删除
      * @param id
@@ -331,6 +371,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
 
         String code = getMapper().getCodeById(id);
         getMapper().deleteByPrimaryKey(id);
+        productDetailMapper.deleteByProdId(id);
         DocBaseDTO docBaseDTO = generateMsgObj(id, code);
         //记录LOG
         messageLogService.delete(docBaseDTO);
@@ -403,8 +444,13 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
     }
 
     @Override
-    public Product getDataById(Long id) {
-        return getMapper().selectByPrimaryKey(id);
+    public ProductListDTO getDataById(Long id) {
+        ProductListDTO productListDTO = new ProductListDTO();
+        Product product = getMapper().selectByPrimaryKey(id);
+        List<ProductDetail> productDetails = productDetailMapper.selectByProdId(id);
+        productListDTO.setMain(product);
+        productListDTO.setItems(productDetails);
+        return productListDTO;
     }
 
     @Override
@@ -426,7 +472,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
     public boolean deleteDetailById(Long id) {
         Long prodId = productDetailMapper.selectProdidByPrimaryKey(id);
         validProductOperation(prodId, BizExceptionCode.BIZ_RELDELETE_DELETEPROD);
-        String prCode = getMapper().selectByPrimaryKey(id).getPr_code();
+        String prCode = getMapper().selectByPrimaryKey(prodId).getPr_code();
         //找到原始单据,反过账并删除
         String inoutCode = getMapper().selectProdIOCode(prCode, BaseContextHolder.getCompanyId(), "库存初始化");
         if (!StringUtils.isEmpty(inoutCode)) {

+ 4 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java

@@ -121,6 +121,10 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             }
             //保存主表信息
             main.setVe_code(code);
+            //更新应付款余额
+            Double beginapamount = main.getVe_beginapamount()==null ? new Double(0):main.getVe_beginapamount();
+            Double beginprepayamount = main.getVe_beginprepayamount()==null ? new Double(0):main.getVe_beginprepayamount();
+            main.setVe_leftamount(beginapamount-beginprepayamount);
             getMapper().insertSelective(main);
             Long mainId = main.getId();
             //更新明细表vc_veid

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/AddressMapper.xml

@@ -179,7 +179,7 @@
     where ad_id in (#{ids,jdbcType=VARCHAR})
   </delete>
   <select id="selectAll" resultMap="ResultMapWithBLOBs">
-    SELECT * FROM ADDRESS where COMPANYID=#{companyId}
+    SELECT * FROM ADDRESS where COMPANYID=#{companyId} ORDER BY AD_ID DESC
   </select>
   <select id="selectCountByName" resultType="int">
     SELECT count(*) FROM ADDRESS

+ 1 - 0
applications/document/document-server/src/main/resources/mapper/BomMapper.xml

@@ -22,6 +22,7 @@
     <result column="bo_text5" property="bo_text5" jdbcType="VARCHAR" />
     <result column="pr_brand" property="pr_brand" jdbcType="VARCHAR" />
     <result column="pr_spec" property="pr_spec" jdbcType="VARCHAR" />
+    <result column="pr_unit" property="pr_unit" jdbcType="VARCHAR" />
     <result column="pr_orispeccode" property="pr_orispeccode" jdbcType="VARCHAR" />
   </resultMap>
   <sql id="Base_Column_List" >

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/CustomerkindMapper.xml

@@ -120,7 +120,7 @@
     where ck_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM CUSTOMERKIND WHERE COMPANYID=#{companyId}
+    SELECT * FROM CUSTOMERKIND WHERE COMPANYID=#{companyId} order by ck_id desc
   </select>
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
     SELECT ck_name display,ck_name value FROM CUSTOMERKIND WHERE COMPANYID=#{companyId}

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/FundinouttypeMapper.xml

@@ -140,7 +140,7 @@
     where ft_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM FUNDINOUTTYPE where companyId=#{companyId}
+    SELECT * FROM FUNDINOUTTYPE where companyId=#{companyId} ORDER BY FT_ID DESC
   </select>
   <select id="selectCountByName" resultType="int">
     SELECT COUNT(*) FROM FUNDINOUTTYPE

+ 5 - 2
applications/document/document-server/src/main/resources/mapper/ProductDetailMapper.xml

@@ -255,7 +255,7 @@
         )
         VALUES
         <foreach collection="list" item="item" index="index" open="" close="" separator=",">
-            values ( #{item.pd_prodid,jdbcType=INTEGER}, #{item.pd_prodcode,jdbcType=VARCHAR},
+            ( #{item.pd_prodid,jdbcType=INTEGER}, #{item.pd_prodcode,jdbcType=VARCHAR},
             #{item.pd_detno,jdbcType=INTEGER}, #{item.pd_whcode,jdbcType=VARCHAR}, #{item.pd_whname,jdbcType=VARCHAR},
             #{item.pd_whid,jdbcType=INTEGER}, #{item.pd_price,jdbcType=DOUBLE}, #{item.pd_amount,jdbcType=DOUBLE},
             #{item.companyId,jdbcType=INTEGER}, #{item.updaterId,jdbcType=INTEGER}, #{item.updateTime,jdbcType=TIMESTAMP},
@@ -324,9 +324,12 @@
         </foreach>
     </update>
     <select id="selectProdidByPrimaryKey" resultType="java.lang.Long">
-        SELECT PD_PRODID FROM PRODUCTDETAIL WHERE PD_ID=#{id}
+        SELECT PD_PRODID FROM PRODUCTDETAIL WHERE ID=#{id}
     </select>
     <select id="selectByProdId" resultType="com.usoftchina.saas.document.entities.ProductDetail">
         SELECT * FROM PRODUCTDETAIL WHERE PD_PRODID=#{id}
     </select>
+    <delete id="deleteByProdId" >
+        DELETE FROM PRODUCTDETAIL WHERE PD_PRODID=#{id}
+    </delete>
 </mapper>

+ 2 - 2
applications/document/document-server/src/main/resources/mapper/ProductMapper.xml

@@ -903,9 +903,9 @@
         </where>
     </select>
 
-    <select id="selectOrderCountByProdCode" resultType="java.lang.Long">
+    <select id="selectOrderCountByProdCode" resultType="java.lang.Integer">
         SELECT COUNT(*) FROM PRODINOUT LEFT JOIN PRODIODETAIL ON PI_ID=PD_PIID AND PRODINOUT.COMPANYID=PRODIODETAIL.COMPANYID
-        WHERE COMPANYID = #{companyId} AND PD_PRODID = #{id}
+        WHERE PRODIODETAIL.COMPANYID = #{companyId} AND PD_PRODID = #{id}
     </select>
 
     <delete id="deleteProdIOByCode" >

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/ProductbrandMapper.xml

@@ -130,7 +130,7 @@
   </select>
 
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
-    SELECT PB_NAME display,PB_NAME value FROM PRODUCTBRAND WHERE COMPANYID=#{companyId}
+    SELECT PB_NAME display,PB_NAME value FROM PRODUCTBRAND WHERE COMPANYID=#{companyId} ORDER BY PB_ID DESC
   </select>
   <select id="selectCountByName" resultType="int">
     SELECT COUNT(*) FROM PRODUCTBRAND

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/ProducttypeMapper.xml

@@ -126,7 +126,7 @@
     where pt_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM PRODUCTTYPE where companyId=#{companyId}
+    SELECT * FROM PRODUCTTYPE where companyId=#{companyId} ORDER BY PT_ID DESC
   </select>
     <select id="selectCountByName" resultType="int">
         SELECT COUNT(*) FROM PRODUCTTYPE

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/ProductunitMapper.xml

@@ -120,7 +120,7 @@
     where pu_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM PRODUCTUNIT where companyId=#{companyId}
+    SELECT * FROM PRODUCTUNIT where companyId=#{companyId} ORDER BY PU_ID DESC
   </select>
     <select id="selectCountByName" resultType="int">
         SELECT COUNT(*) FROM productunit

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml

@@ -126,7 +126,7 @@
     where vk_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM VENDORKIND where companyId = #{companyId}
+    SELECT * FROM VENDORKIND where companyId = #{companyId} ORDER BY VK_ID DESC
   </select>
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
     SELECT VK_NAME display, VK_NAME value FROM VENDORKIND WHERE COMPANYID=#{companyId}

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/WarehouseMapper.xml

@@ -347,7 +347,7 @@
     <select id="selectCountByCode" resultType="int">
         SELECT COUNT(*) FROM warehouse
         <where>
-            <if test="name!=null">
+            <if test="code!=null">
                 and wh_code=#{code}
             </if>
             <if test="companyId!=0 and companyId!=null">

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/FundtransferController.java

@@ -80,8 +80,8 @@ public class FundtransferController {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Fundtran body){
-        fundtransferService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = fundtransferService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthreceiptsController.java

@@ -59,8 +59,8 @@ public class OthreceiptsController {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Othte body){
-        othreceiptsService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = othreceiptsService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthspengdingsController.java

@@ -62,8 +62,8 @@ public class OthspengdingsController {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Othsp body){
-        othspendingsService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = othspendingsService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java

@@ -65,8 +65,8 @@ public class PaybalanceController {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Pay body){
-        paybalanceService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = paybalanceService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/RecbalanceContorller.java

@@ -66,8 +66,8 @@ public class RecbalanceContorller {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Rec body){
-        recbalanceService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = recbalanceService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/FundtransferService.java

@@ -15,7 +15,7 @@ import com.usoftchina.saas.page.PageRequest;
 public interface FundtransferService {
     DocBaseDTO insert(Fundtran fundtran);
 
-    void audit(Fundtran fundtran);
+    DocBaseDTO audit(Fundtran fundtran);
 
     void unAudit(int id);
 

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/OthreceiptsService.java

@@ -17,7 +17,7 @@ import com.usoftchina.saas.page.PageRequest;
 public interface OthreceiptsService {
     DocBaseDTO insert(Othte othte);
 
-    void audit(Othte othte);
+    DocBaseDTO audit(Othte othte);
 
     void unAudit(int id);
 

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/OthspendingsService.java

@@ -26,7 +26,7 @@ public interface OthspendingsService {
 
     PageInfo<Othspendings> selectList(PageRequest page, ListReqDTO reqDTO);
 
-    void audit(Othsp othsp);
+    DocBaseDTO audit(Othsp othsp);
 
     void unAudit(int id);
 

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/PaybalanceService.java

@@ -16,7 +16,7 @@ import com.usoftchina.saas.page.PageRequest;
 public interface PaybalanceService {
     DocBaseDTO insert(Pay pay);
 
-    void audit(Pay pay);
+    DocBaseDTO audit(Pay pay);
 
     void unAudit(int id);
 

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/RecbalanceService.java

@@ -24,7 +24,7 @@ public interface RecbalanceService {
 
     void deleteItems(int id);
 
-    void audit(Rec rec);
+    DocBaseDTO audit(Rec rec);
 
 
     void unAudit(Long id);

+ 6 - 15
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java

@@ -80,26 +80,16 @@ public class FundtransferServiceImpl implements FundtransferService {
     }
 
     @Override
-    public void audit(Fundtran fundtran) {
+    public DocBaseDTO audit(Fundtran fundtran) {
         Long companyId = BaseContextHolder.getCompanyId();
-        int id = Math.toIntExact(fundtran.getMain().getId());
-        Fundtransfer fundtransfer = fundtransferMapper.selectByPrimaryKey(id);
+        Fundtransfer fundtransfer = fundtran.getMain();
         fundtransfer.setFt_status(Status.AUDITED.getDisplay());
         fundtransfer.setFt_statuscode(Status.AUDITED.name());
         fundtransfer.setCompanyId(companyId);
         this.changBankUntil(fundtran);
-        if ( fundtransfer == null || "".equals(fundtransfer)){
-            this.insert(fundtran);
-        }else {
-            fundtransferMapper.updateByPrimaryKeySelective(fundtransfer);
-            List<Fundtransferdetail> fundtransferdetailList = fundtran.getItems();
-            Iterator isList = fundtransferdetailList.iterator();
-            while (isList.hasNext()){
-                Fundtransferdetail fundtransferdetail = (Fundtransferdetail) isList.next();
-                fundtransferdetail.setFt_date(fundtransfer.getFt_date());
-                fundtransferdetailMapper.updateByPrimaryKeySelective(fundtransferdetail);
-            }
-        }
+        DocBaseDTO docBaseDTO = this.insert(fundtran);
+        Long id = docBaseDTO.getId();
+        String ft_code = docBaseDTO.getCode();
 
         //取从表金额更新中间表、资金账号表
         List<Fundtransferdetail> fundtransferdetailList = fundtran.getItems();
@@ -128,6 +118,7 @@ public class FundtransferServiceImpl implements FundtransferService {
             paybalanceMapper.updateBankAmount(thisamount, bk_id);
             paybalanceMapper.updateBankAmount(bk_inamount + fundtransferdetail.getFtd_nowbalance(), bk_inid);
         }
+        return new DocBaseDTO(id, ft_code, BillCodeSeq.FUNDTRANSFER.getCaller());
     }
 
     @Override

+ 9 - 19
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java

@@ -84,26 +84,15 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
     }
 
     @Override
-    public void audit(Othte othte) {
+    public DocBaseDTO audit(Othte othte) {
         Long companyId = BaseContextHolder.getCompanyId();
-        int id = Math.toIntExact(othte.getMain().getId());
-        Othreceipts othreceipts = othreceiptsMapper.selectByPrimaryKey(id);
+        Othreceipts othreceipts = othte.getMain();
         othreceipts.setOr_status(Status.AUDITED.getDisplay());
         othreceipts.setOr_statuscode(Status.AUDITED.name());
-        othreceipts.setCompanyId(companyId);
         this.changBankUntil(othte);
-        if ( othreceipts == null || "".equals(othreceipts)){
-            this.insert(othte);
-        }else {
-            othreceiptsMapper.updateByPrimaryKeySelective(othreceipts);
-            List<Othreceiptsdetail> othreceiptsdetailList = othte.getItems();
-            Iterator isList = othreceiptsdetailList.iterator();
-            while (isList.hasNext()){
-                Othreceiptsdetail fundtransferdetail = (Othreceiptsdetail) isList.next();
-                fundtransferdetail.setOr_date(othreceipts.getOr_date());
-                othreceiptsdetailMapper.updateByPrimaryKeySelective(fundtransferdetail);
-            }
-        }
+        DocBaseDTO docBaseDTO = this.insert(othte);
+        Long id = docBaseDTO.getId();
+        String or_code = docBaseDTO.getCode();
 
         Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode());
         //取从表金额
@@ -117,11 +106,11 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
 
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
-        List<Integer> ymList = othreceiptsdetailMapper.selectYm(id);
+        List<Integer> ymList = othreceiptsdetailMapper.selectYm(Math.toIntExact(id));
         Integer ym = ymList.indexOf(0);
         System.out.println("ym:"+ym);
-        statsinfo.setCompanyid(BaseContextHolder.getCompanyId());
-        Integer yms = statsinfoMapper.select(ym, BaseContextHolder.getCompanyId());
+        statsinfo.setCompanyid(companyId);
+        Integer yms = statsinfoMapper.select(ym, companyId);
         statsinfo.setSi_yearmonth(Double.valueOf(ym));
         statsinfo.setSi_amount_otherrec(othreceipts.getOr_amount());
         if (yms == null){
@@ -129,6 +118,7 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        return new DocBaseDTO(id, or_code, BillCodeSeq.OTHRECEIPTS.getCaller());
     }
 
     @Override

+ 7 - 16
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java

@@ -116,26 +116,16 @@ public class OthspendingsServiceImpl implements OthspendingsService {
     }
 
     @Override
-    public void audit(Othsp othsp) {
+    public DocBaseDTO audit(Othsp othsp) {
         Long companyId = BaseContextHolder.getCompanyId();
-        int id = Math.toIntExact(othsp.getMain().getId());
-        Othspendings othspendings = othspendingsMapper.selectByPrimaryKey(id);
+        Othspendings othspendings = othsp.getMain();
         othspendings.setOs_status(Status.AUDITED.getDisplay());
         othspendings.setOs_statuscode(Status.AUDITED.name());
         othspendings.setCompanyId(companyId);
         this.changBankUntil(othsp);
-        if ( othspendings == null || "".equals(othspendings)){
-            this.insert(othsp);
-        }else {
-            othspendingsMapper.updateByPrimaryKeySelective(othspendings);
-            List<Othspendingsdetail> othspendingsdetailList = othsp.getItems();
-            Iterator isList = othspendingsdetailList.iterator();
-            while (isList.hasNext()){
-                Othspendingsdetail othspendingsdetail = (Othspendingsdetail) isList.next();
-                othspendingsdetail.setOs_date(othspendings.getOs_date());
-                othspendingsdetailMapper.updateByPrimaryKeySelective(othspendingsdetail);
-            }
-        }
+        DocBaseDTO docBaseDTO = this.insert(othsp);
+        Long id = docBaseDTO.getId();
+        String os_code = docBaseDTO.getCode();
 
         Double amount = banksubledgerMapper.selectThisamount(othspendings.getOs_bankcode());
         //取从表金额
@@ -149,7 +139,7 @@ public class OthspendingsServiceImpl implements OthspendingsService {
 
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
-        List<Integer> ymList = othspendingsdetailMapper.selectYm(id);
+        List<Integer> ymList = othspendingsdetailMapper.selectYm(Math.toIntExact(id));
         Integer ym = ymList.indexOf(0);
         System.out.println("ym:"+ym);
         statsinfo.setCompanyid(BaseContextHolder.getCompanyId());
@@ -161,6 +151,7 @@ public class OthspendingsServiceImpl implements OthspendingsService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        return new DocBaseDTO(id, os_code, BillCodeSeq.OTHSPENDINGS.getCaller());
     }
 
     @Override

+ 7 - 10
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java

@@ -163,10 +163,9 @@ public class PaybalanceServiceImpl implements PaybalanceService {
     }
 
     @Override
-    public void audit(Pay pay) {
+    public DocBaseDTO audit(Pay pay) {
         Long companyId = BaseContextHolder.getCompanyId();
-        int id = Math.toIntExact(pay.getMain().getId());
-        Paybalance paybalance = paybalanceMapper.selectByPrimaryKey(Long.valueOf(id));
+        Paybalance paybalance = pay.getMain();
         paybalance.setPb_status(Status.AUDITED.getDisplay());
         paybalance.setPb_statuscode(Status.AUDITED.name());
         paybalance.setCompanyId(companyId);
@@ -177,12 +176,9 @@ public class PaybalanceServiceImpl implements PaybalanceService {
             subledgerMapper.updateByPrimaryKeySelective(subledger);
         }
         this.changBankUntil(pay);
-        System.out.println("新增");
-        if ( paybalance == null || "".equals(paybalance)){
-            this.insert(pay);
-        }else {
-            paybalanceMapper.updateByPrimaryKeySelective(paybalance);
-        }
+        DocBaseDTO docBaseDTO = this.insert(pay);
+        Long id = docBaseDTO.getId();
+        String pb_code = docBaseDTO.getCode();
 
         Paybalance updatePay = new Paybalance();
         List<Paybalancedet> paybalancedet = pay.getItems1();
@@ -247,7 +243,7 @@ public class PaybalanceServiceImpl implements PaybalanceService {
 
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
-        List<Integer> ymList = paybalancedetMapper.selectYm(id);
+        List<Integer> ymList = paybalancedetMapper.selectYm(Math.toIntExact(id));
         Integer ym = ymList.indexOf(0);
         System.out.println("ym:"+ym);
         statsinfo.setCompanyid(BaseContextHolder.getCompanyId());
@@ -259,6 +255,7 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        return new DocBaseDTO(id, pb_code, BillCodeSeq.PAYBALANCE.getCaller());
     }
 
     @Override

+ 7 - 9
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java

@@ -190,10 +190,9 @@ public class RecbalanceServiceImpl implements RecbalanceService {
     }
 
     @Override
-    public void audit(Rec rec) {
+    public DocBaseDTO audit(Rec rec) {
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer id = Math.toIntExact(rec.getMain().getId());
-        Recbalance recbalance = recbalanceMapper.selectByPrimaryKey(id);
+        Recbalance recbalance = rec.getMain();
         recbalance.setRb_status(Status.AUDITED.getDisplay());
         recbalance.setRb_statuscode(Status.AUDITED.name());
         recbalance.setCompanyId(companyId);
@@ -204,11 +203,9 @@ public class RecbalanceServiceImpl implements RecbalanceService {
             subledgerMapper.updateByPrimaryKeySelective(subledger);
         }
         this.changBankUntil(rec);
-        if ( recbalance == null || "".equals(recbalance)){
-            this.insert(rec);
-        }else {
-            recbalanceMapper.updateByPrimaryKeySelective(recbalance);
-        }
+        DocBaseDTO docBaseDTO = this.insert(rec);
+        Long id = docBaseDTO.getId();
+        String pu_code = docBaseDTO.getCode();
 
         Recbalance updateRay = new Recbalance();
         List<Recbalancedet> recbalancedet = rec.getItems1();
@@ -274,7 +271,7 @@ public class RecbalanceServiceImpl implements RecbalanceService {
 
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
-        List<Integer> ymList = recbalancedetMapper.selectYm(id);
+        List<Integer> ymList = recbalancedetMapper.selectYm(Math.toIntExact(id));
         Integer ym = ymList.indexOf(0);
         System.out.println("ym:"+ym);
         statsinfo.setCompanyid(BaseContextHolder.getCompanyId());
@@ -286,6 +283,7 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        return new DocBaseDTO(id, pu_code, BillCodeSeq.RECBALANCE.getCaller());
     }
 
     @Override

+ 78 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRoleDTO.java

@@ -0,0 +1,78 @@
+package com.usoftchina.saas.account.dto;
+
+import java.io.Serializable;
+
+public class AccountRoleDTO implements Serializable {
+
+    private Long accountId;
+    private String username;
+    private String realname;
+    private String email;
+    private String mobile;
+    private String roleNames;
+    private String roleIds;
+
+    public String getRoleNames() {
+        return roleNames;
+    }
+
+    public void setRoleNames(String roleNames) {
+        this.roleNames = roleNames;
+    }
+
+    public String getRoleIds() {
+        return roleIds;
+    }
+
+    public void setRoleIds(String roleIds) {
+        this.roleIds = roleIds;
+    }
+
+    public Long getId() {
+        return accountId;
+    }
+
+    public void setId(Long accountId) {
+        this.accountId = accountId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getRealname() {
+        return realname;
+    }
+
+    public void setRealname(String realname) {
+        this.realname = realname;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public Long getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(Long accountId) {
+        this.accountId = accountId;
+    }
+}

+ 27 - 27
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/PowerDTO.java

@@ -6,15 +6,15 @@ public class PowerDTO {
     private Long groupId;
     private String moduleName;
     private String groupName;
-    private boolean query;
-    private boolean add;
-    private boolean update;
-    private boolean delete;
-    private boolean audit;
-    private boolean unAudit;
-    private boolean print;
-    private boolean fileExport;
-    private boolean fileImport;
+    private Boolean query;
+    private Boolean add;
+    private Boolean update;
+    private Boolean delete;
+    private Boolean audit;
+    private Boolean unAudit;
+    private Boolean print;
+    private Boolean fileExport;
+    private Boolean fileImport;
     private List<OtherPowerDTO> other;
 
     public Long getGroupId() {
@@ -41,75 +41,75 @@ public class PowerDTO {
         this.moduleName = moduleName;
     }
 
-    public boolean getQuery() {
+    public Boolean getQuery() {
         return query;
     }
 
-    public void setQuery(boolean query) {
+    public void setQuery(Boolean query) {
         this.query = query;
     }
 
-    public boolean getAdd() {
+    public Boolean getAdd() {
         return add;
     }
 
-    public void setAdd(boolean add) {
+    public void setAdd(Boolean add) {
         this.add = add;
     }
 
-    public boolean getUpdate() {
+    public Boolean getUpdate() {
         return update;
     }
 
-    public void setUpdate(boolean update) {
+    public void setUpdate(Boolean update) {
         this.update = update;
     }
 
-    public boolean getDelete() {
+    public Boolean getDelete() {
         return delete;
     }
 
-    public void setDelete(boolean delete) {
+    public void setDelete(Boolean delete) {
         this.delete = delete;
     }
 
-    public boolean getAudit() {
+    public Boolean getAudit() {
         return audit;
     }
 
-    public void setAudit(boolean audit) {
+    public void setAudit(Boolean audit) {
         this.audit = audit;
     }
 
-    public boolean getUnAudit() {
+    public Boolean getUnAudit() {
         return unAudit;
     }
 
-    public void setUnAudit(boolean unAudit) {
+    public void setUnAudit(Boolean unAudit) {
         this.unAudit = unAudit;
     }
 
-    public boolean getPrint() {
+    public Boolean getPrint() {
         return print;
     }
 
-    public void setPrint(boolean print) {
+    public void setPrint(Boolean print) {
         this.print = print;
     }
 
-    public boolean getFileExport() {
+    public Boolean getFileExport() {
         return fileExport;
     }
 
-    public void setFileExport(boolean fileExport) {
+    public void setFileExport(Boolean fileExport) {
         this.fileExport = fileExport;
     }
 
-    public boolean getFileImport() {
+    public Boolean getFileImport() {
         return fileImport;
     }
 
-    public void setFileImport(boolean fileImport) {
+    public void setFileImport(Boolean fileImport) {
         this.fileImport = fileImport;
     }
 

+ 18 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java

@@ -251,6 +251,24 @@ public class AccountController {
         return Result.success();
     }
 
+    /**
+     * 个人账户绑定角色
+     * @param accountId
+     * @param roleIds
+     * @return
+     */
+    @PostMapping("/bind/roles")
+    public Result bindRoles(@RequestParam long accountId, @RequestParam String roleIds) {
+        accountService.bindRoles(accountId, roleIds);
+        accountService.clearCache(accountId);
+        return Result.success();
+    }
+
+    @GetMapping("/accountRole/list")
+    public Result getAccountRole(){
+        return Result.success(accountService.selectAccountRole());
+    }
+
     /**
      * 解除个人账户绑定角色
      *

+ 5 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java

@@ -1,7 +1,10 @@
 package com.usoftchina.saas.account.mapper;
 
+import com.usoftchina.saas.account.dto.AccountRoleDTO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @author yingp
  * @date 2018/10/2
@@ -45,4 +48,6 @@ public interface AccountRoleMapper {
      * @param roleId
      */
     void deleteByRoleId(@Param("roleId") Long roleId);
+
+    List<AccountRoleDTO> selectAccountRole();
 }

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/RoleResourceMapper.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.account.mapper;
 
 import com.usoftchina.saas.account.po.OtherPower;
+import com.usoftchina.saas.account.po.PowerInfo;
 import com.usoftchina.saas.account.po.RoleResource;
 import org.apache.ibatis.annotations.Param;
 
@@ -62,6 +63,12 @@ public interface RoleResourceMapper {
      */
     List<Map<String, Object>> selectClassifyByRoleId(@Param("id") Long id);
 
+    /**
+     * 查询所有的ClassIfy
+     * @return
+     */
+    List<PowerInfo> selectPowerInfo();
+
     /**
      * 查询其他权限
      * @return

+ 43 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/PowerInfo.java

@@ -0,0 +1,43 @@
+package com.usoftchina.saas.account.po;
+
+import java.io.Serializable;
+
+public class PowerInfo implements Serializable {
+
+    private String classify;
+    private Long groupId;
+    private String groupName;
+    private String moduleName;
+
+    public String getClassify() {
+        return classify;
+    }
+
+    public void setClassify(String classify) {
+        this.classify = classify;
+    }
+
+    public Long getGrougId() {
+        return groupId;
+    }
+
+    public void setGrougId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getModuleName() {
+        return moduleName;
+    }
+
+    public void setModuleName(String moduleName) {
+        this.moduleName = moduleName;
+    }
+}

+ 15 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.account.service;
 
+import com.usoftchina.saas.account.dto.AccountRoleDTO;
 import com.usoftchina.saas.account.po.Account;
 import com.usoftchina.saas.account.po.RoleResource;
 
@@ -108,6 +109,20 @@ public interface AccountService {
      */
     void bindRole(Long accountId, Long roleId);
 
+    /**
+     * 绑定个人账号与多个角色
+     *
+     * @param accountId
+     * @param roleIds
+     */
+    void bindRoles(Long accountId, String roleIds);
+
+    /**
+     * 账号+角色信息列表
+     * @return
+     */
+    List<AccountRoleDTO> selectAccountRole();
+
     /**
      * 解除个人账号与角色的绑定
      *

+ 14 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.account.service.impl;
 
 import com.usoftchina.saas.account.cache.AccountCache;
+import com.usoftchina.saas.account.dto.AccountRoleDTO;
 import com.usoftchina.saas.account.mapper.AccountCompanyMapper;
 import com.usoftchina.saas.account.mapper.AccountMapper;
 import com.usoftchina.saas.account.mapper.AccountRoleMapper;
@@ -113,6 +114,19 @@ public class AccountServiceImpl implements AccountService {
         }
     }
 
+    @Override
+    public void bindRoles(Long accountId, String roleIds) {
+        String[] array = roleIds.split(",");
+        for (int i = 0; i < array.length; i++){
+            bindRole(accountId, Long.parseLong(array[i]));
+        }
+    }
+
+    @Override
+    public List<AccountRoleDTO> selectAccountRole(){
+        return accountRoleMapper.selectAccountRole();
+    }
+
     @Override
     public void unbindRole(Long accountId, Long roleId) {
         accountRoleMapper.delete(accountId, roleId);

+ 34 - 13
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/RoleServiceImpl.java

@@ -92,8 +92,29 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
     public List<PowerDTO> getResourcePowerById(Long id) {
         List<PowerDTO> powerDTOList = new ArrayList<PowerDTO>();
         List<Map<String, Object>> classifyList = roleResourceMapper.selectClassifyByRoleId(id);
+        List<PowerInfo> powerInfoList = roleResourceMapper.selectPowerInfo();
         List<OtherPower> otherPowerList = roleResourceMapper.selectOthersPower();
-        //查询所有模块
+
+        for (PowerInfo powerInfo : powerInfoList){
+            PowerDTO powerDTO = new PowerDTO();
+            powerDTO.setGroupId(powerInfo.getGrougId());
+            powerDTO.setModuleName(powerInfo.getModuleName());
+            powerDTO.setGroupName(powerInfo.getGroupName());
+            //赋值默认权限,在权限列表中的资源默认置为false
+            setPowerValue(powerDTO, powerInfo.getClassify(), false);
+            //赋值权限
+            for (Map<String, Object> map : classifyList){
+                if (powerInfo.getGrougId().equals(map.get("group_id"))){
+                    String classify = String.valueOf(map.get("classify"));
+                    //角色有权限的,设置为true
+                    setPowerValue(powerDTO, classify, true);
+                    setOtherPower(powerDTO, powerInfo.getGrougId(), id, otherPowerList);
+                }
+            }
+            powerDTOList.add(powerDTO);
+        }
+
+        /*//查询所有模块
         List<ResourceModule> modules = resourceModuleMapper.selectByAppId(BaseContextHolder.getAppId());
         for (ResourceModule module : modules){
             //查询所有分组
@@ -113,7 +134,7 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
                 }
                 powerDTOList.add(powerDTO);
             }
-        }
+        }*/
         return powerDTOList;
     }
 
@@ -174,37 +195,37 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
         powerDTO.setOther(otherPowerDTOList);
     }
 
-    private void setPowerValue(PowerDTO powerDTO, String classify) {
+    private void setPowerValue(PowerDTO powerDTO, String classify , boolean status) {
         String[] array = classify.split(",");
         for(int i = 0; i < array.length; i++){
             switch (array[i]){
                 case "QUERY":
-                    powerDTO.setQuery(true);
-                    powerDTO.setFileExport(true);
+                    powerDTO.setQuery(status);
+                    powerDTO.setFileExport(status);
                     break;
                 case "ADD":
-                    powerDTO.setAdd(true);
+                    powerDTO.setAdd(status);
                     break;
                 case "UPDATE":
-                    powerDTO.setUpdate(true);
+                    powerDTO.setUpdate(status);
                     break;
                 case "AUDIT":
-                    powerDTO.setAudit(true);
+                    powerDTO.setAudit(status);
                     break;
                 case "UNAUDIT":
-                    powerDTO.setUnAudit(true);
+                    powerDTO.setUnAudit(status);
                     break;
                 case "DELETE":
-                    powerDTO.setDelete(true);
+                    powerDTO.setDelete(status);
                     break;
                 case "PRINT":
-                    powerDTO.setPrint(true);
+                    powerDTO.setPrint(status);
                     break;
                 case "EXPORT":
-                    powerDTO.setFileExport(true);
+                    powerDTO.setFileExport(status);
                     break;
                 case "IMPORT":
-                    powerDTO.setFileImport(true);
+                    powerDTO.setFileImport(status);
                     break;
                 default:
                     break;

+ 7 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml

@@ -16,4 +16,11 @@
     <delete id="deleteByCompanyId" parameterType="java.lang.Long">
         delete from ac_account_role where company_id=#{companyId}
     </delete>
+    <select id="selectAccountRole" resultType="com.usoftchina.saas.account.dto.AccountRoleDTO">
+        SELECT a.id id,a.username,a.realname,a.email,a.mobile,GROUP_CONCAT(c.name) roleNames,GROUP_CONCAT(c.id) roleIds
+        FROM ac_account a
+        left join ac_account_role b on a.id=b.account_id
+        left join ac_role c  on b.role_id = c.id
+        group by a.id,a.username,a.realname,a.email,a.mobile
+    </select>
 </mapper>

+ 8 - 0
base-servers/account/account-server/src/main/resources/mapper/RoleResourceMapper.xml

@@ -31,6 +31,14 @@
           GROUP BY GROUP_ID,CLASSIFY) A
         GROUP BY GROUP_ID
     </select>
+    <select id="selectPowerInfo" parameterType="java.lang.Long" resultType="com.usoftchina.saas.account.po.PowerInfo">
+        SELECT GROUP_CONCAT(classify) classify,group_id groupId,groupname,modulename FROM (
+          SELECT classify,group_id,s.name groupname,M.NAME modulename FROM AC_RESOURCE R
+				LEFT JOIN AC_RESOURCE_GROUP S ON R.GROUP_ID = S.ID
+				LEFT JOIN AC_RESOURCE_MODULE M ON S.MODULE_ID = M.ID
+          GROUP BY GROUP_ID,CLASSIFY,s.name,M.NAME) A
+        GROUP BY GROUP_ID,groupname,modulename
+    </select>
     <resultMap id="OtherPowerResultMap" type="com.usoftchina.saas.account.po.OtherPower">
         <result column="name" property="name" jdbcType="VARCHAR" />
         <result column="id" property="resourceId" jdbcType="BIGINT" />

+ 1 - 1
base-servers/auth/auth-client/src/main/java/com/usoftchina/saas/auth/client/interceptor/AuthRestInterceptor.java

@@ -42,7 +42,7 @@ public class AuthRestInterceptor extends HandlerInterceptorAdapter {
                 JwtInfo infoFromToken = JwtHelper.getInfoFromToken(token, authConfig.getPublicKey());
                 BaseContextHolder.setAppId(infoFromToken.getAppId());
                 BaseContextHolder.setUserId(infoFromToken.getUserId());
-                BaseContextHolder.setUserName(infoFromToken.getUserName());
+                BaseContextHolder.setUserName(infoFromToken.getRealName());
                 BaseContextHolder.setCompanyId(infoFromToken.getCompanyId());
                 BaseContextHolder.setToken(token);
                 log.info("request={} token={} \\r\\n userName={}", request.getRequestURI(),

+ 3 - 1
base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/jwt/JwtHelper.java

@@ -41,6 +41,7 @@ public class JwtHelper {
                             .claim("userId", jwtInfo.getUserId())
                             .claim("companyId", jwtInfo.getCompanyId())
                             .claim("userName", jwtInfo.getUserName())
+                            .claim("realName", jwtInfo.getRealName())
                             .setExpiration(DateTime.now().plusSeconds(expire).toDate())
                             // 设置算法(必须)
                             .signWith(SignatureAlgorithm.RS256, RsaUtils.getPrivateKey(priKeyPath))
@@ -97,7 +98,8 @@ public class JwtHelper {
                 ObjectUtils.getStringValue(body.get("appId")),
                 ObjectUtils.getLongValue(body.get("companyId")),
                 ObjectUtils.getLongValue(body.get("userId")),
-                ObjectUtils.getStringValue(body.get("userName"))
+                ObjectUtils.getStringValue(body.get("userName")),
+                ObjectUtils.getStringValue(body.get("realName"))
         );
     }
 }

+ 11 - 1
base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/jwt/JwtInfo.java

@@ -11,12 +11,22 @@ public class JwtInfo implements Serializable{
     private Long companyId;
     private Long userId;
     private String userName;
+    private String realName;
 
-    public JwtInfo(String appId, Long companyId, Long userId, String userName) {
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public JwtInfo(String appId, Long companyId, Long userId, String userName, String realName) {
         this.appId = appId;
         this.companyId = companyId;
         this.userId = userId;
         this.userName = userName;
+        this.realName = realName;
     }
 
     public String getAppId() {

+ 2 - 2
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java

@@ -82,7 +82,7 @@ public class AuthController {
             // TODO
             String appId = "trade-app";
 
-            JwtInfo info = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername());
+            JwtInfo info = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername(), accountDTO.getRealname());
             TokenVO tokenVO = JwtHelper.generateToken(info, privateKeyPath, expire);
             TokenDTO tokenDTO = BeanMapper.map(tokenVO, TokenDTO.class);
             // 登录日志
@@ -112,7 +112,7 @@ public class AuthController {
         JwtInfo infoFromToken = JwtHelper.getInfoFromToken(token, publicKeyPath);
         if (isCompanyAvailable(infoFromToken, companyId)) {
             JwtInfo info = new JwtInfo(infoFromToken.getAppId(), companyId, infoFromToken.getUserId(),
-                    infoFromToken.getUserName());
+                    infoFromToken.getUserName(), infoFromToken.getRealName());
             TokenVO tokenVO = JwtHelper.generateToken(info, privateKeyPath, expire);
             return Result.success(BeanMapper.map(tokenVO, TokenDTO.class));
         }

+ 1 - 1
base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/AuthFilter.java

@@ -49,7 +49,7 @@ public class AuthFilter implements GlobalFilter, Ordered {
                 BaseContextHolder.setAppId(jwt.getAppId());
                 BaseContextHolder.setUserId(jwt.getUserId());
                 BaseContextHolder.setCompanyId(jwt.getCompanyId());
-                BaseContextHolder.setUserName(jwt.getUserName());
+                BaseContextHolder.setUserName(jwt.getRealName());
                 BaseContextHolder.setToken(token);
                 AccountDTO accountDTO = AccountCache.current().getAccount();
                 if (null == accountDTO) {

+ 0 - 1
base-servers/gateway-server/src/main/resources/application.yml

@@ -176,5 +176,4 @@ auth:
   ignores:
     - /api/auth/authorize
     - /api/account/account/register
-    - /api/account/company/register
     - /api/auth/info

+ 1 - 0
base-servers/mail/mail-dto/src/main/java/com/usoftchina/saas/mail/dto/TemplateMailMessage.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.mail.dto;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import java.util.Map;
 
 /**

+ 1 - 1
frontend/saas-web/app/Application.scss

@@ -153,7 +153,7 @@ body.launching {
   }
 }
 
-
+.x-btn-default-small,
 .x-btn-default-toolbar-small{
   border-radius: 2px !important;
 }

+ 49 - 2
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -12,6 +12,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     columnWidth : 1.0, 
 
     requires: [
+        'Ext.Action',
         'Ext.grid.plugin.CellEditing',
         'Ext.selection.CellModel'
     ],
@@ -26,6 +27,10 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     allowEmpty: false, // 表格为空时校验合法
     showCount: true, // 显示合计栏
 
+    // Clearing selection disables the Actions.
+    allowDeselect: true,
+    defaultActionType: 'button',
+
     initComponent: function() {
         var me = this;
         me.initColumns();
@@ -39,6 +44,15 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         };
 
         Ext.apply(me, {
+            actions: {
+                copy: {
+                    iconCls: 'x-fa fa-copy',
+                    text: '复制单元格',
+                    handler: function() {
+                        me.onCopy(me.selectedData);
+                    }
+                }
+            },
             plugins: {
                 cellediting: {
                     clicksToEdit: 1,
@@ -51,7 +65,15 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             },
             normalViewConfig: {
                 deferEmptyText: false,
-                emptyText: '无数据'
+                emptyText: '无数据',
+                listeners: {
+                    itemcontextmenu: function(view, rec, node, index, e) {
+                        e.stopEvent();
+                        me.getContextMenu().show().setLocalXY(e.getXY());
+                        me.selectedData = e.target.innerText;
+                        return false;
+                    }
+                }
             },
             lockedGridConfig: {
                 // scrollable: {
@@ -464,6 +486,31 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             }
         });
         return trueData;
-    }
+    },
+
+    getContextMenu: function() {
+        var me = this;
+
+        return me.contextMenu || (me.contextMenu = me.add({
+            xtype: 'menu',
+            items: [
+                // Actions can be converted into MenuItems
+                '@copy',
+            ]
+        }));
+    },
+
+    onCopy: function(text) {
+		var target = Ext.DomHelper.append(document.body, {
+			tag: 'textarea',
+			style: 'opacity: 0;position: absolute;top: -10000px;right: 0;',
+			html: text
+		});
+		target.focus();
+		target.select();
+	    document.execCommand('Copy');
+	    target.blur();
+	    document.body.removeChild(target);
+	},
 
 });

+ 1 - 1
frontend/saas-web/app/view/document/bom/FormPanel.js

@@ -155,7 +155,7 @@ Ext.define('saas.view.document.bom.FormPanel', {
                 dataIndex : "bd_baseqty",
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 3,
+                    decimalPrecision: 0,
                     minValue:0
                 },
                 renderer : function(v) {

+ 1 - 1
frontend/saas-web/app/view/document/product/FormPanel.js

@@ -204,7 +204,7 @@ Ext.define('saas.view.document.product.FormPanel', {
         detnoColumn: 'pd_detno',
         showCount: false,
         allowEmpty:true,
-        deleteDetailUrl:'/api/document/customer/delete/',
+        deleteDetailUrl:'/api/document/product/deleteDetail/',
         columns : [{
             text : "ID", 
             dataIndex : "id", 

+ 6 - 0
frontend/saas-web/app/view/home/InfoCard.scss

@@ -40,6 +40,10 @@ $max-card-width: 235px;
             }
         }
     }
+
+    .x-toolbar-default-vertical {
+        padding: 0;
+    }
 }
 
 .x-scroller-button {
@@ -61,11 +65,13 @@ $max-card-width: 235px;
 .x-scroller-button-left {
     left: 0;
     background-image: url('images/default/arrows-left.png') !important;
+    background-position-x: 10px !important;
 }
 
 .x-scroller-button-right {
     right: 0;
     background-image: url('images/default/arrows-right.png') !important;
+    background-position-x: 4px !important;
 }
 
 .x-btn-over.x-btn-default-small.x-scroller-button-left,

+ 1 - 0
frontend/saas-web/app/view/main/Main.js

@@ -29,6 +29,7 @@ Ext.define('saas.view.main.Main', {
                 {
                     xtype: 'component',
                     reference: 'mainLogo',
+                    width: 180,
                     cls: 'main-logo-wrap',
                     html: '<div class="main-logo"><img src="resources/images/default/logo-default.png"/><div class="logo-text">优企云服</div></div>',
                     bind: {

+ 2 - 0
frontend/saas-web/app/view/main/Navigation.js

@@ -5,6 +5,8 @@ Ext.define('saas.view.main.Navigation', {
 
     reference: 'navigationTreeList',
 
+    width: 180,
+
     navCollapsed: false,
     cls: 'x-navpanel',
 

+ 1 - 0
frontend/saas-web/app/view/money/payBalance/FormPanel.js

@@ -118,6 +118,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
         }, {
             text: '资金账户',
             dataIndex: 'pd_bankname',
+            allowBlank : false,
             editor:{
                 xtype:'dbfindtrigger'
             }

+ 1 - 0
frontend/saas-web/app/view/money/recBalance/FormPanel.js

@@ -123,6 +123,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         }, {
             text: '资金账户',
             dataIndex: 'rd_bankname',
+            allowBlank : false,
             width: 200,
             editor:{
                 xtype:'dbfindtrigger'

+ 6 - 0
frontend/saas-web/app/view/purchase/report/Purchase.js

@@ -175,6 +175,12 @@ Ext.define('saas.view.purchase.report.Purchase', {
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
             var format = '0.' + xr.join();
             return Ext.util.Format.number(v, format);
+        },
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
         }
     }, {
         text: '收货金额',

+ 23 - 5
frontend/saas-web/app/view/sale/report/Sale.js

@@ -56,7 +56,7 @@ Ext.define('saas.view.sale.report.Sale', {
         width: 200
     }, {
         text: '业务状态',
-        dataIndex: 'sa_status'
+        dataIndex: 'sa_sendstatus'
     }, {
         text: '业务员编号',
         dataIndex: 'sa_sellercode',
@@ -120,13 +120,31 @@ Ext.define('saas.view.sale.report.Sale', {
         }
     }, {
         text: '单价',
-        xtype: 'numbercolumn',
         dataIndex: 'sd_price',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    }, {
+        text: '不含税单价',
+        dataIndex: 'sd_netprice',
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '税率',
         dataIndex: 'sd_taxrate',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
     }, {//∑金额
         text: '金额',
         xtype: 'numbercolumn',
@@ -135,7 +153,7 @@ Ext.define('saas.view.sale.report.Sale', {
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
             var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }

+ 46 - 8
frontend/saas-web/app/view/sale/report/SaleProfit.js

@@ -77,36 +77,74 @@ Ext.define('saas.view.sale.report.SaleProfit', {
         dataIndex: 'pr_spec'
     }, {
         text: '单位',
-        xtype: 'numbercolumn',
         dataIndex: 'pr_unit'
     }, {
         text: '数量',
         dataIndex: 'pd_outqty',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '单价',
         dataIndex: 'pd_sendprice',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '税率%',
         dataIndex: 'pd_taxrate',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
     }, {
         text: '含税金额',
         dataIndex: 'pd_ordertotal',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '成本金额',
         dataIndex: 'pd_total',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '毛利润',
         dataIndex: 'pd_profit',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '毛利率%',
         dataIndex: 'pd_profitpresent',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v*100 + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v*100, format);
+        }
     }, {
         text : "备注", 
         dataIndex : "pd_text1",

+ 1 - 1
frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js

@@ -140,7 +140,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
             {
                 text : "数量", 
                 xtype: 'numbercolumn',
-                dataIndex : "pd_inqty", 
+                dataIndex : "pd_outqty", 
                 width : 120.0,
                 allowBlank:false,
                 editor : {

+ 32 - 23
frontend/saas-web/app/view/stock/appropriationInOut/FormPanelController.js

@@ -178,34 +178,43 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                 }
             },           
             //放大镜赋值关系 以及 tpl模板
-            'multidbfindtrigger[name=pd_prodcode]':{
-                beforerender:function(f){
-                    Ext.apply(f,{
-                        dataUrl:'/api/document/product/list',
+            'multidbfindtrigger[name=pd_prodcode]': {
+                beforerender: function (f) {
+                    Ext.apply(f, {
+                        dataUrl: '/api/document/product/list',
                         // dataUrl:'http://localhost:9480/product/list',
                         addXtype: 'document-product-formpanel',
                         addTitle: '物料资料',
-                        dbfinds:[{
-                            from:'id',to:'pd_prodid'                          
-                        },{
-                            from:'pr_code',to:'pd_prodcode'                          
-                        },{
-                            from:'pr_detail',to:'pr_detail'
-                        },{
-                            from:'pr_spec',to:'pr_spec'
+                        dbfinds: [{
+                            from: 'id',
+                            to: 'pd_prodid',ignore:true
+                        }, {
+                            from: 'pr_code',
+                            to: 'pd_prodcode'
+                        }, {
+                            from: 'pr_detail',
+                            to: 'pr_detail'
+                        }, {
+                            from: 'pr_spec',
+                            to: 'pr_spec'
                         },{
                             from:'pr_whid',to:'pd_whid'
                         },{
                             from:'pr_whcode',to:'pd_whcode'
                         },{
                             from:'pr_whname',to:'pd_whname'
-                        }],
-                        dbtpls:[{
-                            field:'pr_code',width:100
-                        },{
-                            field:'pr_detail',width:100
                         },{
-                            field:'pr_spec',width:100
+                            from:'pr_purcprice',to:'pd_orderprice'
+                        }],
+                        dbtpls: [{
+                            field: 'pr_code',
+                            width: 100
+                        }, {
+                            field: 'pr_detail',
+                            width: 100
+                        }, {
+                            field: 'pr_spec',
+                            width: 100
                         }],
                         defaultCondition: "pr_statuscode='OPEN'",
                         dbSearchFields:[{
@@ -218,7 +227,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                             },
                             allowBlank : true, 
                             columnWidth : 0.25
-                        }],                   
+                        }],                        
                         dbColumns:[{
                             "text": "物料ID",
                             "hidden": true,
@@ -259,7 +268,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                             xtype: 'numbercolumn',
                             renderer : function(v) {
                                 var arr = (v + '.').split('.');
-                                var xr = (new Array(arr[1].length)).fill('0');
+                                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
                                 var format = '0,000.' + xr.join();
                                 return Ext.util.Format.number(v, format);
                             },                            
@@ -285,13 +294,13 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                             "dataIndex": "pr_zxbzs",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align: 'end'
                         },{
                             "text": "L/T",
                             "dataIndex": "pr_leadtime",
                             "width": 100,
                         }]
-                    }) ;   
+                    });
 
                 }
             },
@@ -355,7 +364,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                 }) ;   
 
             }
-        },           
+            },           
         //放大镜赋值关系 以及 tpl模板
         'dbfindtrigger[name=pd_inwhname]':{
             beforerender:function(f){