heqinwei 7 years ago
parent
commit
2d7cb31ce7
58 changed files with 1524 additions and 584 deletions
  1. 1 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MessageLogServiceImpl.java
  2. 28 21
      applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml
  3. 19 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Bankinformation.java
  4. 3 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  5. 66 64
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  6. 8 4
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/EmployeeServiceImpl.java
  7. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  8. 2 0
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  9. 22 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/config/WebMvcConfig.java
  10. 31 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/BankinformationMapper.java
  11. 333 0
      applications/money/money-server/src/main/resources/mapper/BankinformationMapper.xml
  12. 18 18
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  13. 9 13
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  14. 6 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SaleProfitView.java
  15. 13 9
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  16. 8 4
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  17. 3 0
      applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml
  18. 26 0
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/controller/MakeController.java
  19. 4 2
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/MakeService.java
  20. 71 9
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/MakeServiceImpl.java
  21. 17 13
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutServiceImpl.java
  22. 182 45
      frontend/saas-portal-web/src/css/main.css
  23. BIN
      frontend/saas-portal-web/src/img/assets/1.png
  24. BIN
      frontend/saas-portal-web/src/img/assets/2.png
  25. BIN
      frontend/saas-portal-web/src/img/assets/beijing2x.png
  26. BIN
      frontend/saas-portal-web/src/img/assets/fen xi@2x.png
  27. BIN
      frontend/saas-portal-web/src/img/assets/kuaisu@2x.png
  28. BIN
      frontend/saas-portal-web/src/img/assets/sou.png
  29. BIN
      frontend/saas-portal-web/src/img/assets/tishi1x.png
  30. BIN
      frontend/saas-portal-web/src/img/assets/xunzhao@2x.png
  31. BIN
      frontend/saas-portal-web/src/img/gongneng/ xiao shou 3@3x.png
  32. BIN
      frontend/saas-portal-web/src/img/gongneng/FEN XI 8@3x.png
  33. BIN
      frontend/saas-portal-web/src/img/gongneng/QIAN BAO 7@3x.png
  34. BIN
      frontend/saas-portal-web/src/img/gongneng/cai gou 4@3x.png
  35. BIN
      frontend/saas-portal-web/src/img/gongneng/cang ku 5@3x.png
  36. BIN
      frontend/saas-portal-web/src/img/gongneng/jia gong 6@3x.png
  37. BIN
      frontend/saas-portal-web/src/img/gongneng/ren wu 1@3x.png
  38. BIN
      frontend/saas-portal-web/src/img/gongneng/xu xian@3x.png
  39. BIN
      frontend/saas-portal-web/src/img/gongneng/zi yuan 2@3x.png
  40. 251 197
      frontend/saas-portal-web/src/index.html
  41. 50 15
      frontend/saas-portal-web/src/js/main.js
  42. 3 0
      frontend/saas-web/app/view/core/base/BasePanel.js
  43. 33 0
      frontend/saas-web/app/view/core/base/BasePanel.scss
  44. 4 0
      frontend/saas-web/app/view/core/base/GridPanel.js
  45. 1 1
      frontend/saas-web/app/view/document/kind/ChildForm.js
  46. 27 9
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  47. 26 0
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  48. 27 3
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  49. 26 0
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  50. 27 3
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js
  51. 27 1
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  52. 3 3
      frontend/saas-web/app/view/purchase/report/PurchasePay.js
  53. 12 4
      frontend/saas-web/app/view/stock/report/Prodiodetail.js
  54. 100 99
      frontend/saas-web/app/view/stock/report/ProdiodetailController.js
  55. 28 31
      frontend/saas-web/app/view/sys/account/DataList.js
  56. 2 1
      frontend/saas-web/app/view/sys/manager/FormPanel.js
  57. 5 0
      frontend/saas-web/app/view/sys/manager/FormPanel.scss
  58. 1 11
      frontend/saas-web/resources/json/navigation.json

+ 1 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MessageLogServiceImpl.java

@@ -109,6 +109,7 @@ public class MessageLogServiceImpl extends CommonBaseServiceImpl<MessagelogMappe
         msg.setCreateTime(new Date());
         msg.setCreatorId(BaseContextHolder.getUserId());
         msg.setMl_keyvalue(baseDTO.getId());
+        msg.setMl_man(BaseContextHolder.getUserName());
         getMapper().insert(msg);
         return "success";
     }

+ 28 - 21
applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml

@@ -11,46 +11,47 @@
     </select>
 
     <select id="getPurchaseDataNow" parameterType="long" resultType="string">
-        select concat('[',GROUP_CONCAT(concat('{"x":"',si_vendname,'","y":',IFNULL(round(si_amount/10000,2),0),'}')),']')  from statsinfo
-        where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc
+        select concat('[',GROUP_CONCAT(concat('{"x":"',ifnull(si_vendname,''),'","y":',IFNULL(round(si_amount/10000,2),0),'}')),']')  from (
+        select * from statsinfo
+        where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc limit 10) a
     </select>
 
     <select id="getPurchaseDataInSixMonth" parameterType="long" resultType="string">
     select concat('[',d1,',',d2,',',d3,',',d4,',',d5,',',d6,']') from (
-(select concat('{"x":',DATE_FORMAT(now(),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_1,
+(select concat('{"x":',DATE_FORMAT(now(),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_1,
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_2,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_2,
 
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_3,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_3,
 
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_4,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_4,
 
 
 (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_5,
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_6)
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_6)
  </select>
 
 
     <select id="getStorageData" parameterType="long" resultType="string">
       select concat('[',d1,',',d2,',',d3,',',d4,',',d5,',',d6,']') from (
 
-(select concat('{"x":',DATE_FORMAT(now(),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_1,
+(select concat('{"x":',DATE_FORMAT(now(),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_1,
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_2,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_2,
 
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_3,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_3,
 
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_4,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_4,
 
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_5,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_5,
 
-(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_6);
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%c'),',"y":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),'}') d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_6);
     </select>
 
 
@@ -59,24 +60,30 @@
     </select>
 
     <select id="getSaleData" parameterType="long" resultType="string">
-        select concat('[',GROUP_CONCAT(concat('{"x":"',si_custname,'","y":',IFNULL(si_amount,0),'}')),']')  from statsinfo
-        where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='SALE' ORDER BY si_amount desc
+      select concat('[',five,',',other,']') from ((
+
+    select GROUP_CONCAT(concat('{"x":"',si_custname,'","y":',IFNULL(round(si_amount/10000,2),0),'}')) five from (
+    select * from statsinfo where companyid=1 and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='SALE' ORDER BY si_amount desc limit 0,5
+    ) c)d,(
+
+    select concat('{"x":"其它","y":',ifnull(round((all_sum - five_sum)/10000,2),0),'}') other from ( (select sum(si_amount) all_sum from statsinfo  where companyid=1 and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='SALE')a,
+    (select sum(si_amount) five_sum from statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='SALE' ORDER BY si_amount desc limit 0,5)b))e)
     </select>
 
     <select id="getSaleFutureData" parameterType="long" resultType="string">
        	select concat('[',d1,',',d2,',',d3,',',d4,',',d5,',',d6,']') from (
-        (select concat('{"x":',DATE_FORMAT(now(),'%Y%m'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='SALE' ORDER BY si_amount desc) data_1,
+        (select concat('{"x":',DATE_FORMAT(now(),'%c'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='SALE' ORDER BY si_amount desc) data_1,
 
-        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc)data_2,
+        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%c'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc)data_2,
 
 
-        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc)data_3,
+        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%c'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc)data_3,
 
-        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc) data_4,
+        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%c'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc) data_4,
 
 
-        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc)data_5,
+        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%c'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc)data_5,
 
-        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc)data_6)
+        (select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%c'),',"sale":',ifnull(ROUND(sum((ifnull(si_amount/10000,0))),2),'0'),',"saleback":',ifnull(ROUND(sum((ifnull(si_amount_rec/10000,0))),2),'0'),'}') d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='SALERETURN' ORDER BY si_amount desc)data_6)
        </select>
 </mapper>

+ 19 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Bankinformation.java

@@ -43,6 +43,25 @@ public class Bankinformation extends CommonBaseEntity implements Serializable {
 
     private String bk_remark;
 
+    private Double bk_income;
+    private Double bk_spending;
+
+    public Double getBk_income() {
+        return bk_income;
+    }
+
+    public void setBk_income(Double bk_income) {
+        this.bk_income = bk_income;
+    }
+
+    public Double getBk_spending() {
+        return bk_spending;
+    }
+
+    public void setBk_spending(Double bk_spending) {
+        this.bk_spending = bk_spending;
+    }
+
     public String getBk_bankcode() {
         return bk_bankcode;
     }

+ 3 - 3
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java

@@ -39,9 +39,9 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
     @Override
     public boolean save(Bankinformation bankinformation){
         bankinformation.setCompanyId(BaseContextHolder.getCompanyId());
-        if (bankinformation.getBk_thisamount() == null || bankinformation.getBk_thisamount() == 0){
-            bankinformation.setBk_thisamount(bankinformation.getBk_beginamount());
-        }
+        bankinformation.setBk_thisamount(bankinformation.getBk_beginamount());
+        bankinformation.setBk_income(new Double(0));
+        bankinformation.setBk_spending(new Double(0));
 
         //判断编号
         String bktion = bankinformationMapper.selectBankcode(bankinformation.getBk_bankcode());

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

@@ -170,71 +170,68 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             if (insertDetail2.size()>0) {
                 customeraddressMapper.batchInsert(insertDetail2);
             }
-            baseDTO = getBaseDTOById(cu_id);
-            //日志记录
-            messageLogService.save(baseDTO);
-            return baseDTO;
-        }
-        //检查名称和编号
-        int count = getMapper().validNameAndCodeWhenUpdate(customer);
-        if (count>0) {
-            throw new BizException(500, "客户名称或编号重复");
-        }
-
-        //检查期初日期是否已结转
-        count = getMapper().validFinish(cu_id,companyId);
-        if (count>0) {
-            Customer cutpl = getMapper().selectByPrimaryKey(cu_id);
-            //期初应收
-            customer.setCu_beginaramount(cutpl.getCu_beginaramount());
-            //期初预收
-            customer.setCu_beginprerecamount(cutpl.getCu_beginprerecamount());
-        }
+        }else {
+            //检查名称和编号
+            int count = getMapper().validNameAndCodeWhenUpdate(customer);
+            if (count > 0) {
+                throw new BizException(500, "客户名称或编号重复");
+            }
 
-        //更新操作
-        getMapper().updateByPrimaryKeySelective(customer);
-        //添加从表传输对象
-        for (CustomercontactDTO item : items1) {
-            Customercontact detail1 = BeanMapper.map(item,Customercontact.class);
-            detail1.setCc_cuid(cu_id);
-            detail1.setCompanyId(companyId);
-            detail1.setCreatorId(userId);
-            detail1.setCreateTime(new Date());
-            if (StringUtils.isEmpty(detail1.getId()) || "0".equals(detail1.getId().toString())) {
-                insertDetail1.add(detail1);
-            } else {
-                updateDetail1.add(detail1);
+            //检查期初日期是否已结转
+            count = getMapper().validFinish(cu_id, companyId);
+            if (count > 0) {
+                Customer cutpl = getMapper().selectByPrimaryKey(cu_id);
+                //期初应收
+                customer.setCu_beginaramount(cutpl.getCu_beginaramount());
+                //期初预收
+                customer.setCu_beginprerecamount(cutpl.getCu_beginprerecamount());
             }
-        }
-        //插入从表
-        if (insertDetail1.size()>0) {
-            customercontactMapper.batchInsert(insertDetail1);
-        }
-        //更新从表
-        if (updateDetail1.size()>0) {
-            customercontactMapper.batchUpdate(updateDetail1);
-        }
 
-        for (CustomeraddressDTO item : items2) {
-            Customeraddress detail2 = BeanMapper.map(item,Customeraddress.class);
-            detail2.setCa_cuid(cu_id);
-            detail2.setCompanyId(companyId);
-            detail2.setCreatorId(userId);
-            detail2.setCreateTime(new Date());
-            if (StringUtils.isEmpty(detail2.getId()) || "0".equals(detail2.getId().toString())) {
-                insertDetail2.add(detail2);
-            } else {
-                updateDetail2.add(detail2);
+            //更新操作
+            getMapper().updateByPrimaryKeySelective(customer);
+            //添加从表传输对象
+            for (CustomercontactDTO item : items1) {
+                Customercontact detail1 = BeanMapper.map(item, Customercontact.class);
+                detail1.setCc_cuid(cu_id);
+                detail1.setCompanyId(companyId);
+                detail1.setCreatorId(userId);
+                detail1.setCreateTime(new Date());
+                if (StringUtils.isEmpty(detail1.getId()) || "0".equals(detail1.getId().toString())) {
+                    insertDetail1.add(detail1);
+                } else {
+                    updateDetail1.add(detail1);
+                }
+            }
+            //插入从表
+            if (insertDetail1.size() > 0) {
+                customercontactMapper.batchInsert(insertDetail1);
+            }
+            //更新从表
+            if (updateDetail1.size() > 0) {
+                customercontactMapper.batchUpdate(updateDetail1);
             }
 
-        }
-        //插入从表
-        if (insertDetail2.size()>0) {
-            customeraddressMapper.batchInsert(insertDetail2);
-        }
-        //更新从表
-        if (updateDetail2.size()>0) {
-            customeraddressMapper.batchUpdate(updateDetail2);
+            for (CustomeraddressDTO item : items2) {
+                Customeraddress detail2 = BeanMapper.map(item, Customeraddress.class);
+                detail2.setCa_cuid(cu_id);
+                detail2.setCompanyId(companyId);
+                detail2.setCreatorId(userId);
+                detail2.setCreateTime(new Date());
+                if (StringUtils.isEmpty(detail2.getId()) || "0".equals(detail2.getId().toString())) {
+                    insertDetail2.add(detail2);
+                } else {
+                    updateDetail2.add(detail2);
+                }
+
+            }
+            //插入从表
+            if (insertDetail2.size() > 0) {
+                customeraddressMapper.batchInsert(insertDetail2);
+            }
+            //更新从表
+            if (updateDetail2.size() > 0) {
+                customeraddressMapper.batchUpdate(updateDetail2);
+            }
         }
 
         //更新应收余额
@@ -459,14 +456,19 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         return baseDTO;
     }
 
-    private String pushMaxnubmer(String code, Long id) {
+    private  String pushMaxnubmer(String code, Long id) {
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(code, companyId) :
-                getMapper().validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.CUSTOMER.getCaller()).getData();
+
+        String cu_code = null;
+        synchronized (CustomerServiceImpl.class){
+            Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(code, companyId) :
+                    getMapper().validateCodeWhenUpdate(code, id, companyId);
+            cu_code =  maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.CUSTOMER.getCaller()).getData();
+        }
+        return cu_code;
     }
 
     /**

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

@@ -136,14 +136,18 @@ public class EmployeeServiceImpl extends CommonBaseServiceImpl<EmployeeMapper, E
         return new DocBaseDTO(id, code, "Employee");
     }
 
-    private String pushMaxnubmer(String code, Long id) {
+    private  String pushMaxnubmer(String code, Long id) {
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(code, companyId) :
-                getMapper().validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.EMPLOYEE.getCaller()).getData();
+        String em_code = null;
+        synchronized (EmployeeServiceImpl.class){
+            Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(code, companyId) :
+                    getMapper().validateCodeWhenUpdate(code, id, companyId);
+            em_code =  maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.EMPLOYEE.getCaller()).getData();
+        }
+        return em_code;
     }
 
 }

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

@@ -526,7 +526,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
      * @Author: chenwei
      * @Date: 2018/10/26
      */
-    private String pushMaxnubmer(String code, Long id) {
+    private synchronized String pushMaxnubmer(String code, Long id) {
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }

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

@@ -24,6 +24,8 @@
     <result column="bk_text4" property="bk_text4" jdbcType="VARCHAR" />
     <result column="bk_text5" property="bk_text5" jdbcType="VARCHAR" />
     <result column="bk_remark" property="bk_remark" jdbcType="VARCHAR" />
+    <result column="bk_spending" property="bk_spending" jdbcType="DOUBLE" />
+    <result column="bk_income" property="bk_income" jdbcType="DOUBLE" />
   </resultMap>
   <resultMap id="ResultMapWithBLOBs" type="com.usoftchina.saas.document.entities.Bankinformation" extends="BaseResultMap" >
     <result column="bk_remark" property="bk_remark" jdbcType="LONGVARCHAR" />

+ 22 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/config/WebMvcConfig.java

@@ -0,0 +1,22 @@
+//package com.usoftchina.saas.money.config;
+//
+//import org.springframework.web.servlet.config.annotation.CorsRegistry;
+//import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+//
+///**
+// * @author heqw
+// * @date 2018/11/13 16:58
+// **/
+//public class WebMvcConfig extends WebMvcConfigurerAdapter {
+//    @Override
+//    public void addCorsMappings(CorsRegistry registry) {
+//        registry.addMapping("/**")
+//                .allowedOrigins("*")
+//                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
+//                .allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method",
+//                        "Access-Control-Request-Headers")
+//                .exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")
+//                .maxAge(3600)
+//                .allowCredentials(true);
+//    }
+//}

+ 31 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/BankinformationMapper.java

@@ -0,0 +1,31 @@
+package com.usoftchina.saas.money.mapper;
+
+import com.usoftchina.saas.base.mapper.CommonBaseMapper;
+import com.usoftchina.saas.commons.dto.ComboDTO;
+import com.usoftchina.saas.money.po.Bankinformation;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface BankinformationMapper extends CommonBaseMapper<Bankinformation> {
+    int deleteByPrimaryKey(Integer bkId);
+
+//    int insert(Bankinformation record);
+
+    int insertSelective(Bankinformation record);
+
+    Bankinformation selectByPrimaryKey(Integer bkId);
+
+    int updateByPrimaryKeySelective(Bankinformation record);
+
+    int updateByPrimaryKeyWithBLOBs(Bankinformation record);
+
+    List<Bankinformation> selectBankinformationBycondition(@Param("con") String con, @Param("companyId") Long companyId);
+
+    List<ComboDTO> getCombo(@Param("companyId") Long companyId);
+    String selectBankcode(String bk_bankcode);
+
+    void updateBankAmount(@Param("id") Integer id, @Param("bk_thisamount") Double bk_thisamount);
+    Double selectThisamount(Integer id);
+
+}

+ 333 - 0
applications/money/money-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.usoftchina.saas.money.mapper.BankinformationMapper" >
+  <resultMap id="BaseResultMap" type="com.usoftchina.saas.money.po.Bankinformation" >
+    <id column="bk_id" property="id" jdbcType="INTEGER" />
+    <result column="bk_bankcode" property="bk_bankcode" jdbcType="VARCHAR" />
+    <result column="bk_bankname" property="bk_bankname" jdbcType="VARCHAR" />
+    <result column="bk_date" property="bk_date" jdbcType="TIMESTAMP" />
+    <result column="bk_type" property="bk_type" jdbcType="VARCHAR" />
+    <result column="bk_beginamount" property="bk_beginamount" jdbcType="DOUBLE" />
+    <result column="bk_thisamount" property="bk_thisamount" jdbcType="DOUBLE" />
+    <result column="bk_status" property="bk_status" jdbcType="VARCHAR" />
+    <result column="bk_statuscode" property="bk_statuscode" jdbcType="VARCHAR" />
+    <result column="bk_recorderid" property="bk_recorderid" jdbcType="INTEGER" />
+    <result column="bk_recorder" property="bk_recorder" jdbcType="VARCHAR" />
+    <result column="bk_recorddate" property="bk_recorddate" jdbcType="TIMESTAMP" />
+    <result column="bk_ym" property="bk_ym" jdbcType="INTEGER" />
+    <result column="companyid" property="companyId" jdbcType="INTEGER" />
+    <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
+    <result column="bk_text1" property="bk_text1" jdbcType="VARCHAR" />
+    <result column="bk_text2" property="bk_text2" jdbcType="VARCHAR" />
+    <result column="bk_text3" property="bk_text3" jdbcType="VARCHAR" />
+    <result column="bk_text4" property="bk_text4" jdbcType="VARCHAR" />
+    <result column="bk_text5" property="bk_text5" jdbcType="VARCHAR" />
+    <result column="bk_remark" property="bk_remark" jdbcType="VARCHAR" />
+    <result column="bk_spending" property="bk_spending" jdbcType="DOUBLE" />
+    <result column="bk_income" property="bk_income" jdbcType="DOUBLE" />
+  </resultMap>
+  <resultMap id="ResultMapWithBLOBs" type="com.usoftchina.saas.money.po.Bankinformation" extends="BaseResultMap" >
+    <result column="bk_remark" property="bk_remark" jdbcType="LONGVARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    bk_id, bk_bankcode, bk_bankname, bk_date, bk_type, bk_beginamount, bk_thisamount, 
+    bk_status, bk_statuscode, bk_recorderid, bk_recorder, bk_recorddate, bk_ym, companyid, 
+    updaterId, updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark
+  </sql>
+  <sql id="Blob_Column_List" >
+    bk_remark
+  </sql>
+  <select id="selectByPrimaryKey" resultMap="ResultMapWithBLOBs" parameterType="java.lang.Integer" >
+    select 
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from bankinformation
+    where bk_id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    delete from bankinformation
+    where bk_id = #{id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" parameterType="com.usoftchina.saas.money.po.Bankinformation" >
+    insert into bankinformation (bk_id, bk_bankcode, bk_bankname, 
+      bk_date, bk_type, bk_beginamount, 
+      bk_thisamount, bk_status, bk_statuscode, 
+      bk_recorderid, bk_recorder, bk_recorddate, 
+      bk_ym, companyid, updaterId, 
+      updateTime, bk_text1, bk_text2, 
+      bk_text3, bk_text4, bk_text5, 
+      bk_remark)
+    values (#{bk_bankcode,jdbcType=VARCHAR}, #{bk_bankname,jdbcType=VARCHAR},
+      #{bk_date,jdbcType=TIMESTAMP}, #{bk_type,jdbcType=VARCHAR}, #{bk_beginamount,jdbcType=DOUBLE},
+      #{bk_thisamount,jdbcType=DOUBLE}, #{bk_status,jdbcType=VARCHAR}, #{bk_statuscode,jdbcType=VARCHAR},
+      #{bk_recorderid,jdbcType=INTEGER}, #{bk_recorder,jdbcType=VARCHAR}, #{bk_recorddate,jdbcType=TIMESTAMP},
+      #{bk_ym,jdbcType=INTEGER}, #{companyId,jdbcType=INTEGER}, #{updaterId,jdbcType=INTEGER},
+      #{updateTime,jdbcType=TIMESTAMP}, #{bk_text1,jdbcType=VARCHAR}, #{bk_text2,jdbcType=VARCHAR},
+      #{bk_text3,jdbcType=VARCHAR}, #{bk_text4,jdbcType=VARCHAR}, #{bk_text5,jdbcType=VARCHAR},
+      #{bk_remark,jdbcType=LONGVARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="com.usoftchina.saas.money.po.Bankinformation" >
+    insert into bankinformation
+    <trim prefix="(" suffix=")" suffixOverrides="," >
+      <if test="bk_bankcode != null" >
+        bk_bankcode,
+      </if>
+      <if test="bk_bankname != null" >
+        bk_bankname,
+      </if>
+      <if test="bk_date != null" >
+        bk_date,
+      </if>
+      <if test="bk_type != null" >
+        bk_type,
+      </if>
+      <if test="bk_beginamount != null" >
+        bk_beginamount,
+      </if>
+      <if test="bk_thisamount != null" >
+        bk_thisamount,
+      </if>
+      <if test="bk_status != null" >
+        bk_status,
+      </if>
+      <if test="bk_statuscode != null" >
+        bk_statuscode,
+      </if>
+      <if test="bk_recorderid != null" >
+        bk_recorderid,
+      </if>
+      <if test="bk_recorder != null" >
+        bk_recorder,
+      </if>
+      <if test="bk_recorddate != null" >
+        bk_recorddate,
+      </if>
+      <if test="bk_ym != null" >
+        bk_ym,
+      </if>
+      <if test="companyId != null" >
+        companyid,
+      </if>
+      <if test="updaterId != null" >
+        updaterId,
+      </if>
+      <if test="updateTime != null" >
+        updateTime,
+      </if>
+      <if test="bk_text1 != null" >
+        bk_text1,
+      </if>
+      <if test="bk_text2 != null" >
+        bk_text2,
+      </if>
+      <if test="bk_text3 != null" >
+        bk_text3,
+      </if>
+      <if test="bk_text4 != null" >
+        bk_text4,
+      </if>
+      <if test="bk_text5 != null" >
+        bk_text5,
+      </if>
+      <if test="bk_remark != null" >
+        bk_remark,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
+      <if test="bk_bankcode != null" >
+        #{bk_bankcode,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_bankname != null" >
+        #{bk_bankname,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_date != null" >
+        #{bk_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="bk_type != null" >
+        #{bk_type,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_beginamount != null" >
+        #{bk_beginamount,jdbcType=DOUBLE},
+      </if>
+      <if test="bk_thisamount != null" >
+        #{bk_thisamount,jdbcType=DOUBLE},
+      </if>
+      <if test="bk_status != null" >
+        #{bk_status,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_statuscode != null" >
+        #{bk_statuscode,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_recorderid != null" >
+        #{bk_recorderid,jdbcType=INTEGER},
+      </if>
+      <if test="bk_recorder != null" >
+        #{bk_recorder,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_recorddate != null" >
+        #{bk_recorddate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="bk_ym != null" >
+        #{bk_ym,jdbcType=INTEGER},
+      </if>
+      <if test="companyId != null" >
+        #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="updaterId != null" >
+        #{updaterId,jdbcType=INTEGER},
+      </if>
+      <if test="updateTime != null" >
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="bk_text1 != null" >
+        #{bk_text1,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_text2 != null" >
+        #{bk_text2,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_text3 != null" >
+        #{bk_text3,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_text4 != null" >
+        #{bk_text4,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_text5 != null" >
+        #{bk_text5,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_remark != null" >
+        #{bk_remark,jdbcType=LONGVARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.money.po.Bankinformation" >
+    update bankinformation
+    <set >
+      <if test="bk_bankcode != null" >
+        bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_bankname != null" >
+        bk_bankname = #{bk_bankname,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_date != null" >
+        bk_date = #{bk_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="bk_type != null" >
+        bk_type = #{bk_type,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_beginamount != null" >
+        bk_beginamount = #{bk_beginamount,jdbcType=DOUBLE},
+      </if>
+      <if test="bk_thisamount != null" >
+        bk_thisamount = #{bk_thisamount,jdbcType=DOUBLE},
+      </if>
+      <if test="bk_status != null" >
+        bk_status = #{bk_status,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_statuscode != null" >
+        bk_statuscode = #{bk_statuscode,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_recorderid != null" >
+        bk_recorderid = #{bk_recorderid,jdbcType=INTEGER},
+      </if>
+      <if test="bk_recorder != null" >
+        bk_recorder = #{bk_recorder,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_recorddate != null" >
+        bk_recorddate = #{bk_recorddate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="bk_ym != null" >
+        bk_ym = #{bk_ym,jdbcType=INTEGER},
+      </if>
+      <if test="companyId != null" >
+        companyid = #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="updaterId != null" >
+        updaterId = #{updaterId,jdbcType=INTEGER},
+      </if>
+      <if test="updateTime != null" >
+        updateTime = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="bk_text1 != null" >
+        bk_text1 = #{bk_text1,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_text2 != null" >
+        bk_text2 = #{bk_text2,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_text3 != null" >
+        bk_text3 = #{bk_text3,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_text4 != null" >
+        bk_text4 = #{bk_text4,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_text5 != null" >
+        bk_text5 = #{bk_text5,jdbcType=VARCHAR},
+      </if>
+      <if test="bk_remark != null" >
+        bk_remark = #{bk_remark,jdbcType=LONGVARCHAR},
+      </if>
+    </set>
+    where bk_id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.usoftchina.saas.money.po.Bankinformation" >
+    update bankinformation
+    set bk_bankcode = #{bkBankcode,jdbcType=VARCHAR},
+      bk_bankname = #{bkBankname,jdbcType=VARCHAR},
+      bk_date = #{bkDate,jdbcType=TIMESTAMP},
+      bk_type = #{bkType,jdbcType=VARCHAR},
+      bk_beginamount = #{bkBeginamount,jdbcType=DOUBLE},
+      bk_thisamount = #{bkThisamount,jdbcType=DOUBLE},
+      bk_status = #{bkStatus,jdbcType=VARCHAR},
+      bk_statuscode = #{bkStatuscode,jdbcType=VARCHAR},
+      bk_recorderid = #{bkRecorderid,jdbcType=INTEGER},
+      bk_recorder = #{bkRecorder,jdbcType=VARCHAR},
+      bk_recorddate = #{bkRecorddate,jdbcType=TIMESTAMP},
+      bk_ym = #{bkYm,jdbcType=INTEGER},
+      companyid = #{companyId,jdbcType=INTEGER},
+      updaterId = #{updaterId,jdbcType=INTEGER},
+      updateTime = #{updateTime,jdbcType=TIMESTAMP},
+      bk_text1 = #{bkText1,jdbcType=VARCHAR},
+      bk_text2 = #{bkText2,jdbcType=VARCHAR},
+      bk_text3 = #{bkText3,jdbcType=VARCHAR},
+      bk_text4 = #{bkText4,jdbcType=VARCHAR},
+      bk_text5 = #{bkText5,jdbcType=VARCHAR},
+      bk_remark = #{bkRemark,jdbcType=LONGVARCHAR}
+    where bk_id = #{bkId,jdbcType=INTEGER}
+  </update>
+
+  <select id="selectAll" resultMap="BaseResultMap">
+    SELECT * FROM bankinformation
+  </select>
+
+  <select id="selectBankinformationBycondition" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List" />
+    from bankinformation
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and   bankinformation.companyId = #{companyId}
+      </if>
+    </where>  order by bk_id
+  </select>
+  <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
+        SELECT CONCAT(bk_bankcode,' ',bk_bankname) display,bk_bankname value FROM bankinformation WHERE COMPANYID=#{companyId}
+    </select>
+
+
+  <select id="selectBankcode" parameterType="java.lang.String" resultType="java.lang.String">
+        select bk_bankcode from bankinformation where bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR}
+    </select>
+
+  <update id="updateBankAmount" >
+    update bankinformation set bk_thisamount = #{bk_thisamount,jdbcType=DOUBLE}
+     where bk_id = #{id,jdbcType=INTEGER}
+  </update>
+
+  <select id="selectThisamount" parameterType="java.lang.Integer" resultType="java.lang.Double">
+  select bk_beginamount from bankinformation where bk_id = #{id,jdbcType=INTEGER}
+</select>
+</mapper>

+ 18 - 18
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java

@@ -14,7 +14,6 @@ import com.usoftchina.saas.commons.po.BillCodeSeq;
 import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
-import com.usoftchina.saas.document.api.EmployeeApi;
 import com.usoftchina.saas.document.api.WarehouseApi;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
@@ -55,9 +54,6 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     private ProdInOutListMapper prodInOutListMapper;
     @Autowired
     private WarehouseApi warehouseApi;
-    @Autowired
-    private EmployeeApi employeeApi;
-
     @Autowired
     private MaxnumberService maxnumberService;
 
@@ -139,8 +135,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         prodInOut.setPi_recordmanid(userId.intValue());
 //        prodInOut.setPi_recordman(emp.get("em_name").toString());
         prodInOut.setCreatorId(userId);
-        prodInOut.setCreateTime(new Date());
-        prodInOut.setPi_date(new Date());
+        prodInOut.setCreateTime(prodInOut.getPi_recorddate()==null?new Date():prodInOut.getPi_recorddate());
+        prodInOut.setPi_date(prodInOut.getPi_date()==null?new Date():prodInOut.getPi_date());
         prodInOut.setPi_puid(main.getPi_puid());
         prodInOut.setPi_pucode(main.getPi_pucode());
         baseDTO.setCode(pi_inoutno);
@@ -229,7 +225,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     }
 
     @Transactional(propagation = Propagation.REQUIRED)
-    private void singleDelete(Long id) {
+    public void singleDelete(Long id) {
 
             ProdInOut prodInOut = checkAndReturnOrder(id);;
             //删除主键
@@ -261,7 +257,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     }
 
     @Transactional(propagation = Propagation.REQUIRED)
-    private void singleAudit(ProdInOutDTO prodInOutDTO) {
+    public void singleAudit(ProdInOutDTO prodInOutDTO) {
         String pi_class= prodInOutDTO.getPi_class();
         String pi_inoutno = prodInOutDTO.getPi_inoutno();
         String pi_statuscode = prodInOutDTO.getPi_statuscode();
@@ -603,7 +599,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return pushMaxnubmer(base);
     }
 
-    public synchronized String pushMaxnubmer(DocBaseDTO baseDTO) {
+    public String pushMaxnubmer(DocBaseDTO baseDTO) {
         String pi_inoutno = baseDTO.getCode();
         String pi_class = baseDTO.getName();
         Long id = baseDTO.getId();
@@ -611,14 +607,18 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(pi_inoutno, companyId) :
-                getMapper().validateCodeWhenUpdate(pi_inoutno, id, companyId);
-        String caller ="";
-        if("采购验收单".equals(pi_class)){
-            caller = BillCodeSeq.PURCHASEIN.getCaller();
-        }else if("采购验退单".equals(pi_class)) {
-            caller = BillCodeSeq.PURCHASEOUT.getCaller();
-        }
-        return maxnumberService.pushMaxnubmer(count, pi_inoutno, caller).getData();
+        String billCode = null;
+        synchronized (ProdInOutServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(pi_inoutno, companyId) :
+                    getMapper().validateCodeWhenUpdate(pi_inoutno, id, companyId);
+            String caller ="";
+            if("采购验收单".equals(pi_class)){
+                caller = BillCodeSeq.PURCHASEIN.getCaller();
+            }else if("采购验退单".equals(pi_class)) {
+                caller = BillCodeSeq.PURCHASEOUT.getCaller();
+            }
+            billCode = maxnumberService.pushMaxnubmer(count, pi_inoutno, caller).getData();
+        }
+        return billCode;
     }
 }

+ 9 - 13
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -13,7 +13,6 @@ import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
-import com.usoftchina.saas.document.api.EmployeeApi;
 import com.usoftchina.saas.document.api.ProductApi;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
@@ -34,7 +33,6 @@ import org.springframework.util.StringUtils;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 
 /**
@@ -53,8 +51,6 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     @Autowired
     private ProductApi productApi;
     @Autowired
-    private EmployeeApi employeeApi;
-    @Autowired
     private MaxnumberService maxnumberService;
     @Autowired
     private ProdInOutMapper prodInOutMapper;
@@ -111,11 +107,6 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         Long companyId = BaseContextHolder.getCompanyId();
         //人员Id
         Long userId = BaseContextHolder.getUserId();
-
-
-        Map<String,Object> emp = employeeApi.getEmployeeByAccount();
-
-
         //获取主表信息
         PurchaseDTO main = formdata.getMain();
         List<PurchaseDetailDTO> items = formdata.getItems();
@@ -171,6 +162,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             PurchaseDetail detail = BeanMapper.map(item, PurchaseDetail.class);
             detail.setPd_puid(pu_id);
             detail.setPd_code(pu_code);
+            detail.setPd_delivery(item.getPd_delivery()==null?purchase.getPu_delivery():item.getPd_delivery());
             detail.setCompanyId(companyId);
             detail.setCreatorId(userId);
             detail.setCreateTime(new Date());
@@ -561,14 +553,18 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     * @Author: guq
     * @Date: 2018/10/19
     */
-    private synchronized String pushMaxnubmer(String code, Long id) {
+    private String pushMaxnubmer(String code, Long id) {
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? purchaseMapper.validateCodeWhenInsert(code, companyId) :
-                purchaseMapper.validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.PURCHASE.getCaller()).getData();
+        String billCode = null;
+        synchronized (PurchaseServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? purchaseMapper.validateCodeWhenInsert(code, companyId) :
+                    purchaseMapper.validateCodeWhenUpdate(code, id, companyId);
+            billCode = maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.PURCHASE.getCaller()).getData();
+        }
+        return billCode;
     }
     
     /** 

+ 6 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SaleProfitView.java

@@ -49,5 +49,11 @@ public class SaleProfitView {
 
     private Double pd_profit;
 
+    private Double pd_price;
+
+    private Double pd_netprice;
+
+    private String pd_remark;
+
     private Double pd_profitpresent;
 }

+ 13 - 9
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java

@@ -562,22 +562,26 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
      * @Author: guq
      * @Date: 2018/10/19
      */
-    private synchronized String pushMaxnubmer(DocBaseDTO baseDTO) {
+    private String pushMaxnubmer(DocBaseDTO baseDTO) {
         String code = baseDTO.getCode();
         Long id = baseDTO.getId();
         String pi_class = baseDTO.getName();
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
-        Integer count = "0".equals(String.valueOf(id)) ? prodInOutMapper.validateCodeWhenInsert(code,pi_class) :
-                prodInOutMapper.validateCodeWhenUpdate(code, id);
-        String caller ="";
-        if(pi_class.equals("出货单")){
-            caller = BillCodeSeq.SALEOUT.getCaller();
-        }else {//销售退货单
-            caller = BillCodeSeq.SALEIN.getCaller();
+        String billCode = null;
+        synchronized (ProdInOutServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? prodInOutMapper.validateCodeWhenInsert(code,pi_class) :
+                    prodInOutMapper.validateCodeWhenUpdate(code, id);
+            String caller ="";
+            if(pi_class.equals("出货单")){
+                caller = BillCodeSeq.SALEOUT.getCaller();
+            }else {//销售退货单
+                caller = BillCodeSeq.SALEIN.getCaller();
+            }
+            billCode = maxnumberService.pushMaxnubmer(count, code, caller).getData();
         }
-        return maxnumberService.pushMaxnubmer(count, code, caller).getData();
+        return billCode;
     }
 
     @Override

+ 8 - 4
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java

@@ -557,14 +557,18 @@ public class SaleServiceImpl implements SaleService{
      * @Author: guq
      * @Date: 2018/10/19
      */
-    private synchronized String pushMaxnubmer(String code, Long id) {
+    private String pushMaxnubmer(String code, Long id) {
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? saleMapper.validateCodeWhenInsert(code, companyId) :
-                saleMapper.validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.SALE.getCaller()).getData();
+        String billCode = null;
+        synchronized(SaleServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? saleMapper.validateCodeWhenInsert(code, companyId) :
+                    saleMapper.validateCodeWhenUpdate(code, id, companyId);
+            billCode = maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.SALE.getCaller()).getData();
+        }
+        return billCode;
     }
 
     /**

+ 3 - 0
applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml

@@ -20,8 +20,11 @@
     <result column="pd_ordertotal" property="pd_ordertotal" jdbcType="DOUBLE" />
     <result column="pd_total" property="pd_total" jdbcType="DOUBLE" />
     <result column="pd_profit" property="pd_profit" jdbcType="DOUBLE" />
+    <result column="pd_price" property="pd_price" jdbcType="DOUBLE" />
+    <result column="pd_netprice" property="pd_netprice" jdbcType="DOUBLE" />
     <result column="pd_profitpresent" property="pd_profitpresent" jdbcType="DOUBLE" />
     <result column="companyid" property="companyid" jdbcType="INTEGER" />
+      <result column="pd_remark" property="pd_remark" jdbcType="VARCHAR" />
   </resultMap>
   <select id="selectByCondition" resultMap="BaseResultMap">
     select  *  from Sale_Profit_View

+ 26 - 0
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/controller/MakeController.java

@@ -40,6 +40,32 @@ public class MakeController {
         return Result.success(docBaseDTO);
     }
 
+    /**
+     * 制造单批量审核
+     *
+     * @param baseDTOs
+     * @return
+     */
+    @PostMapping("/batchAudit")
+    public Result batchAudit(@RequestBody BatchDealBaseDTO baseDTOs) {
+        String res = makeService.batchAudit(baseDTOs);
+        return Result.success(res);
+    }
+
+    /**
+     * 制造单批量反审核
+     *
+     * @param baseDTOs
+     * @return
+     */
+    @PostMapping("/batchUnAudit")
+    public Result batchUnAudit(@RequestBody BatchDealBaseDTO baseDTOs) {
+        String res = makeService.batchUnAudit(baseDTOs);
+        return Result.success(res);
+    }
+
+
+
     @PostMapping("/save")
     public Result save(@RequestBody MakeListDTO makeListDTO){
         DocBaseDTO docBaseDTO = makeService.saveOrUpdate(makeListDTO);

+ 4 - 2
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/MakeService.java

@@ -11,8 +11,6 @@ import com.usoftchina.saas.storage.dto.MakeListDTO;
 import com.usoftchina.saas.storage.mapper.MakeMapper;
 import com.usoftchina.saas.storage.po.Make;
 
-import java.util.List;
-
 public interface MakeService extends CommonBaseService<MakeMapper, Make> {
 
     /**
@@ -100,4 +98,8 @@ public interface MakeService extends CommonBaseService<MakeMapper, Make> {
      * @return
      */
     boolean batchDelete(BatchDealBaseDTO batchDealBaseDTO);
+
+    String batchAudit(BatchDealBaseDTO baseDTOs);
+
+    String batchUnAudit(BatchDealBaseDTO baseDTOs);
 }

+ 71 - 9
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/MakeServiceImpl.java

@@ -27,6 +27,7 @@ import com.usoftchina.saas.storage.po.ProdInOut;
 import com.usoftchina.saas.storage.service.MakeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
@@ -246,21 +247,29 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public DocBaseDTO audit(MakeListDTO makeListDTO) {
-        //1.获取主从表数据
+        Long id = makeListDTO.getMain().getId();
+        DocBaseDTO baseDTO = new DocBaseDTO();
         Make make = makeListDTO.getMain();
-        List<MakeMaterial> items = makeListDTO.getItems();
         //如果ID为0,先执行保存
-        if (makeListDTO.getMain().getId() == 0){
+        if (make.getId() == 0 || StringUtils.isEmpty(id)){
             DocBaseDTO docBaseDTO = saveOrUpdate(makeListDTO);
             make.setId(docBaseDTO.getId());
         }
+        //审核
+        singleAudit(makeListDTO);
+        baseDTO = generateMsgObj(make.getId(), make.getMa_code());
+        return baseDTO;
+    }
+
+    @Transactional(propagation = Propagation.REQUIRED)
+    public void singleAudit(MakeListDTO makeListDTO) {
+        //1.获取主从表数据
+        Make make = makeListDTO.getMain();
         //2.校验库存是否足够
         validStorage(makeListDTO);
         //3.生成  完工入库单和领料单 并 过账
         generateProdIO(makeListDTO);
-
         //4.修改单据状态
         Make updateMake = new Make();
         updateMake.setId(make.getId());
@@ -274,9 +283,33 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
         DocBaseDTO docBaseDTO = generateMsgObj(make.getId(), make.getMa_code());
         //5.记录LOG
         messageLogService.audit(docBaseDTO);
-        return docBaseDTO;
     }
 
+
+    @Override
+    public String batchAudit(BatchDealBaseDTO baseDTOs) {
+        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
+                baseDTOs.getBaseDTOs().size() == 0) {
+            return "没有可审核单据。";
+        }
+        StringBuffer errorMsg = new StringBuffer();
+        for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
+            try {
+                Long id =  base.getId();
+                Make make = getMapper().selectByPrimaryKey(id);
+                List<MakeMaterial> makeMaterials = makeMaterialMapper.selectByFK(id,BaseContextHolder.getCompanyId());
+                MakeListDTO makeListDTO = new MakeListDTO();
+                makeListDTO.setMain(make);
+                makeListDTO.setItems(makeMaterials);
+                singleAudit(makeListDTO);
+            } catch (Exception e){
+                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+            }
+        }
+        return errorMsg.toString();
+    }
+
+
     /**
      * 1.生成  完工入库单和生产领料单
      * 2.过账
@@ -543,6 +576,9 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
         return docBaseDTO;
     }
 
+
+
+
     @Override
     public String batchClose(BatchDealBaseDTO batchDealBaseDTO) {
         StringBuilder errorMsg = new StringBuilder();
@@ -581,6 +617,28 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
         return true;
     }
 
+
+
+    @Override
+    public String batchUnAudit(BatchDealBaseDTO baseDTOs) {
+        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
+                baseDTOs.getBaseDTOs().size() == 0) {
+            return "无可反审核单据。";
+        }
+        StringBuffer errorMsg = new StringBuffer();
+        for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
+            try {
+                Long id =  base.getId();
+
+//                ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
+//                singleUnAudit(prodInOutDTO);
+            }catch (Exception e) {
+                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+            }
+        }
+        return errorMsg.toString();
+    }
+
     /**
      * 1.查找制造单关联的出入库单据
      * 2.反过账
@@ -654,8 +712,12 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(code, companyId) :
-                getMapper().validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.MAKE.getCaller()).getData();
+        String ma_code = null;
+        synchronized (MakeServiceImpl.class){
+            Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(code, companyId) :
+                    getMapper().validateCodeWhenUpdate(code, id, companyId);
+            ma_code =  maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.MAKE.getCaller()).getData();
+        }
+        return ma_code;
     }
 }

+ 17 - 13
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutServiceImpl.java

@@ -126,8 +126,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         ProdInOut prodInOut = BeanMapper.map(main,ProdInOut.class);
         prodInOut.setCompanyId(companyId);
         prodInOut.setCreatorId(userId);
-        prodInOut.setCreateTime(new Date());
-        prodInOut.setPi_date(new Date());
+        prodInOut.setCreateTime(prodInOut.getPi_recorddate()==null?new Date():prodInOut.getPi_recorddate());
+        prodInOut.setPi_date(prodInOut.getPi_date()==null?new Date():prodInOut.getPi_date());
         prodInOut.setPi_puid(main.getPi_puid());
         prodInOut.setPi_pucode(main.getPi_pucode());
         //编号获取
@@ -441,7 +441,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return baseDTO;
     }
 
-    private String pushMaxnubmer(ProdInOut prodInOut) {
+    private  String pushMaxnubmer(ProdInOut prodInOut) {
         String pi_inoutno = prodInOut.getPi_inoutno();
         String pi_class = prodInOut.getPi_class();
         Long id = prodInOut.getId();
@@ -449,17 +449,21 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(pi_inoutno, companyId) :
-                getMapper().validateCodeWhenUpdate(pi_inoutno, id, companyId);
-        String caller ="";
-        if("其它入库单".equals(pi_class)){
-            caller = BillCodeSeq.OTHERIN.getCaller();
-        }else if("其它出库单".equals(pi_class)) {
-            caller = BillCodeSeq.OTHEROUT.getCaller();
-        }else if("调拨单".equals(pi_class)) {
-            caller = BillCodeSeq.APPROPRIATIONINOUT.getCaller();
+        String code = null;
+        synchronized (ProdInOutServiceImpl.class){
+            Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(pi_inoutno, companyId) :
+                    getMapper().validateCodeWhenUpdate(pi_inoutno, id, companyId);
+            String caller ="";
+            if("其它入库单".equals(pi_class)){
+                caller = BillCodeSeq.OTHERIN.getCaller();
+            }else if("其它出库单".equals(pi_class)) {
+                caller = BillCodeSeq.OTHEROUT.getCaller();
+            }else if("调拨单".equals(pi_class)) {
+                caller = BillCodeSeq.APPROPRIATIONINOUT.getCaller();
+            }
+            code = maxnumberService.pushMaxnubmer(count, pi_inoutno, caller).getData();
         }
-        return maxnumberService.pushMaxnubmer(count, pi_inoutno, caller).getData();
+        return code;
     }
 
 

+ 182 - 45
frontend/saas-portal-web/src/css/main.css

@@ -96,8 +96,19 @@ main > section {
     z-index: 5;
 }
 /* 登录弹窗 */
-input {
+/* input {
     outline: none;
+} */
+.tishi {
+    font-size: 12px;
+    color: #FF6A1A;
+    position: absolute;
+    left: 42px;
+    margin-top: -3px;
+}
+.tishi img {
+    margin-top: -4px;
+    margin-right: 10px;
 }
 .box,.box-zc{
     display:none;
@@ -291,11 +302,11 @@ input {
 /* 首页内容 ..........................................*/
 .my-text {
     position: absolute;
-    top: 200px;
-    left: 136px;
+    top: 448px;
+    left: 100px;
     /* z-index: 5; */
-    width: 468px;
-    height: 300px;
+    /* width: 468px;
+    height: 300px; */
 }
 .sy-dianzi {
     width: 100%;
@@ -335,9 +346,55 @@ input {
     right: 130px;
 }
 /* 特色 .......................................*/
+.ts-worp {
+    width: 100%;
+    padding: 0;
+    margin: 0;
+}
 .ts-box {
     overflow: hidden;
     margin-top: 50px;
+    position: relative;
+}
+.ts-minimg {
+    width: 773px;
+    height: 615px;
+    position: absolute;
+    top: -35px;
+    right: 0;
+}
+.ts-mintext {
+    position: absolute;
+    top: 142px;
+    right: 380px;
+    color: white;
+}
+.ts-mintext p {
+    font-size: 26px!important;
+    text-align: left;
+    margin-bottom: 24px;
+}
+.ts-textimg {
+    width: 40px;
+    margin-left: -40px;
+}
+.ts-lefttext {
+    left: 300px;
+    width: 280px;
+}
+.ts-textleftimg {
+    width: 40px;
+    margin-right: -40px;
+}
+.ts-lefttext p {
+    text-align: right;
+}
+.ts-title {
+    font-family: PingFangSC-Regular !important;
+    color: #0D253E !important;
+    font-size: 24px !important;
+    margin-bottom: 14px;
+    font-weight: 600;
 }
 .left {
     float: left;
@@ -346,7 +403,8 @@ input {
     float: right;
 }
 .ts-img {
-    width: 500px;
+    width: 108%;
+    height: 441px;
 }
 .right-text {
     text-align: right;
@@ -354,54 +412,145 @@ input {
 .left-text {
     text-align: left;
 }
+.ts-text {
+    font-family: PingFangSC-Regular !important;
+    color: #9EA8B2 !important;
+}
 
 /* 功能 .........................................*/
-.gn-img {
+.gn-beijing {
     width: 100%;
+    position: absolute;
+    top: 242px;
+}
+.gn-img {
+    width: 100px;
+    height: 100px;
+    border-radius: 50%;
+    background: #1E88F5;
+    text-align: center;
+    line-height: 100px;
+    margin: 0 auto;
+    position: relative;
+    margin-top: 12px;
+}
+.gn-img img {
+    width: 50%;
+}
+.gn-huise {
+    background: #F4F8FC;
+}
+.gn-xiaoqiu {
+    width: 30px;
+    height: 30px;
+    border-radius: 50%;
+    background: #FFCC01;
+    box-shadow: 0 0 15px 0 rgba(255,204,1,0.40);
+    position: absolute;
+    top: 0;
+    right: 0;
+}
+.gn-left {
+    left: 0;
 }
 .gn-hei>div {
     height: 240px;
 }
-
+.service-item {
+    margin-bottom: 60px;
+    padding:0 14px;
+    text-align: center;
+}
+.gn-text {
+    font-family: PingFangSC-Regular;
+    font-size: 18px;
+    color: #0D253E;
+    font-weight: 600;
+    margin-top: 12px;
+}
+.gn-color {
+    color: #1E88F5;
+}
 /* 帮助 ........................................*/
-.bz-box {
+.bz-worp {
+    background: white;
     width: 80%;
     margin: 0 auto;
+    padding: 40px;
+}
+.bz-box {
+    border: 1px solid #1E88F5;
+    border-radius: 5px;
+    border-right: 0;
+}
+.bz-sskuang {
+    width: 90%;
+    float: left;
+    line-height: 38px;
 }
 .bz-sousuo {
-    width: 80%;
+    width: 94%;
     margin: 0 -5px;
+    border: 0;
+    outline: none;
+}
+.bz-sousuoimg {
+    margin: -3px 10px 0 14px;
+}
+.bz-btn {
+    background: #1E88F5;
+    border-radius: 0 5px 5px 0;
+    width: 10%;
+    border: 0;
+    color: white;
+    height: 40px;
 }
 .bz-content {
     margin-top: 30px;
-    
+    border: 0;
 }
 .bz-left {
-    width: 10%;
-}
-.bz-left button {
     width: 100%;
-    background: white;
-    border: 0;
-    height: 30px;
+    overflow: hidden;
 }
-.actvin {
-    background: #444 !important;
-    color: white;
+.bz-ul {
+    border-bottom: 1px solid #D8D8D8;
+    overflow: hidden; 
+    margin-left: -40px;
+}
+.bz-left li {
+    float: left;
+    width: 50%;
+    list-style: none;
+    text-align: center;
+    height: 40px;
+    cursor:pointer;
+}
+.active {
+    border-bottom: 5px solid #FFCC01;
 }
 .bz-right {
-    width: 90%;
+    width: 100%;
     background: white;
-    height: 500px;
+}
+.bz-yuandian {
+    background: #FFCC01;
+    width: 16px;
+    height: 16px;
+    border-radius: 50%;
+    margin: 4px 8px 0 0;
 }
 .bz-right-conent div {
     display: none;
 }
 .bz-right-conent li {
-    margin-bottom: 20px;
+    margin-bottom: 14px;
+    list-style: none;
+    overflow: hidden;
+    margin-left: -40px;
 }
 .bz-right-conent {
-    margin: 30px;
+    /* margin: 30px; */
 }
 /* 底部 ...................................*/
 /*footer*/
@@ -409,9 +558,13 @@ input {
     width: 100%;
     background: #383838;
 }
+.db-text {
+    background: white;
+    color: #000;
+}
 .footer .container{
     margin: 0 auto;
-    width: 1200px;
+    width: 80%;
     height: 445px;
     overflow: hidden;
     text-align: center;
@@ -472,7 +625,7 @@ input {
     color: #fff;
 }
 .footer-section .qr{
-    width: 220px;
+    width: 110px;
     overflow: hidden;
     text-align: right;
 }
@@ -821,7 +974,7 @@ h1.navbar-brand {
     line-height: 1.5;
 }
 .slider-1 {
-    background-image: url(../img/assets/beijing.png);
+    background-image: url(../img/assets/beijing2x.png);
 }
 .sl-slider-wrapper {
     width: 100%;
@@ -1109,27 +1262,11 @@ h1.navbar-brand {
          -o-transition: all 0.3s ease 0s;
             transition: all 0.3s ease 0s;
 }
-.service-item {
-    margin-bottom: 60px;
-    padding:0 14px;
-}
 .service-icon i {
     font-size: 60px;
     color: #0aa6bd;
 }
 
-.service-item h3 {
-    font-size: 13px;
-    font-weight: 600;
-    margin-top: 10px;
-    margin-bottom: 20px;
-    color: #3c3d41;
-    text-transform: uppercase;
-}
-.service-item p {
-    color: #7e848e;
-    font-weight: 200;
-}
 
 
 
@@ -1886,9 +2023,9 @@ textarea.form-control {
         margin-bottom: 50px;
     }
 
-    .service-item {
+    /* .service-item {
         margin-bottom: 50px;
-    }
+    } */
 /* testimonial */
     .testimonial-item {
         width: 100%;

BIN
frontend/saas-portal-web/src/img/assets/1.png


BIN
frontend/saas-portal-web/src/img/assets/2.png


BIN
frontend/saas-portal-web/src/img/assets/beijing2x.png


BIN
frontend/saas-portal-web/src/img/assets/fen xi@2x.png


BIN
frontend/saas-portal-web/src/img/assets/kuaisu@2x.png


BIN
frontend/saas-portal-web/src/img/assets/sou.png


BIN
frontend/saas-portal-web/src/img/assets/tishi1x.png


BIN
frontend/saas-portal-web/src/img/assets/xunzhao@2x.png


BIN
frontend/saas-portal-web/src/img/gongneng/ xiao shou 3@3x.png


BIN
frontend/saas-portal-web/src/img/gongneng/FEN XI 8@3x.png


BIN
frontend/saas-portal-web/src/img/gongneng/QIAN BAO 7@3x.png


BIN
frontend/saas-portal-web/src/img/gongneng/cai gou 4@3x.png


BIN
frontend/saas-portal-web/src/img/gongneng/cang ku 5@3x.png


BIN
frontend/saas-portal-web/src/img/gongneng/jia gong 6@3x.png


BIN
frontend/saas-portal-web/src/img/gongneng/ren wu 1@3x.png


BIN
frontend/saas-portal-web/src/img/gongneng/xu xian@3x.png


BIN
frontend/saas-portal-web/src/img/gongneng/zi yuan 2@3x.png


+ 251 - 197
frontend/saas-portal-web/src/index.html

@@ -111,14 +111,16 @@
 						<div class="tc-phone">
 							<div class="tc-phonebox">
 								<span><img src="./img/assets/phone.png"></span>
-								<input type="text" class="tc-phonecon" placeholder="请输入您的手机号" name="phone" id="phone">
+								<input type="text" class="tc-phonecon" placeholder="请输入您的手机号" name="zc-phone" id="zc-phone">
 							</div>
+							<span class="tishi zc-phone"></span>
 						</div>
 						<div class="tc-over">
 							<div class="tc-phone left" style="margin: 0 0 16px 0;">
 								<div class="tc-phonebox">
-									<input type="text" class="tc-yanzhengma tc-shibiema" name="" id="">
+									<input type="text" class="tc-yanzhengma tc-shibiema" name="zc-tuxingma" id="zc-tuxingma">
 								</div>
+								<span class="tishi"><img src="./img/assets/tishi1x.png"/>验证错误</span>
 							</div>
 							<div class="left"><img class="tc-yanzhengimg" src="./img/assets/timg.jpg" alt=""></div>
 							<div class="right" style="line-height: 40px;"><img src="./img/assets/shuaxin.png" alt=""></div>
@@ -126,9 +128,10 @@
 						<div style="width: 100%;">
 							<div class="tc-phone left" style="margin: 0 0 16px 0;">
 								<div class="tc-phonebox">
-										<span><img src="./img/assets/yanzhengma.png"></span>
-										<input type="text" class="tc-yanzhengma" placeholder="请输入验证码" name="" id="">
+									<span><img src="./img/assets/yanzhengma.png"></span>
+									<input type="text" class="tc-yanzhengma" placeholder="请输入验证码" name="zc-yanzhengma" id="zc-yanzhengma">
 								</div>
+								<span class="tishi"><img src="./img/assets/tishi1x.png"/>验证错误</span>
 							</div>
 							<button class="tc-huoqu right">获取验证码</button>
 						</div>
@@ -161,17 +164,19 @@
 						<div class="tc-phone">
 							<div class="tc-phonebox">
 								<span><img src="./img/assets/phone.png"></span>
-								<input type="text" class="tc-phonecon" placeholder="手机号/优软云账号" name="phone" id="phone">
+								<input type="text" class="tc-phonecon" placeholder="手机号/优软云账号" name="zh-phone" id="zh-phone">
 							</div>
+							<span class="tishi zh-phone"></span>
 						</div>
 						<div class="tc-phone">
 							<div class="tc-phonebox">
 								<span><img src="./img/assets/password.png"></span>
-								<input type="password" class="tc-phonepwd" placeholder="请输入您的密码" name="pwd" id="pwd">
+								<input type="password" class="tc-phonepwd" placeholder="请输入您的密码" name="pwd" id="zh-pwd">
 							</div>
+							<span class="tishi"><img src="./img/assets/tishi1x.png"/>验证错误</span>
 						</div>
 						<div>
-							<button class="tc-login-pwd" id="login-pwd">登录</button>
+							<button class="tc-login-pwd" id="zh-login">登录</button>
 						</div>
 					</form>
 					<div class="tc-over" id="qiehuan">
@@ -204,20 +209,22 @@
 						<div class="tc-phone">
 							<div class="tc-phonebox">
 								<span><img src="./img/assets/phone.png"></span>
-								<input type="text" class="tc-phonecon" placeholder="请输入您的手机号" name="phone" id="phone">
+								<input type="text" class="tc-phonecon" placeholder="请输入您的手机号" name="dx-phone" id="dx-phone">
 							</div>
+							<span class="tishi dx-phone"></span>
 						</div>
 						<div style="width: 100%;">
 							<div class="tc-phone left" style="margin: 0 0 16px 0;">
 								<div class="tc-phonebox">
-										<span><img src="./img/assets/yanzhengma.png"></span>
-										<input type="text" class="tc-yanzhengma" placeholder="请输入验证码" name="" id="">
+									<span><img src="./img/assets/yanzhengma.png"></span>
+									<input type="text" class="tc-yanzhengma" placeholder="请输入验证码" name="dx-yanzhengma" id="dx-yanzhengma">
 								</div>
+								<span class="tishi"><img src="./img/assets/tishi1x.png"/>验证错误</span>
 							</div>
 							<button class="tc-huoqu right">获取验证码</button>
 						</div>
 						<div>
-							<button class="tc-login-pwd" id="login-pwd">登录</button>
+							<button class="tc-login-pwd" id="dx-login">登录</button>
 						</div>
 					</form>
 					<div class="tc-over" id="qiehuan">
@@ -252,7 +259,7 @@
 						</div>
 						<!-- 首页内容 -->
 						<div class="my-text">
-							<img class="sy-dianzi sy-mb" src="./img/assets/dianzi3x.png" alt="">
+							<!-- <img class="sy-dianzi sy-mb" src="./img/assets/dianzi3x.png" alt="">
 							<div class="sy-mb">
 								<img src="./img/assets/xun3x.png" alt="">
 								<img class='sy-mbimg2' src="./img/assets/jin3x.png" alt="">
@@ -264,10 +271,10 @@
 							<div class="sy-mb">
 								<img src="./img/assets/Group3x.png" alt="">
 								<img src="./img/assets/qing3x.png" alt="">
-							</div>
+							</div> -->
 							<button class='my-tiyan'>立即体验</button> 
 						</div>
-						<div class="sy-img"><img class="chrw" src="./img/assets/chatu.png" alt=""></div>
+						<!-- <div class="sy-img"><img class="chrw" src="./img/assets/chatu.png" alt=""></div> -->
 						<div class="slide-caption">
                         	<div class="caption-content"></div>
                     	</div>
@@ -280,116 +287,143 @@
 			
 			<!-- 特色 -->
 			<section id="feature">
-				<div class="container">
-					<div class="row">
+				<div class="container ts-worp">
 						<div class="section-title text-center">
-							<h2>特色</h2>
-							<p>云端连接 简单易用</p>
+							<p class="ts-title">我们的特色</p>
+							<p class="ts-text">云端部署 &nbsp;&nbsp; 轻量应用</p>
 						</div>
 						<div class="ts-box">
-							<div class="left col-md-8">
+							<div class="left" style="margin:50px 0;">
 								<img  class="ts-img" src="img/features.jpg" alt="">
 							</div>
-							<div class="right right-text col-md-4">
-								<p>迅速找到您想要的</p>
-								<p>寻找供应商资源</p>
-								<p>寻找产品资料 货源</p>
+							<div class="right right-text">
+								<img class="ts-minimg" src="./img/assets/1.png" alt="">
+								<div class="ts-mintext">
+									<p><img class="ts-textimg" src="./img/assets/xunzhao@2x.png" alt="">迅速找到您想要的</p>
+									<p>寻找供应商资源</p>
+									<p>寻找产品资料 货源</p>
+								</div>
 							</div>
 						</div>
 						<div class="ts-box">
-							<div class="left left-text col-md-4">
-								<p>直观看到您想看的</p>
-								<p>月度销售额 采购额</p>
-								<p>经营指标实时看</p>
+							<div class="left left-text">
+								<img class="ts-minimg" style="left:0;" src="./img/assets/2.png" alt="">
+								<div class="ts-mintext ts-lefttext">
+									<p>直观看到您想看的<img class="ts-textleftimg" src="./img/assets/fen xi@2x.png" alt=""></p>
+									<p>月度销售额 采购额</p>
+									<p>经营指标实时看</p>
+								</div>
 							</div>
-							<div class="right">
+							<div style="margin:50px 0;">
 								<img  class="ts-img" src="img/features.jpg" alt="">
 							</div>
 						</div>
 						<div class="ts-box">
-							<div class="left col-md-8">
+							<div class="left" style="margin:50px 0;">
 								<img  class="ts-img" src="img/features.jpg" alt="">
 							</div>
-							<div class="right right-text col-md-4">
-								<p>快速上手 生意简单做</p>
-								<p>移动端的体验</p>
-								<p>简单的业务线 让您三分钟上手</p>
+							<div class="right right-text">
+								<img class="ts-minimg" src="./img/assets/1.png" alt="">
+								<div class="ts-mintext" style="right: 250px;">
+									<p><img class="ts-textimg" src="./img/assets/kuaisu@2x.png" alt="">快速上手 生意简单做</p>
+									<p>移动端的体验</p>
+									<p>简单的业务线 让您三分钟上手</p>
+								</div>
 							</div>
 						</div>
-					</div>
 				</div>
 			</section>
 
 			<!-- Service section 功能-->
 			<section id="service">
-				<div class="container">
+				<div class="container" style="position: relative;">
+					<img class="gn-beijing" src="./img/gongneng/xu xian@3x.png" alt="">
 					<div class="row">
 						<div class="section-title text-center">
-							<h2>功能</h2>
+							<p class="ts-title">我们的功能</p>
 						</div>
 						<div class="gn-hei">
 							<div class="col-md-3 col-sm-6 col-xs-12">
 								<div class="service-item">
-									<div>
-										<img class="gn-img" src="img/features.jpg" alt="">
+									<p class="gn-text gn-color">任务管理</p>
+									<p>任务分配,高效工作</p>
+									<p>管好每一件事</p>
+									<div class="gn-img">
+										<img src="./img/gongneng/ren wu 1@3x.png" alt="">
 									</div>
-									<p>任务分配,高效工作,管好每一件事</p>
 								</div>
 							</div>
 							<div class="col-md-3 col-sm-6 col-xs-12">
 								<div class="service-item">
-									<div>
-										<img class="gn-img" src="img/features.jpg" alt="">
+									<p class="gn-text">资源管理</p>
+									<p>一键查询,海量供应商产品信息</p>
+									<p>节约时间</p>
+									<div class="gn-img gn-huise">
+										<img src="./img/gongneng/zi yuan 2@3x.png" alt="">
 									</div>
-									<p>一键查询,海量供应商产品信息,节约时间</p>
 								</div>
 							</div>
 							<div class="col-md-3 col-sm-6 col-xs-12">
 								<div class="service-item">
-									<div>
-										<img class="gn-img" src="img/features.jpg" alt="">
+									<p class="gn-text">销售管理</p>
+									<p>快速制单</p>
+									<p>利润实时算</p>
+									<div class="gn-img">
+										<img src="./img/gongneng/ xiao shou 3@3x.png" alt="">
+										<div class="gn-xiaoqiu"></div>
 									</div>
-									<p>快速制单,利润实时算</p>
 								</div>
 							</div>
 							<div class="col-md-3 col-sm-6 col-xs-12">
 								<div class="service-item">
-									<div>
-										<img class="gn-img" src="img/features.jpg" alt="">
+									<p class="gn-text">采购管理</p>
+									<p>寻源.定价.采购</p>
+									<p>一条流程</p>
+									<div class="gn-img gn-huise">
+										<img src="./img/gongneng/cai gou 4@3x.png" alt="">
 									</div>
-									<p>寻源,定价,采购,一条流程</p>
 								</div>
 							</div>
 							<div class="col-md-3 col-sm-6 col-xs-12">
 								<div class="service-item">
-									<div>
-										<img class="gn-img" src="img/features.jpg" alt="">
+									<div class="gn-img gn-huise">
+										<img src="./img/gongneng/cang ku 5@3x.png" alt="">
+										<div class="gn-xiaoqiu"></div>
 									</div>
-									<p>库存盘点,库存账龄,呆滞分析</p>
+									<p class="gn-text">仓库管理</p>
+									<p>库存盘点,库存账龄</p>
+									<p>呆滞分析</p>
 								</div>
 							</div>
 							<div class="col-md-3 col-sm-6 col-xs-12">
 								<div class="service-item">
-									<div>
-										<img class="gn-img" src="img/features.jpg" alt="">
+									<div class="gn-img">
+										<img src="./img/gongneng/jia gong 6@3x.png" alt="">
 									</div>
-									<p>BOM成本及时看,加工单自动出入库作业</p>
+									<p class="gn-text">加工管理</p>
+									<p>BOM成本及时看</p>
+									<p>加工单自动出入库作业</p>
 								</div>
 							</div>
 							<div class="col-md-3 col-sm-6 col-xs-12">
 								<div class="service-item">
-									<div>
-										<img class="gn-img" src="img/features.jpg" alt="">
+									<div class="gn-img gn-huise">
+										<img src="./img/gongneng/QIAN BAO 7@3x.png" alt="">
 									</div>
-									<p>清晰核算,实时查看供应商和客户账款情况</p>
+									<p class="gn-text">资金管理</p>
+									<p>清晰核算</p>
+									<p>实时查看供应商和客户账款情况</p>
 								</div>
 							</div>
 							<div class="col-md-3 col-sm-6 col-xs-12">
 								<div class="service-item">
-									<div>
-										<img class="gn-img" src="img/features.jpg" alt="">
+									<div class="gn-img">
+										<img src="./img/gongneng/FEN XI 8@3x.png" alt="">
+										<div class="gn-xiaoqiu gn-left"></div>
 									</div>
-									<p>直观数据看板,看库存分析,收款分析,付款分析</p>
+									<p class="gn-text gn-color">智能分析</p>
+									<p>直观数据看板,看库存分析</p>
+									<p>收款分析,付款分析</p>
 								</div>
 							</div>
 						</div>
@@ -403,42 +437,63 @@
 				<div class="container">
 					<div class="row">
 						<div class="section-title text-center">
-							<h2>帮助中心</h2>
-						</div>
-						<div class="bz-box">
-							<select style="margin-top: -1px;height:30px;width: 10%">
-								<option value ="volvo">操作文档</option>
-								<option value ="saab">常见问题</option>
-							</select>
-							<input class="bz-sousuo" type="text" placeholder="输入标题搜索"/>
-							<button style="width:10%">搜索</button>
+							<p class="ts-title">帮助中心</p>
 						</div>
-						<div class="bz-box bz-content">
-							<div class="left bz-left">
-								<button class="actvin">操作文档</button>
-								<button>常见问题</button>
+						<div class="bz-worp">
+							<div class="bz-box">
+								<div class="bz-sskuang">
+									<span><img class="bz-sousuoimg" src="./img/assets/sou.png" alt=""></span>
+									<input class="bz-sousuo" type="text" placeholder="输入标题搜索"/>
+								</div>
+								<button class="bz-btn">搜索</button>
 							</div>
-							<div class="right bz-right">
-								<div class="bz-right-conent">
-									<div>
-										<ul>
-											<li>XXXXXXXXXXXXXXX操作文档</li>
-											<li>XXXXXXXXXXXXXXX操作文档</li>
-											<li>XXXXXXXXXXXXXXX操作文档</li>
-											<li>XXXXXXXXXXXXXXX操作文档</li>
-											<li>XXXXXXXXXXXXXXX操作文档</li>
-											<li>XXXXXXXXXXXXXXX操作文档</li>
-										</ul>
-									</div>
-									<div>
-										<ul>
-											<li>XXXXXXXXXXXXXXX常见问题</li>
-											<li>XXXXXXXXXXXXXXX常见问题</li>
-											<li>XXXXXXXXXXXXXXX常见问题</li>
-											<li>XXXXXXXXXXXXXXX常见问题</li>
-											<li>XXXXXXXXXXXXXXX常见问题</li>
-											<li>XXXXXXXXXXXXXXX常见问题</li>
-										</ul>
+							<div class="bz-content">
+								<div class="bz-left">
+									<ul class="bz-ul">
+										<li class='active'>操作文档</li>
+										<li>常见问题</li>
+									</ul>
+								</div>
+								<div class="bz-right">
+									<div class="bz-right-conent">
+										<div>
+											<ul>
+												<li>
+													<span class="left bz-yuandian"></span>
+													<span class="left">方式不同吧好像是差不多哇来访黑哇哦发检测句ID回复开展了好xxxxx操作文档 </span>
+													<span class="right">2018年10月31日  12:00</span>
+												</li>
+												<li>
+													<span class="left bz-yuandian"></span>
+													<span class="left">XXXXXXXXXXXXXXX操作文档</span>
+													<span class="right">2018年10月31日  12:00</span>
+												</li>
+												<li>
+													<span class="left bz-yuandian"></span>
+													<span class="left">XXXXXXXXXXXXXXX操作文档</span>
+													<span class="right">2018年10月31日  12:00</span>
+												</li>
+											</ul>
+										</div>
+										<div>
+											<ul>
+												<li>
+													<span class="left bz-yuandian"></span>
+													<span class="left">方式不同吧好像是差不多哇来访黑哇哦发检测句ID回复开展了好xxxxx常见问题 </span>
+													<span class="right">2018年10月31日  12:00</span>
+												</li>
+												<li>
+													<span class="left bz-yuandian"></span>
+													<span class="left">方式不同吧好像是差不多哇来访黑哇哦发检测句ID回复开展了好xxxxx常见问题</span>
+													<span class="right">2018年10月31日  12:00</span>
+												</li>
+												<li>
+													<span class="left bz-yuandian"></span>
+													<span class="left">XXXXXXXXXXXXXXX常见问题</span>
+													<span class="right">2018年10月31日  12:00</span>
+												</li>
+											</ul>
+										</div>
 									</div>
 								</div>
 							</div>
@@ -499,17 +554,16 @@
 						<!--<div class="time">意见反馈:usoftmall.com</div>-->
 					</div>
 					<div class="link">
-						<ul>
-							<li><span>帐号中心</span></li>
-							<li><a href="http://uas.ubtob.com/serve#/self/find_account">找回帐号密码</a></li>
-							<li><a href="http://uas.ubtob.com/serve#/self/account_excetion">帐号无法登录</a></li>
-							<li><a href="http://uas.ubtob.com/serve#/self/modify_pwd/4.1">修改密码</a></li>
-						</ul>
 						<ul>
 							<li><span>帮助中心</span></li>
-							<li><a href="#">操作视频</a></li>
-							<li><a href="#">操作文档</a></li>
 							<li><a href="#">常见问题</a></li>
+							<li><a href="#">操作手册</a></li>
+						</ul>
+						<ul>
+							<li><span>公司</span></li>
+							<li><a href="#">关于我们</a></li>
+							<li><a href="#">企业文化</a></li>
+							<li><a href="https://www.usoftchina.com/contact">联系我们</a></li>
 						</ul>
 						<!-- <ul>
 							<li><span>闯客网</span></li>
@@ -518,40 +572,40 @@
 							<li><a href="https://www.uuzcc.com/article/detail/13456.html">服务商规则</a></li>
 						</ul> -->
 						<ul>
-							<li><span>关于我们</span></li>
-							<li><a class="no-link">优软云介绍</a></li>
-							<li><a class="no-link">发展历程</a></li>
-							<li><a href="https://www.usoftchina.com/contact">联系我们</a></li>
+							<li><span>产品</span></li>
+							<li><a class="no-link">u企云服</a></li>
+							<li><a class="no-link">u软商城</a></li>
+							<li><a href="#">u智融</a></li>
+							<li><a href="#">u创客</a></li>
 						</ul>
 					</div>
+					
 					<div class="qr">
 						<div class="qr-top">
 							<div class="qr-tech qr-code">
 								<img src="./img/qr-tech.png" alt="">
-								科技公众号
+								<div class="db-text">
+									<span>科技公众号</span>
+								</div>
 							</div>
-							<div class="qr-mall qr-code">
+							
+							<!-- <div class="qr-mall qr-code">
 								<img src="./img/qr_mall.jpg" alt="">
 								商城公众号
-							</div>
+							</div> -->
 						</div>
-						<div class="qr-bottom">
+						<!-- <div class="qr-bottom">
 							粤ICP备15112126号
 							<br/>2018 © 深圳市优软科技有限公司
-						</div>
+						</div> -->
 					</div>
 				</div>
-				<div class="friend-link">
+				<div class="friend-link" style="margin-top: 100px;">
 					<ul style="margin-left: -40px;">
-						<li><span>友情链接:</span></li>
-						<li><a href="http://www.worldshine.net">深圳华商龙</a></li>
-						<li><a href="http://www.yitoa.com">深圳市英唐智能科技</a></li>
-						<li><a href="http://uas.usoftchina.com">深圳市优软科技</a></li>
-						<li><a href="http://www.51cube.com">酷比魔方</a></li>
-						<li><a href="http://www.szsoling.com/home">SOLING索菱</a></li>
-						<li><a href="http://www.huashangweitai.com">深圳市华商维泰显示科技</a></li>
-						<li><a href="http://www.szmadigi.com">迈迪杰科技</a></li>
-						<li><a href="http://www.hi-mantech.com">怡海能达</a></li>
+						<li><span>常用链接:</span></li>
+						<li><a href="#">uas官网</a></li>
+						<li><a href="#">u软云</a></li>
+						<li><a href="#">英唐官网</a></li>
 					</ul>
 				</div>
 			</div>
@@ -581,83 +635,83 @@
 		<!-- onscroll animation -->
         <script src="js/wow.min.js"></script>
 		<!-- Custom Functions jq表单提交插件-->
-        <script src="js/jquery.form.min.js"></script>
-        <script src="js/jquery.validate.min.js"></script>
+        <!-- <script src="js/jquery.form.min.js"></script> -->
+        <!-- <script src="js/jquery.validate.min.js"></script> -->
         <script src="js/main.js"></script>
         <script>
-        	$(function() {
-				$.validator.addMethod("isMobile", function(value, element) {       
-					var length = value.length;   
-					var mobile = /^[1][3,4,5,7,8][0-9]{9}$/;   
-					return this.optional(element) || (length == 11 && mobile.test(value));       
-				}, "请正确填写您的手机号码");
-    			$("#contact-form").validate({//自定义验证规则
-    				rules: {
-    					phone: {
-							required: true,
-							isMobile:true
-    						// minlength: 8
-						},
-						// realName: "required",
-    		            email: {
-    		                required: true,
-    		                email: true
-    		            },
-    					subject: {
-    						required: true,
-    		                minlength: 2
-    					},
-    					message: {
-    						required: true,
-    		                minlength: 2
-    					}
-    				},
-					messages: {//提示文字
-						phone: {
-							required: "号码不能为空",
-							// telephone: '请填写正确的手机号'
-						},
-    					// name: {
-    					// 	required: "姓名不能为空",
-    					// 	minlength: "至少输入8位字母和数字"
-    					// },
-    		            email: {
-							required: "没有电子邮件",
-							email: "请输入正确格式的电子邮件",
-    		            },
-    					subject: {
-    						required: "你有理由联系,把它写在这里",
-    		                minlength: "这一切?真的?"
-    					},
-    					message: {
-    						required: "嗯……嗯,你必须写一些东西寄这张表格。",
-    						minlength: "这一切?真的?"
-    					}
-    				},
-    				submitHandler: function(form) {
-    					$(form).ajaxSubmit({//jq表单提交
-    						type:"POST",
-    						data: $(form).serialize(),//获取form中的所有数据
-    						url:"mail.php",
-    						success: function() {
-    							$(".contact-form").fadeTo( "slow", 1, function() {
-    		                        $(".contact-form").resetForm();//清空form
-    								$(".success").slideDown("slow");//滑动方式显示隐藏元素
-    							});
-    						},
-    						error: function() {
-    							$(".contact-form").fadeTo( "slow", 1, function() {
-    								$(".error").slideDown("slow");
-    							});
-    						}
-    					});
-    				},
-    		        errorPlacement: function(error, element) {
-    		            element.after(error);
-    		            error.hide().slideDown();
-    		        }
-    			});
-			});
+        	// $(function() {
+			// 	$.validator.addMethod("isMobile", function(value, element) {       
+			// 		var length = value.length;   
+			// 		var mobile = /^[1][3,4,5,7,8][0-9]{9}$/;   
+			// 		return this.optional(element) || (length == 11 && mobile.test(value));       
+			// 	}, "请正确填写您的手机号码");
+    		// 	$("#contact-form").validate({//自定义验证规则
+    		// 		rules: {
+    		// 			phone: {
+			// 				required: true,
+			// 				isMobile:true
+    		// 				// minlength: 8
+			// 			},
+			// 			// realName: "required",
+    		//             email: {
+    		//                 required: true,
+    		//                 email: true
+    		//             },
+    		// 			subject: {
+    		// 				required: true,
+    		//                 minlength: 2
+    		// 			},
+    		// 			message: {
+    		// 				required: true,
+    		//                 minlength: 2
+    		// 			}
+    		// 		},
+			// 		messages: {//提示文字
+			// 			phone: {
+			// 				required: "号码不能为空",
+			// 				// telephone: '请填写正确的手机号'
+			// 			},
+    		// 			// name: {
+    		// 			// 	required: "姓名不能为空",
+    		// 			// 	minlength: "至少输入8位字母和数字"
+    		// 			// },
+    		//             email: {
+			// 				required: "没有电子邮件",
+			// 				email: "请输入正确格式的电子邮件",
+    		//             },
+    		// 			subject: {
+    		// 				required: "你有理由联系,把它写在这里",
+    		//                 minlength: "这一切?真的?"
+    		// 			},
+    		// 			message: {
+    		// 				required: "嗯……嗯,你必须写一些东西寄这张表格。",
+    		// 				minlength: "这一切?真的?"
+    		// 			}
+    		// 		},
+    				// submitHandler: function(form) {
+    				// 	$(form).ajaxSubmit({//jq表单提交
+    				// 		type:"POST",
+    				// 		data: $(form).serialize(),//获取form中的所有数据
+    				// 		url:"mail.php",
+    				// 		success: function() {
+    				// 			$(".contact-form").fadeTo( "slow", 1, function() {
+    		        //                 $(".contact-form").resetForm();//清空form
+    				// 				$(".success").slideDown("slow");//滑动方式显示隐藏元素
+    				// 			});
+    				// 		},
+    				// 		error: function() {
+    				// 			$(".contact-form").fadeTo( "slow", 1, function() {
+    				// 				$(".error").slideDown("slow");
+    				// 			});
+    				// 		}
+    				// 	});
+    				// },
+    		//         errorPlacement: function(error, element) {
+    		//             element.after(error);
+    		//             error.hide().slideDown();
+    		//         }
+    		// 	});
+			// });
 			// 关闭弹窗X
 			$(".tc-on").click(function(){
 				$('#box-zc').css('display','none');
@@ -716,7 +770,7 @@
 				$('#box-zc').css('display','none');
 			})
 
-
+		// ----------------
 			$("#callback").click(function(){
                 $("#bbb").css("display","none");
                 $("#aaa").css("display","block");

+ 50 - 15
frontend/saas-portal-web/src/js/main.js

@@ -32,25 +32,60 @@ jQuery(window).load(function(){
     //         alert("密码格式不对")
     //     }
     // })
-    // $("#phone").change(function(){
-    //     if (isPhone($(this).val())) {
-    //         return
-    //     } else {
-    //         alert("手机号码格式不对")
-    //     }
+    // 注册手机号验证
+    $("#zc-phone").bind('input propertychange',function(){
+        if (isPhone($(this).val())) {
+            $(".zc-phone").html("");
+            $(this).parent().parent().css('border','1px #D8DCE8 solid');
+            $(this).css('outline','');
+        } else {
+            $(".zc-phone").html("<img src='./img/assets/tishi1x.png'/>请输入正确的手机号码");
+            $(this).parent().parent().css('border','1px red solid');
+            $(this).css('outline','none');
+        }
+    })
+    // 账号手机号验证
+    $("#zh-phone").bind('input propertychange',function(){
+        if (isPhone($(this).val())) {
+            $(".zh-phone").html("");
+            $(this).parent().parent().css('border','1px #D8DCE8 solid');
+            $(this).css('outline','');
+        } else {
+            $(".zh-phone").html("<img src='./img/assets/tishi1x.png'/>请输入正确的手机号码");
+            $(this).parent().parent().css('border','1px red solid');
+            $(this).css('outline','none');
+        }
+    })
+    // 短信手机号验证
+    $("#dx-phone").bind('input propertychange',function(){
+        if (isPhone($(this).val())) {
+            $(".dx-phone").html("");
+            $(this).parent().parent().css('border','1px #D8DCE8 solid');
+            $(this).css('outline','');
+        } else {
+            $(".dx-phone").html("<img src='./img/assets/tishi1x.png'/>请输入正确的手机号码");
+            $(this).parent().parent().css('border','1px red solid');
+            $(this).css('outline','none');
+        }
+    })
+    // 账号登录
+    // $("#zh-login").click(function(){
+    //     let name = $("#zh-phone").val();
+    //     let pwd = $("#zh-pwd").val();
+    //     console.log('姓名是'+name+'密码是'+pwd)
     // })
-    // 登录点击
-    // $("#login-pwd").click(function(){
-    //     let name = $("#phone").val();
-    //     let pwd = $("#pwd").val();
+    // // 短信登录
+    // $("#dx-login").click(function(){
+    //     let name = $("#dx-phone").val();
+    //     let pwd = $("#dx-yanzhengma").val();
     //     console.log('姓名是'+name+'密码是'+pwd)
     // })
-    //注册点击
+    // // 注册点击
     // $("#zc-login").click(function(){
     //     let name = $("#zc-phone").val();
-    //     let pwd = $("#zc-password").val();
+    //     let tuxingma = $("#zc-tuxingma").val();
     //     let yanzheng  = $("#zc-yanzhengma").val();
-    //     console.log('姓名是'+name+'密码是'+pwd+'验证码是'+yanzheng)
+    //     console.log('姓名是'+name+'图形码是'+tuxingma+'验证码是'+yanzheng)
     // })
 
     // 注册协议按钮同意可以点击注册
@@ -66,12 +101,12 @@ jQuery(window).load(function(){
     
     // 帮助中心
     $(".bz-right-conent>div").eq(0).show()
-    let abtn = $(".bz-left").children('button').click(function(){
+    let abtn = $(".bz-ul").children('li').click(function(){
         console.log($(this).text())
         var _index = $(this).index();
         //让内容框的第 _index 个显示出来,其他的被隐藏
         $(".bz-right-conent>div").eq(_index).show().siblings().hide();
-        $(this).addClass("actvin").siblings().removeClass('actvin')
+        $(this).addClass("active").siblings().removeClass('active')
     });
 });
 

+ 3 - 0
frontend/saas-web/app/view/core/base/BasePanel.js

@@ -5,11 +5,13 @@ Ext.define('saas.view.core.base.BasePanel', {
     controller: 'core-base-basepanel',
     viewModel: 'core-base-basepanel',
 
+    cls:'core-base-basepanel',
     //工具类
     FormUtil: Ext.create('saas.util.FormUtil'),
     BaseUtil: Ext.create('saas.util.BaseUtil'),
 
     //基础属性
+    frame:false,
     autoScroll: true,
     border: 1,
     bodyPadding: 5,
@@ -38,6 +40,7 @@ Ext.define('saas.view.core.base.BasePanel', {
 
         Ext.apply(me, {
             dockedItems: [{
+                frame:false,
                 xtype: 'toolbar',
                 dock: 'top',
                 style: {

+ 33 - 0
frontend/saas-web/app/view/core/base/BasePanel.scss

@@ -0,0 +1,33 @@
+.core-base-basepanel{
+    .x-panel-default-outer-border-trl {
+        border-top-color: #fff !important;
+        border-top-width: 1px !important;
+        border-right-color: #fff !important;
+        border-right-width: 1px !important;
+        border-left-color: #fff !important;
+        border-left-width: 1px !important;
+    }
+    .x-panel-default-outer-border-rbl {
+        border-top-color: #fff !important;
+        border-top-width: 1px !important;
+        border-right-color: #fff !important;
+        border-right-width: 1px !important;
+        border-left-color: #fff !important;
+        border-left-width: 1px !important;
+        border-bottom-color: #fff !important;
+        border-bottom-width: 1px !important;
+    }
+}
+.core-base-gridpanel{
+    .x-grid-body{
+        border:1px solid #abdaff !important;
+        border-top-width: 0 !important;
+    }
+    .x-grid-header-ct{
+        border:1px solid #abdaff !important;
+    }
+}
+.x-basepanel-pagingtoolbar{
+    border:1px solid #abdaff !important;
+    border-top-width: 0 !important;
+}

+ 4 - 0
frontend/saas-web/app/view/core/base/GridPanel.js

@@ -8,6 +8,8 @@ Ext.define('saas.view.core.base.GridPanel', {
         mode : "MULTI" ,
         ignoreRightMouseSelection : false
     },
+
+    cls:'core-base-gridpanel',
     
     dataUrl: '',
     dbSearchFields: [],
@@ -15,6 +17,7 @@ Ext.define('saas.view.core.base.GridPanel', {
 
     initComponent: function() {
         var me = this;
+        me.frame = false;
         if(me.columns){
             var fields = me.columns.map(column => column.dataIndex);
             me.columns = me.insertFirstColumn(me.columns);
@@ -129,6 +132,7 @@ Ext.define('saas.view.core.base.GridPanel', {
                 },{
                     xtype: 'pagingtoolbar',
                     dock: 'bottom',
+                    cls:'x-basepanel-pagingtoolbar',
                     displayInfo: true,
                     store: me.store
                 }]

+ 1 - 1
frontend/saas-web/app/view/document/kind/ChildForm.js

@@ -260,7 +260,7 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
             },{
                 readOnly:true,
                 xtype:'textfield',
-                fieldLabel: '状态',
+                fieldLabel: '仓库状态',
                 name: 'wh_status',   
                 value:'已开启',
                 maxLength: 20

+ 27 - 9
frontend/saas-web/app/view/purchase/purchase/FormPanel.js

@@ -201,12 +201,8 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
-                    if(v||v==0){
-                        return Ext.util.Format.number(v, '0.00');
-                    }else{
-                        return Ext.util.Format.number(v, format);
-                    }
-                }
+                    return Ext.util.Format.number(v, format);
+                },
             },
             {
                 text : "已转数", 
@@ -312,7 +308,7 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 width : 120.0
             },{
                 text : "备注", 
-                dataIndex : "sd_remark",
+                dataIndex : "pd_remark",
                 width : 250, 
                 items : null,
                 editor : {
@@ -351,17 +347,39 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
         name : "pu_buyerid", 
         fieldLabel : "采购员ID"
     },
+    {
+        xtype : "hidden", 
+        name : "creatorId", 
+        fieldLabel : "录入人ID", 
+        readOnly:true
+    },
     {
         xtype : "textfield", 
-        name : "pu_recorder", 
+        name : "creator", 
         fieldLabel : "录入人", 
         readOnly:true
     }, {
         xtype : "datefield", 
-        name : "pu_indate", 
+        name : "createtime", 
         fieldLabel : "录入日期",
         readOnly:true, 
         defaultValue: new Date()
+    },{
+        xtype : "hidden", 
+        name : "updaterId", 
+        fieldLabel : "更新人ID", 
+        readOnly:true
+    },{
+        xtype : "hidden", 
+        name : "updater", 
+        fieldLabel : "更新人", 
+        readOnly:true
+    }, {
+        xtype : "hidden", 
+        name : "updatetime", 
+        fieldLabel : "更新日期",
+        readOnly:true, 
+        defaultValue: new Date()
     }, {
         xtype : "textfield", 
         name : "pu_auditman", 

+ 26 - 0
frontend/saas-web/app/view/purchase/purchase/QueryPanel.js

@@ -137,6 +137,32 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             text: '关联销售单',
             dataIndex: 'pu_salecode',
             width: 120
+        }, {
+            text: '录入人ID',
+            dataIndex: 'creatorId',
+            width: 0
+        }, {
+            text: '录入人',
+            dataIndex: 'creator',
+            width: 0
+        }, {
+            text: '录入日期',
+            dataIndex: 'createTime',
+            xtype: 'datecolumn',
+            width: 0
+        }, {
+            text: '更新人ID',
+            dataIndex: 'updaterId',
+            width: 0
+        }, {
+            text: '更新人',
+            dataIndex: 'updater',
+            width: 0
+        }, {
+            text: '更新日期',
+            dataIndex: 'updateTime',
+            xtype: 'datecolumn',
+            width: 0
         }],
         relativeColumn: [{
             text: 'id',

+ 27 - 3
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -340,16 +340,40 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
         name : "pi_remark", 
         fieldLabel : "备注", 
         columnWidth : 1
-    },{
+    },
+    {
+        xtype : "hidden", 
+        name : "creatorId", 
+        fieldLabel : "录入人ID", 
+        readOnly:true
+    },
+    {
         xtype : "textfield", 
-        name : "pi_recordman", 
+        name : "creator", 
         fieldLabel : "录入人", 
         readOnly:true
     }, {
         xtype : "datefield", 
-        name : "createTime", 
+        name : "createtime", 
         fieldLabel : "录入日期",
+        readOnly:true, 
+        defaultValue: new Date()
+    },{
+        xtype : "hidden", 
+        name : "updaterId", 
+        fieldLabel : "更新人ID", 
         readOnly:true
+    },{
+        xtype : "hidden", 
+        name : "updater", 
+        fieldLabel : "更新人", 
+        readOnly:true
+    }, {
+        xtype : "hidden", 
+        name : "updatetime", 
+        fieldLabel : "更新日期",
+        readOnly:true, 
+        defaultValue: new Date()
     }, {
         xtype : "textfield", 
         name : "pi_auditman", 

+ 26 - 0
frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js

@@ -127,6 +127,32 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             text: '备注',
             dataIndex: 'pi_remark',
             width: 200
+        },{
+            text: '录入人ID',
+            dataIndex: 'creatorId',
+            width: 0
+        }, {
+            text: '录入人',
+            dataIndex: 'creator',
+            width: 0
+        }, {
+            text: '录入日期',
+            dataIndex: 'createTime',
+            xtype: 'datecolumn',
+            width: 0
+        }, {
+            text: '更新人ID',
+            dataIndex: 'updaterId',
+            width: 0
+        }, {
+            text: '更新人',
+            dataIndex: 'updater',
+            width: 0
+        }, {
+            text: '更新日期',
+            dataIndex: 'updateTime',
+            xtype: 'datecolumn',
+            width: 0
         }],
         relativeColumn: [{
             text: 'id',

+ 27 - 3
frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js

@@ -322,16 +322,40 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
         name : "pi_remark", 
         fieldLabel : "备注", 
         columnWidth : 1
-    }, {
+    },
+    {
+        xtype : "hidden", 
+        name : "creatorId", 
+        fieldLabel : "录入人ID", 
+        readOnly:true
+    },
+    {
         xtype : "textfield", 
-        name : "pi_recordman", 
+        name : "creator", 
         fieldLabel : "录入人", 
         readOnly:true
     }, {
         xtype : "datefield", 
-        name : "createTime", 
+        name : "createtime", 
         fieldLabel : "录入日期",
+        readOnly:true, 
+        defaultValue: new Date()
+    },{
+        xtype : "hidden", 
+        name : "updaterId", 
+        fieldLabel : "更新人ID", 
         readOnly:true
+    },{
+        xtype : "hidden", 
+        name : "updater", 
+        fieldLabel : "更新人", 
+        readOnly:true
+    }, {
+        xtype : "hidden", 
+        name : "updatetime", 
+        fieldLabel : "更新日期",
+        readOnly:true, 
+        defaultValue: new Date()
     }, {
         xtype : "textfield", 
         name : "pi_auditman", 

+ 27 - 1
frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js

@@ -13,7 +13,7 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
         fieldLabel: 'ID',
         allowBlank: true,
         columnWidth: 0
-    }, {
+    }, {    
         xtype: 'textfield',
         name: 'pi_inoutno',
         fieldLabel: '单据编号',
@@ -131,6 +131,32 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
             text: '备注',
             dataIndex: 'pi_remark',
             width: 200
+        }, {
+            text: '录入人ID',
+            dataIndex: 'creatorId',
+            width: 0
+        }, {
+            text: '录入人',
+            dataIndex: 'creator',
+            width: 0
+        }, {
+            text: '录入日期',
+            dataIndex: 'createTime',
+            xtype: 'datecolumn',
+            width: 0
+        }, {
+            text: '更新人ID',
+            dataIndex: 'updaterId',
+            width: 0
+        }, {
+            text: '更新人',
+            dataIndex: 'updater',
+            width: 0
+        }, {
+            text: '更新日期',
+            dataIndex: 'updateTime',
+            xtype: 'datecolumn',
+            width: 0
         }],
         relativeColumn: [{
             text: 'id',

+ 3 - 3
frontend/saas-web/app/view/purchase/report/PurchasePay.js

@@ -20,7 +20,7 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         columnWidth: 0.25
     }, {
         xtype: 'condatefield',
-        name: 'pb_recorddate',
+        name: 'createTime',
         fieldLabel: '单据日期',
         columnWidth: 0.5
     }],
@@ -44,11 +44,11 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         width: 200
     }, {
         text: '录入人',
-        dataIndex: 'pb_recorder',
+        dataIndex: 'creator',
         width: 200
     }, {
         text : "日期", 
-        dataIndex : "pb_recorddate", 
+        dataIndex : "createTime", 
         xtype:'datecolumn'
     }, {
         text: '来源单号',

+ 12 - 4
frontend/saas-web/app/view/stock/report/Prodiodetail.js

@@ -33,10 +33,14 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
             ["库存初始化","库存初始化"]
         ]
     }, {		
-        xtype: 'dbfindtrigger',
+        xtype: 'textfield',
         name: 'pd_prodcode',
-        fieldLabel: '物料编号',
-        columnWidth: 0.2
+        fieldLabel: '',
+        emptyText:'输入单号,订单号或物料编号',
+        columnWidth: 0.2,
+        getCondition:function(v){
+            return "pd_prodcode='"+v+"' or pi_inoutno='"+v+"' or pd_ordercode='"+v+"'";
+        }
     }, {
         xtype: 'condatefield',
         name: 'pi_date',
@@ -119,7 +123,11 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         xtype: 'numbercolumn',
         dataIndex: 'pd_price',
         xtype: 'numbercolumn'
-    }, {
+    },{
+        text: '订单号',
+        dataIndex: 'pd_ordercode',
+        width: 200
+    },{
         text: '备注',
         dataIndex: 'pd_text1',
         width: 250

+ 100 - 99
frontend/saas-web/app/view/stock/report/ProdiodetailController.js

@@ -3,107 +3,108 @@ Ext.define('saas.view.stock.report.ProdiodetailController', {
     alias: 'controller.stock-report-prodiodetail',
     init: function (form) {
         this.control({
+
             //放大镜赋值关系 以及 tpl模板
-            'dbfindtrigger[name=pd_prodcode]':{
-                beforerender:function(f){
-                    Ext.apply(f,{
-                        dataUrl:'/api/document/product/list',
-                        addXtype: 'document-product-formpanel',
-                        addTitle: '物料资料',
-                        dbfinds:[
-                        {
-                            from:'pr_code',to:'pd_prodcode'
-                        }, {
-                            from:'pr_detail',to:'pr_detail'
-                        }, {
-                            from:'pr_spec',to:'pr_spec'
-                        }],
-                        dbtpls:[{
-                            field:'pr_code',width:100
-                        },{
-                            field:'pr_detail',width:100
-                        }],
-                        defaultCondition: "pr_statuscode='OPEN'",
-                        dbSearchFields:[{
-                            emptyText:'输入物料编号、名称或规格',
-                            xtype : "textfield", 
-                            name : "search", 
-                            width: 200,
-                            getCondition: function(v) {
-                                return "(upper(pr_spec) like '%" + v.toUpperCase()+"%' or upper(pr_code) like '%"+v.toUpperCase()+"%' or upper(pr_detail) like '%"+v.toUpperCase()+"%')";
-                            },
-                            allowBlank : true, 
-                            columnWidth : 0.25
-                        }],
-                        dbColumns:[{
-                            "text": "物料ID",
-                            "hidden": true,
-                            "dataIndex": "id",
-                        }, {
-                            "text": "物料编号",       
-                            "dataIndex": "pr_code",
-                            "width": 200,
-                        }, {
-                            "text": "物料名称",
-                            "width": 200,
-                            "dataIndex": "pr_detail",
-                        }, {
-                            "text": "规格",
-                            "dataIndex": "pr_spec",
-                            "width": 100,
-                        }, {
-                            "text": "单位",
-                            "dataIndex": "pr_unit",
-                            "width": 100,
-                        },{
-                            "text": "仓库id",
-                            "dataIndex": "pr_whid",
-                            "hidden": true,
-                        },{
-                            "text": "仓库编号",
-                            "dataIndex": "pr_whcode",
-                            "hidden": true,
-                        },{
-                            "text": "仓库",
-                            "dataIndex": "pr_whname",
-                            "width": 200,
-                        },{
-                            "text": "总库存数",
-                            "dataIndex": "po_onhand",
-                            "width": 100,
-                            xtype: 'numbercolumn',
-                            align:'end'
-                        },{
-                            "text": "类型",
-                            "dataIndex": "pr_kind",
-                            "width": 100,
-                        },{
-                            "text": "型号",
-                            "dataIndex": "pr_orispeccode",
-                            "width": 100,
-                        },{
-                            "text": "品牌",
-                            "dataIndex": "pr_brand",
-                            "width": 100,
-                        },{
-                            "text": "供应商",
-                            "dataIndex": "pr_vendname",
-                            "width": 100,
-                        },{
-                            "text": "最小包装",
-                            "dataIndex": "pr_zxbzs",
-                            "width": 100,
-                            xtype: 'numbercolumn',
-                            align:'end'
-                        },{
-                            "text": "L/T",
-                            "dataIndex": "pr_leadtime",
-                            "width": 100,
-                        }]
-                    }) ;   
+            // 'dbfindtrigger[name=pd_prodcode]':{
+            //     beforerender:function(f){
+            //         Ext.apply(f,{
+            //             dataUrl:'/api/document/product/list',
+            //             addXtype: 'document-product-formpanel',
+            //             addTitle: '物料资料',
+            //             dbfinds:[
+            //             {
+            //                 from:'pr_code',to:'pd_prodcode'
+            //             }, {
+            //                 from:'pr_detail',to:'pr_detail'
+            //             }, {
+            //                 from:'pr_spec',to:'pr_spec'
+            //             }],
+            //             dbtpls:[{
+            //                 field:'pr_code',width:100
+            //             },{
+            //                 field:'pr_detail',width:100
+            //             }],
+            //             defaultCondition: "pr_statuscode='OPEN'",
+            //             dbSearchFields:[{
+            //                 emptyText:'输入物料编号、名称或规格',
+            //                 xtype : "textfield", 
+            //                 name : "search", 
+            //                 width: 200,
+            //                 getCondition: function(v) {
+            //                     return "(upper(pr_spec) like '%" + v.toUpperCase()+"%' or upper(pr_code) like '%"+v.toUpperCase()+"%' or upper(pr_detail) like '%"+v.toUpperCase()+"%')";
+            //                 },
+            //                 allowBlank : true, 
+            //                 columnWidth : 0.25
+            //             }],
+            //             dbColumns:[{
+            //                 "text": "物料ID",
+            //                 "hidden": true,
+            //                 "dataIndex": "id",
+            //             }, {
+            //                 "text": "物料编号",       
+            //                 "dataIndex": "pr_code",
+            //                 "width": 200,
+            //             }, {
+            //                 "text": "物料名称",
+            //                 "width": 200,
+            //                 "dataIndex": "pr_detail",
+            //             }, {
+            //                 "text": "规格",
+            //                 "dataIndex": "pr_spec",
+            //                 "width": 100,
+            //             }, {
+            //                 "text": "单位",
+            //                 "dataIndex": "pr_unit",
+            //                 "width": 100,
+            //             },{
+            //                 "text": "仓库id",
+            //                 "dataIndex": "pr_whid",
+            //                 "hidden": true,
+            //             },{
+            //                 "text": "仓库编号",
+            //                 "dataIndex": "pr_whcode",
+            //                 "hidden": true,
+            //             },{
+            //                 "text": "仓库",
+            //                 "dataIndex": "pr_whname",
+            //                 "width": 200,
+            //             },{
+            //                 "text": "总库存数",
+            //                 "dataIndex": "po_onhand",
+            //                 "width": 100,
+            //                 xtype: 'numbercolumn',
+            //                 align:'end'
+            //             },{
+            //                 "text": "类型",
+            //                 "dataIndex": "pr_kind",
+            //                 "width": 100,
+            //             },{
+            //                 "text": "型号",
+            //                 "dataIndex": "pr_orispeccode",
+            //                 "width": 100,
+            //             },{
+            //                 "text": "品牌",
+            //                 "dataIndex": "pr_brand",
+            //                 "width": 100,
+            //             },{
+            //                 "text": "供应商",
+            //                 "dataIndex": "pr_vendname",
+            //                 "width": 100,
+            //             },{
+            //                 "text": "最小包装",
+            //                 "dataIndex": "pr_zxbzs",
+            //                 "width": 100,
+            //                 xtype: 'numbercolumn',
+            //                 align:'end'
+            //             },{
+            //                 "text": "L/T",
+            //                 "dataIndex": "pr_leadtime",
+            //                 "width": 100,
+            //             }]
+            //         }) ;   
 
-                }
-            }
+            //     }
+            // }            
          });
         }
 });

+ 28 - 31
frontend/saas-web/app/view/sys/account/DataList.js

@@ -16,14 +16,14 @@ Ext.define('saas.view.sys.account.DataList', {
 
     tbar: [{
         width: 150,
-        name: 'mn_name',
+        name: 'username',
         xtype: 'textfield',
         emptyText : '账户名称'
     },{
         width: 150,
-        name: 'mn_leadcode',
+        name: 'mobile',
         xtype: 'textfield',
-        emptyText : '账户编号'
+        emptyText : '电话'
     },{
         cls:'x-formpanel-btn-orange',
         xtype:'button',
@@ -49,28 +49,44 @@ Ext.define('saas.view.sys.account.DataList', {
 
     columns : [{
         text : 'id', 
-        width : 0, 
+        hidden:true,
         dataIndex : 'id', 
-        xtype : 'numbercolumn', 
+        xtype : 'numbercolumn',   
+    },{
+        text : 'accountId', 
+        hidden:true,
+        dataIndex : 'accountId', 
+        xtype : 'numbercolumn',   
     },{
         text : '账户名称', 
         width : 200.0, 
-        dataIndex : 'mn_name', 
+        dataIndex : 'username', 
         xtype : '', 
     }, 
     {
-        text : '账户编号', 
-        dataIndex : 'mn_leadcode', 
+        text : '真实姓名', 
+        dataIndex : 'realname', 
         width : 120.0, 
         xtype : '', 
     }, 
     {
-        text : '单据规则', 
-        dataIndex : 'mn_rule', 
+        text : '联系电话', 
+        dataIndex : 'mobile', 
         width : 220.0,
     },{
-        text : '流水长度', 
-        dataIndex : 'mn_number', 
+        text : '联系邮箱', 
+        dataIndex : 'email', 
+        width : 120.0, 
+        xtype : '', 
+    },{
+        text : '关联角色id', 
+        hidden:true,
+        dataIndex : 'roleIds', 
+        width : 120.0, 
+        xtype : '', 
+    },{
+        text : '关联角色', 
+        dataIndex : 'roleNames', 
         width : 120.0, 
         xtype : '', 
     }],
@@ -185,25 +201,6 @@ Ext.define('saas.view.sys.account.DataList', {
                     session: true
                 });
                 this.dialog.show();
-            }else if(classList.indexOf('fa-trash-o')>-1){
-                //删除
-                var id = record.get('id');
-                if(id){
-                    grid.BaseUtil.request({
-                        url: grid.deleteUrl+id,
-                        method: 'POST',
-                    })
-                    .then(function(localJson) {
-                        if(localJson.success){
-                            //解析参数
-                            showToast('删除成功');
-                            view.ownerCt.store.load();
-                        }
-                    })
-                    .catch(function() {
-                        showToast('删除失败');
-                    });
-                }
             }
         }
     },

+ 2 - 1
frontend/saas-web/app/view/sys/manager/FormPanel.js

@@ -19,7 +19,7 @@ Ext.define('saas.view.sys.manager.FormPanel', {
     },
 
     defaults: {
-        iconAlign: 'top',
+        iconAlign: 'left',
         bodyPadding: 15
     },
 
@@ -29,6 +29,7 @@ Ext.define('saas.view.sys.manager.FormPanel', {
         title: '公司设置',
         xtype:'sys-config-formpanel'
     }, {
+        cls:'sys-account-datalist',
         iconCls:'x-fa fa-key',
         title: '账户设置',
         xtype:'sys-account-datalist' 

+ 5 - 0
frontend/saas-web/app/view/sys/manager/FormPanel.scss

@@ -33,6 +33,11 @@
         }
     }
 }
+.sys-account-datalist{
+    .x-grid-body{
+        padding:0 !important;
+    }
+}
 .sys-power-formpanel{
     .x-panel-body-default-framed{
         padding:0 !important;

+ 1 - 11
frontend/saas-web/resources/json/navigation.json

@@ -288,21 +288,11 @@
             "text": "新手导航",
             "viewType": "sys-guide-formpanel",
             "leaf": true
-        },{  
+        }, {  
             "id":"sys-manager-formpanel",
             "text": "系统管理",
             "viewType": "sys-manager-formpanel",
             "leaf": true
-        }, {  
-            "id":"sys-config-formpanel",
-            "text": "公司设置",
-            "viewType": "sys-config-formpanel",
-            "leaf": true
-        }, {
-            "id":"sys-power-formpanel",
-            "text": "权限设置",
-            "viewType": "sys-power-formpanel",
-            "leaf": true
         }, {
             "id":"sys-messagelog-datalist",
             "text": "操作日志",