local版使用mybatis-plus重写

master
toesbieya 6 years ago
parent 4c4360bf45
commit 0f60d33ea8
  1. BIN
      java/db/my.rar
  2. 12
      java/local/pom.xml
  3. 10
      java/local/src/main/java/cn/toesbieya/jxc/aspect/UserActionAspect.java
  4. 7
      java/local/src/main/java/cn/toesbieya/jxc/constant/DocConstant.java
  5. 7
      java/local/src/main/java/cn/toesbieya/jxc/constant/DocumentConstant.java
  6. 25
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizDocumentHistoryController.java
  7. 6
      java/local/src/main/java/cn/toesbieya/jxc/controller/RecController.java
  8. 10
      java/local/src/main/java/cn/toesbieya/jxc/controller/StatisticController.java
  9. 20
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/HistoryController.java
  10. 29
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/PurchaseInboundController.java
  11. 29
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/PurchaseOrderController.java
  12. 33
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/SellOrderController.java
  13. 33
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/SellOutboundController.java
  14. 61
      java/local/src/main/java/cn/toesbieya/jxc/controller/msg/ManageController.java
  15. 35
      java/local/src/main/java/cn/toesbieya/jxc/controller/msg/UserController.java
  16. 18
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/CategoryController.java
  17. 23
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/CustomerController.java
  18. 16
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/DepartmentController.java
  19. 17
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/ResourceController.java
  20. 18
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/RoleController.java
  21. 26
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/SupplierController.java
  22. 22
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/UserController.java
  23. 6
      java/local/src/main/java/cn/toesbieya/jxc/handler/GlobalExceptionHandler.java
  24. 8
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizDocHistoryMapper.java
  25. 15
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizDocumentHistoryMapper.java
  26. 29
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseInboundMapper.java
  27. 10
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseInboundSubMapper.java
  28. 34
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseOrderMapper.java
  29. 10
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseOrderSubMapper.java
  30. 34
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOrderMapper.java
  31. 10
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOrderSubMapper.java
  32. 29
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOutboundMapper.java
  33. 10
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOutboundSubMapper.java
  34. 16
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizStockMapper.java
  35. 20
      java/local/src/main/java/cn/toesbieya/jxc/mapper/MsgMapper.java
  36. 7
      java/local/src/main/java/cn/toesbieya/jxc/mapper/MsgStateMapper.java
  37. 16
      java/local/src/main/java/cn/toesbieya/jxc/mapper/RecAttachmentMapper.java
  38. 9
      java/local/src/main/java/cn/toesbieya/jxc/mapper/RecLoginHistoryMapper.java
  39. 9
      java/local/src/main/java/cn/toesbieya/jxc/mapper/RecUserActionMapper.java
  40. 22
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysCategoryMapper.java
  41. 19
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysCustomerMapper.java
  42. 11
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysDepartmentMapper.java
  43. 7
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysRegionMapper.java
  44. 12
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysResourceMapper.java
  45. 22
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysRoleMapper.java
  46. 19
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysSupplierMapper.java
  47. 26
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysUserMapper.java
  48. 8
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDoc.java
  49. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDocHistory.java
  50. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDocSub.java
  51. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseInbound.java
  52. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseInboundSub.java
  53. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseOrder.java
  54. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseOrderSub.java
  55. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOrder.java
  56. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOrderSub.java
  57. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOutbound.java
  58. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOutboundSub.java
  59. 1
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysCustomer.java
  60. 1
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysResource.java
  61. 1
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysSupplier.java
  62. 20
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/CustomerVo.java
  63. 27
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/PurchaseInboundVo.java
  64. 27
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/PurchaseOrderVo.java
  65. 20
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/ResourceVo.java
  66. 27
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/SellOrderVo.java
  67. 27
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/SellOutboundVo.java
  68. 20
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/SupplierVo.java
  69. 7
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/result/PageResult.java
  70. 15
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/DocHistorySearch.java
  71. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/DocSearch.java
  72. 11
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/DocumentHistorySearch.java
  73. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/PurchaseInboundSearch.java
  74. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/PurchaseOrderSearch.java
  75. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/SellOrderSearch.java
  76. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/SellOutboundSearch.java
  77. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/update/DocStatusUpdate.java
  78. 10
      java/local/src/main/java/cn/toesbieya/jxc/module/PermissionModule.java
  79. 14
      java/local/src/main/java/cn/toesbieya/jxc/module/request/RequestModule.java
  80. 34
      java/local/src/main/java/cn/toesbieya/jxc/schedule/DocTask.java
  81. 22
      java/local/src/main/java/cn/toesbieya/jxc/schedule/StatisticTask.java
  82. 75
      java/local/src/main/java/cn/toesbieya/jxc/service/AccountService.java
  83. 23
      java/local/src/main/java/cn/toesbieya/jxc/service/BizDocumentHistoryService.java
  84. 46
      java/local/src/main/java/cn/toesbieya/jxc/service/BizStockService.java
  85. 118
      java/local/src/main/java/cn/toesbieya/jxc/service/RecService.java
  86. 16
      java/local/src/main/java/cn/toesbieya/jxc/service/StatisticService.java
  87. 79
      java/local/src/main/java/cn/toesbieya/jxc/service/SysCategoryService.java
  88. 58
      java/local/src/main/java/cn/toesbieya/jxc/service/SysCustomerService.java
  89. 71
      java/local/src/main/java/cn/toesbieya/jxc/service/SysResourceService.java
  90. 56
      java/local/src/main/java/cn/toesbieya/jxc/service/SysRoleService.java
  91. 58
      java/local/src/main/java/cn/toesbieya/jxc/service/SysSupplierService.java
  92. 95
      java/local/src/main/java/cn/toesbieya/jxc/service/SysUserService.java
  93. 36
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizDocHistoryService.java
  94. 186
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizPurchaseInboundService.java
  95. 142
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizPurchaseOrderService.java
  96. 151
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizSellOrderService.java
  97. 180
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizSellOutboundService.java
  98. 103
      java/local/src/main/java/cn/toesbieya/jxc/service/msg/MsgService.java
  99. 71
      java/local/src/main/java/cn/toesbieya/jxc/service/msg/MsgUserService.java
  100. 121
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysCategoryService.java
  101. Some files were not shown because too many files have changed in this diff Show More

Binary file not shown.

@ -16,7 +16,7 @@
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<mybatis.version>2.1.0</mybatis.version> <mybatis-plus.version>3.3.2</mybatis-plus.version>
<pagehelper.version>1.2.12</pagehelper.version> <pagehelper.version>1.2.12</pagehelper.version>
<socketio.version>1.7.18</socketio.version> <socketio.version>1.7.18</socketio.version>
<guava.version>28.1-jre</guava.version> <guava.version>28.1-jre</guava.version>
@ -56,15 +56,15 @@
</dependency> </dependency>
<!--mysql数据库相关--> <!--mysql数据库相关-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>pagehelper-spring-boot-starter</artifactId>

@ -26,7 +26,7 @@ import java.lang.reflect.Method;
@Order(Integer.MAX_VALUE - 2) @Order(Integer.MAX_VALUE - 2)
public class UserActionAspect { public class UserActionAspect {
@Resource @Resource
private RecService recService; private RecService service;
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.UserAction)&&execution(cn.toesbieya.jxc.model.vo.Result cn.toesbieya.jxc..*.*(..))") @Pointcut("@annotation(cn.toesbieya.jxc.annoation.UserAction)&&execution(cn.toesbieya.jxc.model.vo.Result cn.toesbieya.jxc..*.*(..))")
public void pointCut() { public void pointCut() {
@ -36,10 +36,13 @@ public class UserActionAspect {
@Around("pointCut()") @Around("pointCut()")
public Object around(ProceedingJoinPoint pjp) throws Throwable { public Object around(ProceedingJoinPoint pjp) throws Throwable {
RecUserAction action = ThreadUtil.getAction(); RecUserAction action = ThreadUtil.getAction();
if (action == null) { if (action == null) {
return pjp.proceed(); return pjp.proceed();
} }
action.setTime(System.currentTimeMillis());
MethodSignature signature = (MethodSignature) pjp.getSignature(); MethodSignature signature = (MethodSignature) pjp.getSignature();
Method method = signature.getMethod(); Method method = signature.getMethod();
Object[] args = pjp.getArgs(); Object[] args = pjp.getArgs();
@ -57,12 +60,13 @@ public class UserActionAspect {
Result result = (Result) pjp.proceed(); Result result = (Result) pjp.proceed();
if (result.isSuccess()) { if (result.isSuccess()) {
recService.insertUserAction(action, UserActionEnum.SUCCESS); action.setType(UserActionEnum.SUCCESS.getCode());
} }
else { else {
action.setType(UserActionEnum.FAIL.getCode());
action.setError(result.getMsg()); action.setError(result.getMsg());
recService.insertUserAction(action, UserActionEnum.FAIL);
} }
service.insertUserAction(action);
return result; return result;
} }

@ -0,0 +1,7 @@
package cn.toesbieya.jxc.constant;
public interface DocConstant {
String UPDATE_DOC_LOCK_KEY = "UPDATE_DOC";
String[] DOC_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
String DOC_TYPE_REDIS_KEY = "DOC_ID";
}

@ -1,7 +0,0 @@
package cn.toesbieya.jxc.constant;
public interface DocumentConstant {
String UPDATE_DOCUMENTS_LOCK_KEY = "UPDATE_DOCUMENTS";
String[] DOCUMENT_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
String DOCUMENT_TYPE_REDIS_KEY = "documentsID";
}

@ -1,25 +0,0 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.vo.search.DocumentHistorySearch;
import cn.toesbieya.jxc.service.BizDocumentHistoryService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("document/history")
public class BizDocumentHistoryController {
@Resource
private BizDocumentHistoryService service;
@GetMapping("get")
public Result get(@RequestParam("pid") String pid) {
return Result.success(service.getByPid(pid));
}
@PostMapping("search")
public Result search(@RequestBody DocumentHistorySearch vo) {
return Result.success(service.search(vo));
}
}

@ -18,7 +18,7 @@ import javax.annotation.Resource;
@RequestMapping("record") @RequestMapping("record")
public class RecController { public class RecController {
@Resource @Resource
private RecService recService; private RecService service;
@PostMapping("searchLoginHistory") @PostMapping("searchLoginHistory")
public Result searchLoginHistory(@RequestBody LoginHistorySearch vo) { public Result searchLoginHistory(@RequestBody LoginHistorySearch vo) {
@ -27,7 +27,7 @@ public class RecController {
vo.setUid(user.getId()); vo.setUid(user.getId());
vo.setStartTime(DateUtil.getTimestampBeforeNow(7)); vo.setStartTime(DateUtil.getTimestampBeforeNow(7));
return Result.success(recService.searchLoginHistory(vo)); return Result.success(service.searchLoginHistory(vo));
} }
@PostMapping("searchUserAction") @PostMapping("searchUserAction")
@ -37,6 +37,6 @@ public class RecController {
vo.setUid(user.getId()); vo.setUid(user.getId());
vo.setStartTime(DateUtil.getTimestampBeforeNow(7)); vo.setStartTime(DateUtil.getTimestampBeforeNow(7));
return Result.success(recService.searchUserAction(vo)); return Result.success(service.searchUserAction(vo));
} }
} }

@ -12,25 +12,25 @@ import javax.annotation.Resource;
@RequestMapping("statistic") @RequestMapping("statistic")
public class StatisticController { public class StatisticController {
@Resource @Resource
private StatisticService statisticService; private StatisticService service;
@GetMapping("getFourBlock") @GetMapping("getFourBlock")
public Result getFourBlock() { public Result getFourBlock() {
return Result.success(statisticService.getFourBlock()); return Result.success(service.getFourBlock());
} }
@GetMapping("getDailyProfitStat") @GetMapping("getDailyProfitStat")
public Result getDailyProfitStat() { public Result getDailyProfitStat() {
return Result.success(statisticService.getDailyProfitStat()); return Result.success(service.getDailyProfitStat());
} }
@GetMapping("getDailyFinishOrder") @GetMapping("getDailyFinishOrder")
public Result getDailyFinishOrder() { public Result getDailyFinishOrder() {
return Result.success(statisticService.getDailyFinishOrder()); return Result.success(service.getDailyFinishOrder());
} }
@GetMapping("getTotalProfitGoods") @GetMapping("getTotalProfitGoods")
public Result getTotalProfitGoods() { public Result getTotalProfitGoods() {
return Result.success(statisticService.getTotalProfitGoods()); return Result.success(service.getTotalProfitGoods());
} }
} }

@ -0,0 +1,20 @@
package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.model.vo.search.DocHistorySearch;
import cn.toesbieya.jxc.service.doc.BizDocHistoryService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("doc/history")
public class HistoryController {
@Resource
private BizDocHistoryService service;
@PostMapping("search")
public Result search(@RequestBody DocHistorySearch vo) {
return Result.success(service.search(vo));
}
}

@ -1,14 +1,15 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizPurchaseInbound; import cn.toesbieya.jxc.model.entity.BizPurchaseInbound;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub; import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.model.vo.PurchaseInboundVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch; import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.doc.BizPurchaseInboundService;
import cn.toesbieya.jxc.utils.SessionUtil; import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.service.BizPurchaseInboundService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -19,16 +20,16 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
@RestController @RestController
@RequestMapping("document/purchase/inbound") @RequestMapping("doc/purchase/inbound")
public class BizPurchaseInboundController { public class PurchaseInboundController {
@Resource @Resource
private BizPurchaseInboundService service; private BizPurchaseInboundService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
BizPurchaseInbound inbound = service.getById(id); PurchaseInboundVo vo = service.getById(id);
return inbound == null ? Result.fail("获取单据信息失败") : Result.success(inbound); return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
@ -48,7 +49,7 @@ public class BizPurchaseInboundController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody BizPurchaseInbound vo) { public Result add(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
@ -62,7 +63,7 @@ public class BizPurchaseInboundController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody BizPurchaseInbound vo) { public Result update(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
@ -71,7 +72,7 @@ public class BizPurchaseInboundController {
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody BizPurchaseInbound vo) { public Result commit(@RequestBody PurchaseInboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
@ -89,18 +90,18 @@ public class BizPurchaseInboundController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocumentStatusUpdate vo) { public Result withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocumentStatusUpdate vo) { public Result pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误"); if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误");
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocumentStatusUpdate vo) { public Result reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }

@ -1,13 +1,14 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder; import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub; import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.vo.PurchaseOrderVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch; import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.BizPurchaseOrderService; import cn.toesbieya.jxc.service.doc.BizPurchaseOrderService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.SessionUtil; import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -19,16 +20,16 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
@RestController @RestController
@RequestMapping("document/purchase/order") @RequestMapping("doc/purchase/order")
public class BizPurchaseOrderController { public class PurchaseOrderController {
@Resource @Resource
private BizPurchaseOrderService service; private BizPurchaseOrderService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
BizPurchaseOrder order = service.getById(id); PurchaseOrderVo vo = service.getById(id);
return order == null ? Result.fail("获取单据信息失败") : Result.success(order); return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
@ -48,7 +49,7 @@ public class BizPurchaseOrderController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody BizPurchaseOrder vo) { public Result add(@RequestBody PurchaseOrderVo vo) {
if (vo.getSid() == null if (vo.getSid() == null
|| StringUtils.isEmpty(vo.getSname()) || StringUtils.isEmpty(vo.getSname())
|| vo.getTotal() == null) { || vo.getTotal() == null) {
@ -67,7 +68,7 @@ public class BizPurchaseOrderController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody BizPurchaseOrder vo) { public Result update(@RequestBody PurchaseOrderVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
@ -76,7 +77,7 @@ public class BizPurchaseOrderController {
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody BizPurchaseOrder vo) { public Result commit(@RequestBody PurchaseOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
@ -96,17 +97,17 @@ public class BizPurchaseOrderController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocumentStatusUpdate vo) { public Result withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocumentStatusUpdate vo) { public Result pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocumentStatusUpdate vo) { public Result reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }

@ -1,14 +1,15 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizSellOrder; import cn.toesbieya.jxc.model.entity.BizSellOrder;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub; import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import cn.toesbieya.jxc.utils.SessionUtil; import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.model.vo.SellOrderVo;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.SellOrderSearch; import cn.toesbieya.jxc.model.vo.search.SellOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.BizSellOrderService; import cn.toesbieya.jxc.service.doc.BizSellOrderService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -19,16 +20,16 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
@RestController @RestController
@RequestMapping("document/sell/order") @RequestMapping("doc/sell/order")
public class BizSellOrderController { public class SellOrderController {
@Resource @Resource
private BizSellOrderService service; private BizSellOrderService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
BizSellOrder order = service.getById(id); SellOrderVo vo = service.getById(id);
return order == null ? Result.fail("获取单据信息失败") : Result.success(order); return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
@ -48,7 +49,7 @@ public class BizSellOrderController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody BizSellOrder vo) { public Result add(@RequestBody SellOrderVo vo) {
if (vo.getCustomerId() == null if (vo.getCustomerId() == null
|| StringUtils.isEmpty(vo.getCustomerName()) || StringUtils.isEmpty(vo.getCustomerName())
|| vo.getTotal() == null) { || vo.getTotal() == null) {
@ -68,7 +69,7 @@ public class BizSellOrderController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody BizSellOrder vo) { public Result update(@RequestBody SellOrderVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
@ -77,7 +78,7 @@ public class BizSellOrderController {
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody BizSellOrder vo) { public Result commit(@RequestBody SellOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
@ -98,17 +99,17 @@ public class BizSellOrderController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocumentStatusUpdate vo) { public Result withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocumentStatusUpdate vo) { public Result pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocumentStatusUpdate vo) { public Result reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }

@ -1,14 +1,15 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizSellOutbound; import cn.toesbieya.jxc.model.entity.BizSellOutbound;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SellOutboundVo;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch; import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.BizSellOutboundService; import cn.toesbieya.jxc.service.doc.BizSellOutboundService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -19,16 +20,16 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
@RestController @RestController
@RequestMapping("document/sell/outbound") @RequestMapping("doc/sell/outbound")
public class BizSellOutboundController { public class SellOutboundController {
@Resource @Resource
private BizSellOutboundService service; private BizSellOutboundService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
BizSellOutbound outbound = service.getById(id); SellOutboundVo vo = service.getById(id);
return outbound == null ? Result.fail("获取单据信息失败") : Result.success(outbound); return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
@ -48,7 +49,7 @@ public class BizSellOutboundController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody BizSellOutbound vo) { public Result add(@RequestBody SellOutboundVo vo) {
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
@ -63,7 +64,7 @@ public class BizSellOutboundController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody BizSellOutbound vo) { public Result update(@RequestBody SellOutboundVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
@ -72,7 +73,7 @@ public class BizSellOutboundController {
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody BizSellOutbound vo) { public Result commit(@RequestBody SellOutboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
@ -91,18 +92,18 @@ public class BizSellOutboundController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocumentStatusUpdate vo) { public Result withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocumentStatusUpdate vo) { public Result pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误"); if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误");
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocumentStatusUpdate vo) { public Result reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }

@ -1,30 +1,29 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.msg;
import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.model.entity.Msg; import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.model.vo.search.MsgSearch; import cn.toesbieya.jxc.model.vo.search.MsgSearch;
import cn.toesbieya.jxc.service.msg.MsgService;
import cn.toesbieya.jxc.utils.SessionUtil; import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.service.MsgService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@RestController @RestController
@RequestMapping("message") @RequestMapping("message/manage")
public class MsgController { public class ManageController {
@Resource @Resource
private MsgService msgService; private MsgService service;
@PostMapping("manage/search") @PostMapping("search")
public Result search(@RequestBody MsgSearch vo) { public Result search(@RequestBody MsgSearch vo) {
return Result.success(msgService.search(vo)); return Result.success(service.search(vo));
} }
@PostMapping("manage/add") @PostMapping("add")
public Result add(@RequestBody Msg msg) { public Result add(@RequestBody Msg msg) {
String errMsg = validateAdd(msg); String errMsg = validateAdd(msg);
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
@ -33,19 +32,19 @@ public class MsgController {
setAddInfo(user, msg); setAddInfo(user, msg);
return msgService.add(msg); return service.add(msg);
} }
@PostMapping("manage/update") @PostMapping("update")
public Result update(@RequestBody Msg msg) { public Result update(@RequestBody Msg msg) {
String errMsg = validateAdd(msg); String errMsg = validateAdd(msg);
if (errMsg == null) errMsg = validateUpdate(msg); if (errMsg == null) errMsg = validateUpdate(msg);
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
return msgService.update(msg); return service.update(msg);
} }
@PostMapping("manage/publish") @PostMapping("publish")
public Result publish(@RequestBody Msg msg) { public Result publish(@RequestBody Msg msg) {
boolean isFirstCreate = msg.getId() == null; boolean isFirstCreate = msg.getId() == null;
@ -62,10 +61,10 @@ public class MsgController {
msg.setPtime(System.currentTimeMillis()); msg.setPtime(System.currentTimeMillis());
msg.setStatus(MsgConstant.STATUS_PUBLISHED); msg.setStatus(MsgConstant.STATUS_PUBLISHED);
return msgService.publish(msg); return service.publish(msg);
} }
@PostMapping("manage/withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody Msg msg) { public Result withdraw(@RequestBody Msg msg) {
if (msg.getId() == null) return Result.fail("参数错误"); if (msg.getId() == null) return Result.fail("参数错误");
@ -76,32 +75,12 @@ public class MsgController {
msg.setWtime(System.currentTimeMillis()); msg.setWtime(System.currentTimeMillis());
msg.setStatus(MsgConstant.STATUS_WITHDREW); msg.setStatus(MsgConstant.STATUS_WITHDREW);
return msgService.withdraw(msg); return service.withdraw(msg);
}
@GetMapping("manage/del")
public Result del(@RequestParam Integer id) {
return msgService.del(id);
}
@PostMapping("user/search")
public Result searchPersonal(@RequestBody MsgPersonalSearch vo) {
UserVo user = SessionUtil.get();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
return Result.success(msgService.searchPersonal(vo));
}
@GetMapping("user/read")
public Result read(@RequestParam Integer id) {
return msgService.read(SessionUtil.get(), id);
} }
@GetMapping("user/readAll") @GetMapping("del")
public Result readAll() { public Result del(@RequestParam Integer id, @RequestParam String title) {
return msgService.readAll(SessionUtil.get()); return service.del(id, title);
} }
private void setAddInfo(UserVo user, Msg msg) { private void setAddInfo(UserVo user, Msg msg) {

@ -0,0 +1,35 @@
package cn.toesbieya.jxc.controller.msg;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.service.msg.MsgUserService;
import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController("msgUserController")
@RequestMapping("message/user")
public class UserController {
@Resource
private MsgUserService service;
@PostMapping("search")
public Result searchPersonal(@RequestBody MsgPersonalSearch vo) {
UserVo user = SessionUtil.get();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
return Result.success(service.search(vo));
}
@GetMapping("read")
public Result read(@RequestParam Integer id) {
return service.read(SessionUtil.get(), id);
}
@GetMapping("readAll")
public Result readAll() {
return service.readAll(SessionUtil.get());
}
}

@ -1,8 +1,8 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysCategory; import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch; import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import cn.toesbieya.jxc.service.SysCategoryService; import cn.toesbieya.jxc.service.sys.SysCategoryService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -11,18 +11,18 @@ import javax.annotation.Resource;
@RestController @RestController
@RequestMapping("system/category") @RequestMapping("system/category")
public class SysCategoryController { public class CategoryController {
@Resource @Resource
private SysCategoryService categoryService; private SysCategoryService service;
@GetMapping("getAll") @GetMapping("getAll")
public Result getAll() { public Result getAll() {
return Result.success(categoryService.getAll()); return Result.success(service.getAll());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody CategorySearch vo) { public Result search(@RequestBody CategorySearch vo) {
return Result.success(categoryService.search(vo)); return Result.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
@ -31,7 +31,7 @@ public class SysCategoryController {
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
category.setCtime(System.currentTimeMillis()); category.setCtime(System.currentTimeMillis());
return categoryService.add(category); return service.add(category);
} }
@PostMapping("update") @PostMapping("update")
@ -39,13 +39,13 @@ public class SysCategoryController {
String errMsg = validateCategoryUpdateParam(category); String errMsg = validateCategoryUpdateParam(category);
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return Result.fail(errMsg);
return categoryService.update(category); return service.update(category);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysCategory category) { public Result del(@RequestBody SysCategory category) {
if (category.getId() == null) return Result.fail("删除失败,参数错误"); if (category.getId() == null) return Result.fail("删除失败,参数错误");
return categoryService.del(category); return service.del(category);
} }
private String validateCategoryCreateParam(SysCategory category) { private String validateCategoryCreateParam(SysCategory category) {

@ -1,8 +1,8 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysCustomer; import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch; import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import cn.toesbieya.jxc.service.SysCustomerService; import cn.toesbieya.jxc.service.sys.SysCustomerService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -11,23 +11,18 @@ import javax.annotation.Resource;
@RestController @RestController
@RequestMapping("system/customer") @RequestMapping("system/customer")
public class SysCustomerController { public class CustomerController {
@Resource @Resource
private SysCustomerService customerService; private SysCustomerService service;
@GetMapping("getLimitRegion") @GetMapping("getLimitRegion")
public Result getLimitRegion() { public Result getLimitRegion() {
return Result.success(customerService.getLimitRegion()); return Result.success(service.getLimitRegion());
}
@GetMapping("get")
public Result get() {
return Result.success(customerService.get());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody CustomerSearch vo) { public Result search(@RequestBody CustomerSearch vo) {
return Result.success(customerService.search(vo)); return Result.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
@ -36,7 +31,7 @@ public class SysCustomerController {
if (errMsg != null) return Result.fail("创建失败," + errMsg); if (errMsg != null) return Result.fail("创建失败," + errMsg);
customer.setCtime(System.currentTimeMillis()); customer.setCtime(System.currentTimeMillis());
return customerService.add(customer); return service.add(customer);
} }
@PostMapping("update") @PostMapping("update")
@ -44,13 +39,13 @@ public class SysCustomerController {
String errMsg = validateUpdateParam(customer); String errMsg = validateUpdateParam(customer);
if (errMsg != null) return Result.fail("修改失败," + errMsg); if (errMsg != null) return Result.fail("修改失败," + errMsg);
return customerService.update(customer); return service.update(customer);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysCustomer customer) { public Result del(@RequestBody SysCustomer customer) {
if (customer.getId() == null) return Result.fail("删除失败,参数错误"); if (customer.getId() == null) return Result.fail("删除失败,参数错误");
return customerService.del(customer); return service.del(customer);
} }
private String validateCreateParam(SysCustomer customer) { private String validateCreateParam(SysCustomer customer) {

@ -1,9 +1,9 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.enumeration.GeneralStatusEnum; import cn.toesbieya.jxc.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.model.entity.SysDepartment; import cn.toesbieya.jxc.model.entity.SysDepartment;
import cn.toesbieya.jxc.model.vo.DepartmentVo; import cn.toesbieya.jxc.model.vo.DepartmentVo;
import cn.toesbieya.jxc.service.SysDepartmentService; import cn.toesbieya.jxc.service.sys.SysDepartmentService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -14,13 +14,13 @@ import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("system/department") @RequestMapping("system/department")
public class SysDepartmentController { public class DepartmentController {
@Resource @Resource
private SysDepartmentService departmentService; private SysDepartmentService service;
@GetMapping("get") @GetMapping("get")
public Result get(boolean all) { public Result get(boolean all) {
List<DepartmentVo> list = departmentService.getAll(); List<DepartmentVo> list = service.getAll();
if (!all) { if (!all) {
list = list list = list
.stream() .stream()
@ -37,7 +37,7 @@ public class SysDepartmentController {
|| null == department.getStatus()) { || null == department.getStatus()) {
return Result.fail("添加失败,参数错误"); return Result.fail("添加失败,参数错误");
} }
return departmentService.add(department); return service.add(department);
} }
@PostMapping("update") @PostMapping("update")
@ -48,7 +48,7 @@ public class SysDepartmentController {
|| null == department.getStatus()) { || null == department.getStatus()) {
return Result.fail("修改失败,参数错误"); return Result.fail("修改失败,参数错误");
} }
return departmentService.update(department); return service.update(department);
} }
@PostMapping("del") @PostMapping("del")
@ -56,6 +56,6 @@ public class SysDepartmentController {
if (null == department.getId() || StringUtils.isEmpty(department.getName())) { if (null == department.getId() || StringUtils.isEmpty(department.getName())) {
return Result.fail("删除失败,参数错误"); return Result.fail("删除失败,参数错误");
} }
return departmentService.del(department); return service.del(department);
} }
} }

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysResource; import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.service.SysResourceService; import cn.toesbieya.jxc.service.sys.SysResourceService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -9,18 +9,13 @@ import javax.annotation.Resource;
@RestController @RestController
@RequestMapping("system/resource") @RequestMapping("system/resource")
public class SysResourceController { public class ResourceController {
@Resource @Resource
private SysResourceService resourceService; private SysResourceService service;
@GetMapping("get")
public Result get() {
return Result.success(resourceService.get());
}
@GetMapping("getAll") @GetMapping("getAll")
public Result getAll() { public Result getAll() {
return Result.success(resourceService.getAll()); return Result.success(service.getAll());
} }
@PostMapping("update") @PostMapping("update")
@ -30,6 +25,6 @@ public class SysResourceController {
|| resource.getIpRate() == null) { || resource.getIpRate() == null) {
return Result.fail("参数错误"); return Result.fail("参数错误");
} }
return resourceService.update(resource); return service.update(resource);
} }
} }

@ -1,10 +1,10 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysRole; import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.RoleSearch; import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import cn.toesbieya.jxc.utils.SessionUtil; import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.service.SysRoleService; import cn.toesbieya.jxc.service.sys.SysRoleService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -13,18 +13,18 @@ import javax.annotation.Resource;
@RequestMapping("system/role") @RequestMapping("system/role")
@RestController @RestController
public class SysRoleController { public class RoleController {
@Resource @Resource
private SysRoleService roleService; private SysRoleService service;
@GetMapping("get") @GetMapping("get")
public Result get() { public Result get() {
return Result.success(roleService.get()); return Result.success(service.get());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody RoleSearch vo) { public Result search(@RequestBody RoleSearch vo) {
return Result.success(roleService.search(vo)); return Result.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
@ -40,7 +40,7 @@ public class SysRoleController {
role.setCname(user.getName()); role.setCname(user.getName());
role.setCtime(System.currentTimeMillis()); role.setCtime(System.currentTimeMillis());
return roleService.add(role); return service.add(role);
} }
@PostMapping("update") @PostMapping("update")
@ -50,12 +50,12 @@ public class SysRoleController {
|| role.getStatus() == null) { || role.getStatus() == null) {
return Result.fail("修改失败,参数错误"); return Result.fail("修改失败,参数错误");
} }
return roleService.update(role); return service.update(role);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysRole role) { public Result del(@RequestBody SysRole role) {
if (role.getId() == null) return Result.fail("删除失败,参数错误"); if (role.getId() == null) return Result.fail("删除失败,参数错误");
return roleService.del(role); return service.del(role);
} }
} }

@ -1,8 +1,8 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysSupplier; import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch; import cn.toesbieya.jxc.model.vo.search.SupplierSearch;
import cn.toesbieya.jxc.service.SysSupplierService; import cn.toesbieya.jxc.service.sys.SysSupplierService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -11,23 +11,18 @@ import javax.annotation.Resource;
@RestController @RestController
@RequestMapping("system/supplier") @RequestMapping("system/supplier")
public class SysSupplierController { public class SupplierController {
@Resource @Resource
private SysSupplierService supplierService; private SysSupplierService service;
@GetMapping("getLimitRegion") @GetMapping("getLimitRegion")
public Result getLimitRegion() { public Result getLimitRegion() {
return Result.success(supplierService.getLimitRegion()); return Result.success(service.getLimitRegion());
}
@GetMapping("get")
public Result get() {
return Result.success(supplierService.get());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody SupplierSearch vo) { public Result search(@RequestBody SupplierSearch vo) {
return Result.success(supplierService.search(vo)); return Result.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
@ -35,22 +30,21 @@ public class SysSupplierController {
String errMsg = validateCreateParam(supplier); String errMsg = validateCreateParam(supplier);
if (errMsg != null) return Result.fail("添加失败," + errMsg); if (errMsg != null) return Result.fail("添加失败," + errMsg);
supplier.setId(null);
supplier.setCtime(System.currentTimeMillis()); supplier.setCtime(System.currentTimeMillis());
return supplierService.add(supplier); return service.add(supplier);
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysSupplier supplier) { public Result update(@RequestBody SysSupplier supplier) {
String errMsg = validateUpdateParam(supplier); String errMsg = validateUpdateParam(supplier);
if (errMsg != null) return Result.fail("修改失败," + errMsg); return errMsg == null ? service.update(supplier) : Result.fail("修改失败," + errMsg);
return supplierService.update(supplier);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysSupplier supplier) { public Result del(@RequestBody SysSupplier supplier) {
if (supplier.getId() == null) return Result.fail("删除失败,参数错误"); if (supplier.getId() == null) return Result.fail("删除失败,参数错误");
return supplierService.del(supplier); return service.del(supplier);
} }
private String validateCreateParam(SysSupplier supplier) { private String validateCreateParam(SysSupplier supplier) {

@ -1,10 +1,10 @@
package cn.toesbieya.jxc.controller; package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.RecUserAction; import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.model.entity.SysUser; import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.search.UserSearch; import cn.toesbieya.jxc.model.vo.search.UserSearch;
import cn.toesbieya.jxc.utils.ThreadUtil; import cn.toesbieya.jxc.utils.ThreadUtil;
import cn.toesbieya.jxc.service.SysUserService; import cn.toesbieya.jxc.service.sys.SysUserService;
import cn.toesbieya.jxc.model.vo.Result; import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -16,15 +16,15 @@ import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@RestController @RestController("sysUserController")
@RequestMapping("system/user") @RequestMapping("system/user")
public class SysUserController { public class UserController {
@Resource @Resource
private SysUserService userService; private SysUserService service;
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody UserSearch vo) { public Result search(@RequestBody UserSearch vo) {
return Result.success(userService.search(vo)); return Result.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
@ -33,7 +33,7 @@ public class SysUserController {
if (errMsg != null) { if (errMsg != null) {
return Result.fail(errMsg); return Result.fail(errMsg);
} }
return userService.add(user); return service.add(user);
} }
@PostMapping("update") @PostMapping("update")
@ -42,7 +42,7 @@ public class SysUserController {
if (errMsg != null) { if (errMsg != null) {
return Result.fail(errMsg); return Result.fail(errMsg);
} }
return userService.update(user); return service.update(user);
} }
@PostMapping("del") @PostMapping("del")
@ -50,7 +50,7 @@ public class SysUserController {
if (user.getId() == null) { if (user.getId() == null) {
return Result.fail("删除失败"); return Result.fail("删除失败");
} }
return userService.del(user); return service.del(user);
} }
@PostMapping("kick") @PostMapping("kick")
@ -62,7 +62,7 @@ public class SysUserController {
List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList()); List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList());
action.setAction("踢出用户:【" + String.join(",", names) + "】"); action.setAction("踢出用户:【" + String.join(",", names) + "】");
return userService.kick(users); return service.kick(users);
} }
@PostMapping("resetPwd") @PostMapping("resetPwd")
@ -70,7 +70,7 @@ public class SysUserController {
if (user.getId() == null || StringUtils.isEmpty(user.getName())) { if (user.getId() == null || StringUtils.isEmpty(user.getName())) {
return Result.fail("参数错误"); return Result.fail("参数错误");
} }
return userService.resetPwd(user); return service.resetPwd(user);
} }
private String validateUserCreateParam(SysUser user) { private String validateUserCreateParam(SysUser user) {

@ -20,7 +20,7 @@ import javax.annotation.Resource;
@RestControllerAdvice @RestControllerAdvice
public class GlobalExceptionHandler { public class GlobalExceptionHandler {
@Resource @Resource
private RecService recService; private RecService service;
//抛出异常时希望返回给前台 //抛出异常时希望返回给前台
@ExceptionHandler(JsonResultException.class) @ExceptionHandler(JsonResultException.class)
@ -54,8 +54,10 @@ public class GlobalExceptionHandler {
private void recordUserAction(Exception e) { private void recordUserAction(Exception e) {
RecUserAction action = ThreadUtil.getAction(); RecUserAction action = ThreadUtil.getAction();
if (action != null && !StringUtils.isEmpty(action.getAction())) { if (action != null && !StringUtils.isEmpty(action.getAction())) {
action.setTime(System.currentTimeMillis());
action.setError(Util.exception2Str(e)); action.setError(Util.exception2Str(e));
recService.insertUserAction(action, UserActionEnum.FAIL); action.setType(UserActionEnum.FAIL.getCode());
service.insertUserAction(action);
} }
ThreadUtil.clearAll(); ThreadUtil.clearAll();
} }

@ -0,0 +1,8 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizDocHistory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface BizDocHistoryMapper extends BaseMapper<BizDocHistory> {
}

@ -1,15 +0,0 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizDocumentHistory;
import cn.toesbieya.jxc.model.vo.search.DocumentHistorySearch;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BizDocumentHistoryMapper {
List<BizDocumentHistory> getByPid(@Param("pid") String pid);
List<BizDocumentHistory> search(DocumentHistorySearch vo);
int insert(BizDocumentHistory history);
}

@ -1,33 +1,14 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizPurchaseInbound; import cn.toesbieya.jxc.model.entity.BizPurchaseInbound;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport; import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface BizPurchaseInboundMapper { public interface BizPurchaseInboundMapper extends BaseMapper<BizPurchaseInbound> {
BizPurchaseInbound getById(@Param("id") String id); List<PurchaseInboundExport> export(@Param(Constants.WRAPPER) Wrapper<BizPurchaseInbound> wrapper);
List<BizPurchaseInboundSub> getSubById(@Param("id") String id);
List<BizPurchaseInbound> search(PurchaseInboundSearch vo);
List<PurchaseInboundExport> export(PurchaseInboundSearch vo);
int insert(BizPurchaseInbound param);
void addSub(List<BizPurchaseInboundSub> list);
int update(BizPurchaseInbound param);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);
int reject(@Param("id") String id);
int del(@Param("id") String id);
void delSubByPid(@Param("pid") String pid);
} }

@ -0,0 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BizPurchaseInboundSubMapper extends BaseMapper<BizPurchaseInboundSub> {
void insertBatch(List<BizPurchaseInboundSub> list);
}

@ -1,38 +1,14 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder; import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport; import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
public interface BizPurchaseOrderMapper { public interface BizPurchaseOrderMapper extends BaseMapper<BizPurchaseOrder> {
BizPurchaseOrder getById(@Param("id") String id); List<PurchaseOrderExport> export(@Param(Constants.WRAPPER) Wrapper<BizPurchaseOrder> wrapper);
List<BizPurchaseOrderSub> getSubById(@Param("id") String id);
List<BizPurchaseOrder> search(PurchaseOrderSearch vo);
List<PurchaseOrderExport> export(PurchaseOrderSearch vo);
int insert(BizPurchaseOrder param);
void addSub(List<BizPurchaseOrderSub> list);
int update(BizPurchaseOrder param);
int updateSubRemainNum(@Param("id") Integer id, @Param("remain_num") BigDecimal remain_num);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);
int reject(@Param("id") String id);
int del(@Param("id") String id);
void delSubByPid(@Param("pid") String pid);
int updateFinish(@Param("id") String id, @Param("finish") Integer finish, @Param("ftime") Long ftime);
} }

@ -0,0 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BizPurchaseOrderSubMapper extends BaseMapper<BizPurchaseOrderSub> {
void insertBatch(List<BizPurchaseOrderSub> list);
}

@ -1,38 +1,14 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizSellOrder; import cn.toesbieya.jxc.model.entity.BizSellOrder;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import cn.toesbieya.jxc.model.vo.export.SellOrderExport; import cn.toesbieya.jxc.model.vo.export.SellOrderExport;
import cn.toesbieya.jxc.model.vo.search.SellOrderSearch; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
public interface BizSellOrderMapper { public interface BizSellOrderMapper extends BaseMapper<BizSellOrder> {
BizSellOrder getById(@Param("id") String id); List<SellOrderExport> export(@Param(Constants.WRAPPER) Wrapper<BizSellOrder> wrapper);
List<BizSellOrderSub> getSubById(@Param("id") String id);
List<BizSellOrder> search(SellOrderSearch vo);
List<SellOrderExport> export(SellOrderSearch vo);
int insert(BizSellOrder param);
void addSub(List<BizSellOrderSub> list);
int update(BizSellOrder param);
int updateSubRemainNum(@Param("id") Integer id, @Param("remain_num") BigDecimal remainNum);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);
int reject(@Param("id") String id);
int del(@Param("id") String id);
void delSubByPid(@Param("pid") String pid);
int updateFinish(@Param("id") String id, @Param("finish") Integer finish, @Param("ftime") Long ftime);
} }

@ -0,0 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BizSellOrderSubMapper extends BaseMapper<BizSellOrderSub> {
void insertBatch(List<BizSellOrderSub> list);
}

@ -1,33 +1,14 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.model.entity.BizSellOutbound; import cn.toesbieya.jxc.model.entity.BizSellOutbound;
import cn.toesbieya.jxc.model.vo.export.SellOutboundExport; import cn.toesbieya.jxc.model.vo.export.SellOutboundExport;
import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface BizSellOutboundMapper { public interface BizSellOutboundMapper extends BaseMapper<BizSellOutbound> {
BizSellOutbound getById(@Param("id") String id); List<SellOutboundExport> export(@Param(Constants.WRAPPER) Wrapper<BizSellOutbound> wrapper);
List<BizSellOutboundSub> getSubById(@Param("id") String id);
List<BizSellOutbound> search(SellOutboundSearch vo);
List<SellOutboundExport> export(SellOutboundSearch vo);
int insert(BizSellOutbound param);
void addSub(List<BizSellOutboundSub> list);
int update(BizSellOutbound param);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);
int reject(@Param("id") String id);
int del(@Param("id") String id);
void delSubByPid(@Param("pid") String pid);
} }

@ -0,0 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BizSellOutboundSubMapper extends BaseMapper<BizSellOutboundSub> {
void insertBatch(List<BizSellOutboundSub> list);
}

@ -3,22 +3,20 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizStock; import cn.toesbieya.jxc.model.entity.BizStock;
import cn.toesbieya.jxc.model.vo.export.StockExport; import cn.toesbieya.jxc.model.vo.export.StockExport;
import cn.toesbieya.jxc.model.vo.result.StockSearchResult; import cn.toesbieya.jxc.model.vo.result.StockSearchResult;
import cn.toesbieya.jxc.model.vo.search.StockSearch; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
public interface BizStockMapper { public interface BizStockMapper extends BaseMapper<BizStock> {
List<StockSearchResult> search(StockSearch vo); List<StockSearchResult> search(@Param(Constants.WRAPPER) Wrapper<BizStock> wrapper);
List<BizStock> getDetail(@Param("cids") String cids); List<StockExport> export(@Param(Constants.WRAPPER) Wrapper<BizStock> wrapper);
List<BizStock> getDetailById(@Param("ids") String ids); int insertBatch(@Param("list") List<BizStock> list);
List<StockExport> export(StockSearch vo);
int batchInsert(@Param("list") List<BizStock> list);
int outbound(@Param("id") Integer id, @Param("num") BigDecimal num); int outbound(@Param("id") Integer id, @Param("num") BigDecimal num);
} }

@ -1,28 +1,12 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.Msg; import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.entity.MsgState;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch; import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.model.vo.search.MsgSearch; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface MsgMapper { public interface MsgMapper extends BaseMapper<Msg> {
List<Msg> search(MsgSearch search);
int insert(Msg msg);
int update(Msg msg);
int withdraw(Msg msg);
int del(@Param("id") int id);
int insertState(MsgState state);
boolean checkRead(@Param("mid") int mid, @Param("uid") int uid);
List<Msg> getReadByUser(MsgPersonalSearch search); List<Msg> getReadByUser(MsgPersonalSearch search);
List<Msg> getUnreadByUser(MsgPersonalSearch search); List<Msg> getUnreadByUser(MsgPersonalSearch search);

@ -0,0 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.MsgState;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface MsgStateMapper extends BaseMapper<MsgState> {
}

@ -1,20 +1,10 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.RecAttachment; import cn.toesbieya.jxc.model.entity.RecAttachment;
import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List; import java.util.List;
public interface RecAttachmentMapper { public interface RecAttachmentMapper extends BaseMapper<RecAttachment> {
List<RecAttachment> getByPid(@Param("pid") String pid); int insertBatch(List<RecAttachment> list);
List<String> getUrlByPid(@Param("pid") String pid);
int add(List<RecAttachment> list);
int del(RecAttachment attachment);
int delByPid(@Param("pid") String pid);
int delByUrls(List<String> list);
} }

@ -1,12 +1,7 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.RecLoginHistory; import cn.toesbieya.jxc.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.model.vo.search.LoginHistorySearch; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List; public interface RecLoginHistoryMapper extends BaseMapper<RecLoginHistory> {
public interface RecLoginHistoryMapper {
int insert(RecLoginHistory history);
List<RecLoginHistory> search(LoginHistorySearch vo);
} }

@ -1,12 +1,7 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.RecUserAction; import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.model.vo.search.UserActionSearch; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List; public interface RecUserActionMapper extends BaseMapper<RecUserAction> {
public interface RecUserActionMapper {
void insert(RecUserAction action);
List<RecUserAction> search(UserActionSearch vo);
} }

@ -1,27 +1,9 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysCategory; import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; public interface SysCategoryMapper extends BaseMapper<SysCategory> {
public interface SysCategoryMapper {
List<SysCategory> getAll();
List<SysCategory> search(CategorySearch vo);
SysCategory getById(@Param("id") int id);
int add(SysCategory sysCategory);
int update(SysCategory sysCategory);
int del(@Param("id") int id);
boolean hasChildren(@Param("id") int id);
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
boolean checkIsUse(@Param("cid") Integer cid); boolean checkIsUse(@Param("cid") Integer cid);
} }

@ -2,25 +2,10 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysCustomer; import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult; import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface SysCustomerMapper { public interface SysCustomerMapper extends BaseMapper<SysCustomer> {
List<SysCustomer> get();
SysCustomer getById(int id);
List<SysCustomer> search(CustomerSearch vo);
int add(SysCustomer category);
int update(SysCustomer category);
int del(int id);
List<RegionValueResult> getLimitRegion(); List<RegionValueResult> getLimitRegion();
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
} }

@ -2,20 +2,13 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysDepartment; import cn.toesbieya.jxc.model.entity.SysDepartment;
import cn.toesbieya.jxc.model.vo.DepartmentVo; import cn.toesbieya.jxc.model.vo.DepartmentVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface SysDepartmentMapper { public interface SysDepartmentMapper extends BaseMapper<SysDepartment> {
List<DepartmentVo> selectChildrenById(@Param("id") int id); List<DepartmentVo> selectChildrenById(@Param("id") int id);
List<DepartmentVo> selectParentsById(@Param("id") int id); List<DepartmentVo> selectParentsById(@Param("id") int id);
int insert(SysDepartment department);
int update(SysDepartment department);
int del(@Param("id") int id);
boolean nameExist(@Param("id") Integer id, @Param("pid") int pid, @Param("name") String name);
} }

@ -0,0 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysRegion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SysRegionMapper extends BaseMapper<SysRegion> {
}

@ -1,15 +1,7 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysResource; import cn.toesbieya.jxc.model.entity.SysResource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List; public interface SysResourceMapper extends BaseMapper<SysResource> {
public interface SysResourceMapper {
List<SysResource> get();
List<SysResource> getAll();
List<SysResource> getByRole(int role);
int update(SysResource resource);
} }

@ -1,25 +1,7 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysRole; import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.vo.search.RoleSearch; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; public interface SysRoleMapper extends BaseMapper<SysRole> {
public interface SysRoleMapper {
SysRole selectById(@Param("id") int id);
List<SysRole> get();
List<SysRole> getAll();
List<SysRole> search(RoleSearch vo);
int insert(SysRole role);
int update(SysRole role);
int del(int id);
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
} }

@ -2,25 +2,10 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysSupplier; import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult; import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface SysSupplierMapper { public interface SysSupplierMapper extends BaseMapper<SysSupplier> {
List<SysSupplier> get();
SysSupplier getById(int id);
List<SysSupplier> search(SupplierSearch vo);
int add(SysSupplier category);
int update(SysSupplier category);
int del(int id);
List<RegionValueResult> getLimitRegion(); List<RegionValueResult> getLimitRegion();
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
} }

@ -1,29 +1,7 @@
package cn.toesbieya.jxc.mapper; package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysUser; import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.PasswordUpdateParam; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
import org.apache.ibatis.annotations.Param;
import java.util.List; public interface SysUserMapper extends BaseMapper<SysUser> {
public interface SysUserMapper {
SysUser getByNameAndPwd(@Param("name") String name, @Param("pwd") String pwd);
List<UserVo> search(UserSearch vo);
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
int insert(SysUser user);
int update(SysUser user);
int deleteById(@Param("id") Integer id);
int resetPwd(@Param("id") Integer id, @Param("pwd") String pwd);
int updatePwd(PasswordUpdateParam vo);
int updateAvatar(@Param("id") Integer id, @Param("avatar") String avatar);
} }

@ -2,10 +2,8 @@ package cn.toesbieya.jxc.model.entity;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class BizDocument<T> { public class BizDoc {
private String id; private String id;
private Integer cid; private Integer cid;
private String cname; private String cname;
@ -15,8 +13,4 @@ public class BizDocument<T> {
private Long vtime; private Long vtime;
private Integer status; private Integer status;
private String remark; private String remark;
private List<T> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
} }

@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class BizDocumentHistory { public class BizDocHistory {
private Integer id; private Integer id;
private String pid; private String pid;
private Integer type; private Integer type;

@ -5,7 +5,7 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@Data @Data
public class BizDocumentSub { public class BizDocSub {
private Integer id; private Integer id;
private String pid; private String pid;
private Integer cid; private Integer cid;

@ -7,6 +7,6 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class BizPurchaseInbound extends BizDocument<BizPurchaseInboundSub> { public class BizPurchaseInbound extends BizDoc {
private String pid; private String pid;
} }

@ -7,6 +7,6 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class BizPurchaseInboundSub extends BizDocumentSub { public class BizPurchaseInboundSub extends BizDocSub {
} }

@ -9,7 +9,7 @@ import java.math.BigDecimal;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class BizPurchaseOrder extends BizDocument<BizPurchaseOrderSub> { public class BizPurchaseOrder extends BizDoc {
private Integer sid; private Integer sid;
private String sname; private String sname;
private Integer finish; private Integer finish;

@ -9,7 +9,7 @@ import java.math.BigDecimal;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class BizPurchaseOrderSub extends BizDocumentSub { public class BizPurchaseOrderSub extends BizDocSub {
private BigDecimal price; private BigDecimal price;
private BigDecimal remainNum; private BigDecimal remainNum;
} }

@ -9,7 +9,7 @@ import java.math.BigDecimal;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class BizSellOrder extends BizDocument<BizSellOrderSub> { public class BizSellOrder extends BizDoc {
private Integer customerId; private Integer customerId;
private String customerName; private String customerName;
private Integer finish; private Integer finish;

@ -9,7 +9,7 @@ import java.math.BigDecimal;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class BizSellOrderSub extends BizDocumentSub { public class BizSellOrderSub extends BizDocSub {
private BigDecimal price; private BigDecimal price;
private BigDecimal remainNum; private BigDecimal remainNum;
} }

@ -7,6 +7,6 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class BizSellOutbound extends BizDocument<BizSellOutboundSub> { public class BizSellOutbound extends BizDoc {
private String pid; private String pid;
} }

@ -7,6 +7,6 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class BizSellOutboundSub extends BizDocumentSub { public class BizSellOutboundSub extends BizDocSub {
private Integer sid; private Integer sid;
} }

@ -16,7 +16,6 @@ public class SysCustomer {
private String linkman; private String linkman;
private String linkphone; private String linkphone;
private String region; private String region;
private String regionName;
private Integer status; private Integer status;
private Long ctime; private Long ctime;
private String remark; private String remark;

@ -11,7 +11,6 @@ public class SysResource {
private Integer id; private Integer id;
private Integer pid; private Integer pid;
private String name; private String name;
private String fullname;
private String url; private String url;
private boolean admin = false; private boolean admin = false;
private Long totalRate; private Long totalRate;

@ -10,7 +10,6 @@ public class SysSupplier {
private String linkman; private String linkman;
private String linkphone; private String linkphone;
private String region; private String region;
private String regionName;
private Integer status; private Integer status;
private Long ctime; private Long ctime;
private String remark; private String remark;

@ -0,0 +1,20 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class CustomerVo extends SysCustomer {
private String regionName;
public CustomerVo(SysCustomer parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,27 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.BizPurchaseInbound;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class PurchaseInboundVo extends BizPurchaseInbound {
private List<BizPurchaseInboundSub> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
public PurchaseInboundVo(BizPurchaseInbound parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,27 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class PurchaseOrderVo extends BizPurchaseOrder {
private List<BizPurchaseOrderSub> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
public PurchaseOrderVo(BizPurchaseOrder parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,20 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.SysResource;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ResourceVo extends SysResource {
private String fullname;
public ResourceVo(SysResource parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,27 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.BizSellOrder;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class SellOrderVo extends BizSellOrder {
private List<BizSellOrderSub> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
public SellOrderVo(BizSellOrder parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,27 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.BizSellOutbound;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class SellOutboundVo extends BizSellOutbound {
private List<BizSellOutboundSub> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
public SellOutboundVo(BizSellOutbound parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,20 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class SupplierVo extends SysSupplier {
private String regionName;
public SupplierVo(SysSupplier parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -14,10 +14,15 @@ public class PageResult<T> {
public PageResult(List<T> list) { public PageResult(List<T> list) {
this.list = list; this.list = list;
if (list instanceof Page) { if (list instanceof Page) {
this.total = ((Page) list).getTotal(); this.total = ((Page<T>) list).getTotal();
} }
else { else {
this.total = list.size(); this.total = list.size();
} }
} }
public PageResult(long total, List<T> list) {
this.total = total;
this.list = list;
}
} }

@ -0,0 +1,15 @@
package cn.toesbieya.jxc.model.vo.search;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class DocHistorySearch extends BaseSearch{
private String pid;
private String type;
private String uid;
private String uname;
}

@ -7,7 +7,7 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class DocumentSearch extends BaseSearch { public class DocSearch extends BaseSearch {
private String id; private String id;
private String idFuzzy; private String idFuzzy;
private Integer cid; private Integer cid;

@ -1,11 +0,0 @@
package cn.toesbieya.jxc.model.vo.search;
import lombok.Data;
@Data
public class DocumentHistorySearch {
private String pid;
private String type;
private String uid;
private String uname;
}

@ -7,7 +7,7 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class PurchaseInboundSearch extends DocumentSearch { public class PurchaseInboundSearch extends DocSearch {
private String pid; private String pid;
private String pidFuzzy; private String pidFuzzy;
} }

@ -7,7 +7,7 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class PurchaseOrderSearch extends DocumentSearch { public class PurchaseOrderSearch extends DocSearch {
private Integer sid; private Integer sid;
private String sname; private String sname;
private String finish; private String finish;

@ -7,7 +7,7 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class SellOrderSearch extends DocumentSearch { public class SellOrderSearch extends DocSearch {
private Integer customerId; private Integer customerId;
private String customerName; private String customerName;
private String finish; private String finish;

@ -7,7 +7,7 @@ import lombok.ToString;
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class SellOutboundSearch extends DocumentSearch { public class SellOutboundSearch extends DocSearch {
private String pid; private String pid;
private String pidFuzzy; private String pidFuzzy;
} }

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.model.vo.update;
import lombok.Data; import lombok.Data;
@Data @Data
public class DocumentStatusUpdate { public class DocStatusUpdate {
private String id; private String id;
private String pid; private String pid;
private String info; private String info;

@ -1,8 +1,8 @@
package cn.toesbieya.jxc.module; package cn.toesbieya.jxc.module;
import cn.toesbieya.jxc.model.entity.SysResource; import cn.toesbieya.jxc.model.vo.ResourceVo;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.service.SysResourceService; import cn.toesbieya.jxc.service.sys.SysResourceService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -20,7 +20,7 @@ public class PermissionModule {
private final static ConcurrentHashMap<String, Integer> urlMap = new ConcurrentHashMap<>(128); private final static ConcurrentHashMap<String, Integer> urlMap = new ConcurrentHashMap<>(128);
private final static ConcurrentHashMap<String, Integer> adminUrlMap = new ConcurrentHashMap<>(128); private final static ConcurrentHashMap<String, Integer> adminUrlMap = new ConcurrentHashMap<>(128);
@Resource @Resource
private SysResourceService resourceService; private SysResourceService service;
public static boolean authority(UserVo user, String url) { public static boolean authority(UserVo user, String url) {
if (user.isAdmin() || !needAuthority(url)) { if (user.isAdmin() || !needAuthority(url)) {
@ -44,10 +44,10 @@ public class PermissionModule {
public void init() { public void init() {
Instant start = Instant.now(); Instant start = Instant.now();
List<SysResource> resources = resourceService.getAll(); List<ResourceVo> resources = service.getAll();
if (resources != null) { if (resources != null) {
for (SysResource p : resources) { for (ResourceVo p : resources) {
if (p.isAdmin()) { if (p.isAdmin()) {
adminUrlMap.put(p.getUrl(), p.getId()); adminUrlMap.put(p.getUrl(), p.getId());
} }

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.module.request; package cn.toesbieya.jxc.module.request;
import cn.toesbieya.jxc.model.entity.SysResource; import cn.toesbieya.jxc.model.vo.ResourceVo;
import cn.toesbieya.jxc.service.SysResourceService; import cn.toesbieya.jxc.service.sys.SysResourceService;
import cn.toesbieya.jxc.utils.RedisUtil; import cn.toesbieya.jxc.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -26,7 +26,7 @@ public class RequestModule {
private final static long EXPIRE_SECONDS = 10L; private final static long EXPIRE_SECONDS = 10L;
//url的总访问频率限制 //url的总访问频率限制
private static ConcurrentHashMap<String, RateLimiterHelper> limitMap; private static ConcurrentHashMap<String, RateLimiterHelper> limitMap;
private SysResourceService resourceService; private SysResourceService service;
/** /**
* 未在resource表中配置的不进行限制 * 未在resource表中配置的不进行限制
@ -67,8 +67,8 @@ public class RequestModule {
private void initLimitMap() { private void initLimitMap() {
limitMap = new ConcurrentHashMap<>(); limitMap = new ConcurrentHashMap<>();
List<SysResource> resources = resourceService.getAll(); List<ResourceVo> resources = service.getAll();
for (SysResource resource : resources) { for (ResourceVo resource : resources) {
RateLimiterHelper helper = new RateLimiterHelper(resource.getTotalRate(), resource.getIpRate()); RateLimiterHelper helper = new RateLimiterHelper(resource.getTotalRate(), resource.getIpRate());
limitMap.put(resource.getUrl(), helper); limitMap.put(resource.getUrl(), helper);
} }
@ -80,7 +80,7 @@ public class RequestModule {
} }
@Autowired @Autowired
public void setResourceService(SysResourceService resourceService) { public void setService(SysResourceService service) {
this.resourceService = resourceService; this.service = service;
} }
} }

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.schedule; package cn.toesbieya.jxc.schedule;
import cn.toesbieya.jxc.constant.DocumentConstant; import cn.toesbieya.jxc.constant.DocConstant;
import cn.toesbieya.jxc.utils.DateUtil; import cn.toesbieya.jxc.utils.DateUtil;
import cn.toesbieya.jxc.utils.RedisUtil; import cn.toesbieya.jxc.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -19,7 +19,7 @@ import java.util.Map;
@Component @Component
@Slf4j @Slf4j
@DependsOn("redisUtil") @DependsOn("redisUtil")
public class DocumentTask { public class DocTask {
@PostConstruct @PostConstruct
public void run() { public void run() {
template("初始化单据ID", 0); template("初始化单据ID", 0);
@ -28,25 +28,25 @@ public class DocumentTask {
//每天零点重置单据ID的值 //每天零点重置单据ID的值
@Async("scheduledExecutor") @Async("scheduledExecutor")
@Scheduled(cron = "1 0 0 */1 * ?") @Scheduled(cron = "1 0 0 */1 * ?")
public void autoRefreshDocumentID() { public void autoRefreshDocId() {
template("定时更新单据ID", 1); template("定时更新单据ID", 1);
} }
//启动时初始化单据ID //启动时初始化单据ID
private void initDocumentsID() { private void initDocId() {
String[] fields = new String[DocumentConstant.DOCUMENT_TYPE.length + 1]; String[] fields = new String[DocConstant.DOC_TYPE.length + 1];
fields[0] = "date"; fields[0] = "date";
System.arraycopy(DocumentConstant.DOCUMENT_TYPE, 0, fields, 1, fields.length - 1); System.arraycopy(DocConstant.DOC_TYPE, 0, fields, 1, fields.length - 1);
List<Object> result = RedisUtil.hmget(DocumentConstant.DOCUMENT_TYPE_REDIS_KEY, fields); List<Object> result = RedisUtil.hmget(DocConstant.DOC_TYPE_REDIS_KEY, fields);
long now = DateUtil.getTimestampNow(); long now = DateUtil.getTimestampNow();
//日期不是今天时,更新全部 //日期不是今天时,更新全部
Object firstItem = result.get(0); Object firstItem = result.get(0);
if (null == firstItem || now != (long) firstItem) { if (null == firstItem || now != (long) firstItem) {
updateAllDocument(now); updateAllDoc(now);
log.info("更新【{}】种单据ID成功", DocumentConstant.DOCUMENT_TYPE.length); log.info("更新【{}】种单据ID成功", DocConstant.DOC_TYPE.length);
return; return;
} }
@ -58,31 +58,31 @@ public class DocumentTask {
for (int i = 1; i < resultSize; i++) { for (int i = 1; i < resultSize; i++) {
if (result.get(i) == null) { if (result.get(i) == null) {
updateNum++; updateNum++;
update.put(DocumentConstant.DOCUMENT_TYPE[i - 1], 1); update.put(DocConstant.DOC_TYPE[i - 1], 1);
} }
} }
if (updateNum > 0) { if (updateNum > 0) {
RedisUtil.hmset(DocumentConstant.DOCUMENT_TYPE_REDIS_KEY, update); RedisUtil.hmset(DocConstant.DOC_TYPE_REDIS_KEY, update);
log.info("更新增加的单据【{}】种", updateNum); log.info("更新增加的单据【{}】种", updateNum);
} }
} }
//每种单据的值置为1 //每种单据的值置为1
private void updateAllDocument(long now) { private void updateAllDoc(long now) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("date", now); map.put("date", now);
for (String v : DocumentConstant.DOCUMENT_TYPE) { for (String v : DocConstant.DOC_TYPE) {
map.put(v, 1); map.put(v, 1);
} }
RedisUtil.hmset(DocumentConstant.DOCUMENT_TYPE_REDIS_KEY, map); RedisUtil.hmset(DocConstant.DOC_TYPE_REDIS_KEY, map);
} }
//模板 //模板
private void template(String action, int type) { private void template(String action, int type) {
Instant start = Instant.now(); Instant start = Instant.now();
String lockKey = DocumentConstant.UPDATE_DOCUMENTS_LOCK_KEY; String lockKey = DocConstant.UPDATE_DOC_LOCK_KEY;
try (RedisUtil.Locker locker = new RedisUtil.Locker(lockKey)) { try (RedisUtil.Locker locker = new RedisUtil.Locker(lockKey)) {
if (!locker.lock()) { if (!locker.lock()) {
@ -91,10 +91,10 @@ public class DocumentTask {
} }
if (type == 0) { if (type == 0) {
initDocumentsID(); initDocId();
} }
else { else {
updateAllDocument(DateUtil.getTimestampNow()); updateAllDoc(DateUtil.getTimestampNow());
} }
log.info("{}成功,耗时:{}毫秒", action, ChronoUnit.MILLIS.between(start, Instant.now())); log.info("{}成功,耗时:{}毫秒", action, ChronoUnit.MILLIS.between(start, Instant.now()));

@ -21,11 +21,11 @@ import java.util.Map;
@Slf4j @Slf4j
public class StatisticTask { public class StatisticTask {
@Resource @Resource
private StatisticMapper statisticMapper; private StatisticMapper mapper;
@PostConstruct @PostConstruct
public void run() { public void run() {
this.autoStat(); autoStat();
} }
//每天零点统计信息 //每天零点统计信息
@ -38,23 +38,23 @@ public class StatisticTask {
long today = DateUtil.getTimestampNow(); long today = DateUtil.getTimestampNow();
//检查是否已统计过昨日已完成的订单数 //检查是否已统计过昨日已完成的订单数
if (!statisticMapper.checkDailyFinishOrderExist(lastDay)) { if (!mapper.checkDailyFinishOrderExist(lastDay)) {
Integer lastDayPurchaseOrderFinish = statisticMapper.getPurchaseOrderLastDayFinishOrderNum(); Integer lastDayPurchaseOrderFinish = mapper.getPurchaseOrderLastDayFinishOrderNum();
Integer lastDaySellOrderFinish = statisticMapper.getSellOrderLastDayFinishOrderNum(); Integer lastDaySellOrderFinish = mapper.getSellOrderLastDayFinishOrderNum();
StatFinishOrder param = new StatFinishOrder(); StatFinishOrder param = new StatFinishOrder();
param.setPurchase(lastDayPurchaseOrderFinish); param.setPurchase(lastDayPurchaseOrderFinish);
param.setSell(lastDaySellOrderFinish); param.setSell(lastDaySellOrderFinish);
param.setTime(lastDay); param.setTime(lastDay);
statisticMapper.insertFinishOrder(param); mapper.insertFinishOrder(param);
} }
//检查是否已统计过昨日的采购额、销售额、毛利 //检查是否已统计过昨日的采购额、销售额、毛利
if (!statisticMapper.checkDailyProfitExist(lastDay)) { if (!mapper.checkDailyProfitExist(lastDay)) {
//昨日各个商品的采购额、销售额 //昨日各个商品的采购额、销售额
List<StatProfitGoods> purchaseProfitGoods = statisticMapper.getPurchaseOrderDailyProfitGoods(lastDay, today); List<StatProfitGoods> purchaseProfitGoods = mapper.getPurchaseOrderDailyProfitGoods(lastDay, today);
List<StatProfitGoods> sellProfitGoods = statisticMapper.getSellOrderDailyProfitGoods(lastDay, today); List<StatProfitGoods> sellProfitGoods = mapper.getSellOrderDailyProfitGoods(lastDay, today);
//昨日的采购总额、销售总额 //昨日的采购总额、销售总额
BigDecimal totalPurchase = new BigDecimal(0); BigDecimal totalPurchase = new BigDecimal(0);
@ -104,10 +104,10 @@ public class StatisticTask {
statProfitTotal.setProfit(totalProfit); statProfitTotal.setProfit(totalProfit);
statProfitTotal.setTime(lastDay); statProfitTotal.setTime(lastDay);
statisticMapper.insertProfitTotal(statProfitTotal); mapper.insertProfitTotal(statProfitTotal);
if (purchaseProfitGoods.size() > 0) { if (purchaseProfitGoods.size() > 0) {
statisticMapper.insertProfitGoodsBatch(purchaseProfitGoods); mapper.insertProfitGoodsBatch(purchaseProfitGoods);
} }
} }

@ -4,15 +4,17 @@ import cn.toesbieya.jxc.annoation.TimeCost;
import cn.toesbieya.jxc.annoation.UserAction; import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.GeneralStatusEnum; import cn.toesbieya.jxc.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.enumeration.RecLoginHistoryEnum; import cn.toesbieya.jxc.enumeration.RecLoginHistoryEnum;
import cn.toesbieya.jxc.mapper.SysRoleMapper;
import cn.toesbieya.jxc.mapper.SysUserMapper; import cn.toesbieya.jxc.mapper.SysUserMapper;
import cn.toesbieya.jxc.model.entity.SysResource; import cn.toesbieya.jxc.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.model.entity.SysRole; import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.entity.SysUser; import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.*; import cn.toesbieya.jxc.model.vo.*;
import cn.toesbieya.jxc.service.sys.SysDepartmentService;
import cn.toesbieya.jxc.service.sys.SysResourceService;
import cn.toesbieya.jxc.service.sys.SysRoleService;
import cn.toesbieya.jxc.utils.QiniuUtil; import cn.toesbieya.jxc.utils.QiniuUtil;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.SessionUtil; import cn.toesbieya.jxc.utils.SessionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -30,11 +32,17 @@ public class AccountService {
@Resource @Resource
private SysDepartmentService departmentService; private SysDepartmentService departmentService;
@Resource @Resource
private SysRoleMapper roleMapper; private SysRoleService roleService;
@TimeCost @TimeCost
public Result login(LoginParam param, String ip) { public Result login(LoginParam param, String ip) {
SysUser user = userMapper.getByNameAndPwd(param.getUsername(), param.getPassword()); long now = System.currentTimeMillis();
SysUser user = userMapper.selectOne(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, param.getUsername())
.eq(SysUser::getPwd, param.getPassword())
);
if (user == null) { if (user == null) {
return Result.fail("用户名或密码错误"); return Result.fail("用户名或密码错误");
@ -63,7 +71,7 @@ public class AccountService {
if (roleId != null) { if (roleId != null) {
//获取用户的角色 //获取用户的角色
SysRole role = roleMapper.selectById(roleId); SysRole role = roleService.getRoleById(roleId);
if (role != null) { if (role != null) {
//设置角色名称 //设置角色名称
@ -72,12 +80,12 @@ public class AccountService {
info.setRoleName(roleName); info.setRoleName(roleName);
//获取用户的权限列表 //获取用户的权限列表
List<SysResource> resources = resourceService.getByRole(roleId); List<ResourceVo> resources = resourceService.getResourceByRole(role);
userResourcesUrlMap = new HashMap<>(128); userResourcesUrlMap = new HashMap<>(128);
userResourcesIdSet = new HashSet<>(128); userResourcesIdSet = new HashSet<>(128);
for (SysResource resource : resources) { for (ResourceVo resource : resources) {
Integer resourceId = resource.getId(); Integer resourceId = resource.getId();
userResourcesUrlMap.put(resource.getUrl(), resourceId); userResourcesUrlMap.put(resource.getUrl(), resourceId);
userResourcesIdSet.add(resourceId); userResourcesIdSet.add(resourceId);
@ -110,14 +118,32 @@ public class AccountService {
SessionUtil.save(userVo); SessionUtil.save(userVo);
//记录登陆信息 //记录登陆信息
recService.insertLoginHistory(userVo, ip, RecLoginHistoryEnum.LOGIN); recService.insertLoginHistory(
RecLoginHistory
.builder()
.uid(user.getId())
.uname(user.getName())
.ip(ip)
.type(RecLoginHistoryEnum.LOGIN.getCode())
.time(now)
.build()
);
return Result.success(info); return Result.success(info);
} }
public Result logout(UserVo user, String ip) { public Result logout(UserVo user, String ip) {
if (user != null) { if (user != null) {
recService.insertLoginHistory(user, ip, RecLoginHistoryEnum.LOGOUT); recService.insertLoginHistory(
RecLoginHistory
.builder()
.uid(user.getId())
.uname(user.getName())
.ip(ip)
.type(RecLoginHistoryEnum.LOGOUT.getCode())
.time(System.currentTimeMillis())
.build()
);
SessionUtil.remove(user.getToken()); SessionUtil.remove(user.getToken());
} }
@ -127,7 +153,10 @@ public class AccountService {
public Result register(RegisterParam param) { public Result register(RegisterParam param) {
String name = param.getUsername(); String name = param.getUsername();
if (userMapper.isNameExist(name, null)) { if (userMapper
.selectCount(Wrappers.lambdaQuery(SysUser.class).eq(SysUser::getName, name))
.equals(0)
) {
return Result.fail("该用户名称已存在"); return Result.fail("该用户名称已存在");
} }
@ -145,13 +174,24 @@ public class AccountService {
@UserAction("'修改密码'") @UserAction("'修改密码'")
public Result updatePwd(PasswordUpdateParam param) { public Result updatePwd(PasswordUpdateParam param) {
int rows = userMapper.updatePwd(param); int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getPwd, param.getNewPwd())
.eq(SysUser::getId, param.getId())
.eq(SysUser::getPwd, param.getOldPwd())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请检查原密码是否正确"); return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请检查原密码是否正确");
} }
@UserAction("'修改头像'") @UserAction("'修改头像'")
public Result updateAvatar(UserVo user, String avatar) { public Result updateAvatar(UserVo user, String avatar) {
int rows = userMapper.updateAvatar(user.getId(), avatar); int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getAvatar, avatar)
.eq(SysUser::getId, user.getId())
);
//更新成功后删除云上旧的头像,同时更新redis中的用户信息 //更新成功后删除云上旧的头像,同时更新redis中的用户信息
if (rows > 0) { if (rows > 0) {
@ -159,10 +199,8 @@ public class AccountService {
if (!StringUtils.isEmpty(oldAvatar)) { if (!StringUtils.isEmpty(oldAvatar)) {
QiniuUtil.delete(oldAvatar); QiniuUtil.delete(oldAvatar);
} }
user.setAvatar(avatar); user.setAvatar(avatar);
SessionUtil.save(user); SessionUtil.save(user);
return Result.success("上传头像成功"); return Result.success("上传头像成功");
} }
@ -173,6 +211,11 @@ public class AccountService {
} }
public boolean checkName(String name, Integer id) { public boolean checkName(String name, Integer id) {
return !userMapper.isNameExist(name, id); Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;
} }
} }

@ -1,23 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.model.entity.BizDocumentHistory;
import cn.toesbieya.jxc.model.vo.search.DocumentHistorySearch;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class BizDocumentHistoryService {
@Resource
private BizDocumentHistoryMapper historyMapper;
public List<BizDocumentHistory> search(DocumentHistorySearch vo) {
return historyMapper.search(vo);
}
public List<BizDocumentHistory> getByPid(String pid) {
return historyMapper.getByPid(pid);
}
}

@ -1,15 +1,18 @@
package cn.toesbieya.jxc.service; package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import cn.toesbieya.jxc.model.entity.BizStock; import cn.toesbieya.jxc.model.entity.BizStock;
import cn.toesbieya.jxc.model.vo.export.StockExport; import cn.toesbieya.jxc.model.vo.export.StockExport;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.StockSearchResult; import cn.toesbieya.jxc.model.vo.result.StockSearchResult;
import cn.toesbieya.jxc.model.vo.search.StockSearch; import cn.toesbieya.jxc.model.vo.search.StockSearch;
import cn.toesbieya.jxc.utils.ExcelUtil; import cn.toesbieya.jxc.utils.ExcelUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -19,7 +22,7 @@ import java.util.List;
@Slf4j @Slf4j
public class BizStockService { public class BizStockService {
@Resource @Resource
private BizStockMapper stockMapper; private BizStockMapper mapper;
private final ExcelUtil.CommonMergeOptions mergeOptions = private final ExcelUtil.CommonMergeOptions mergeOptions =
new ExcelUtil.CommonMergeOptions( new ExcelUtil.CommonMergeOptions(
@ -30,19 +33,50 @@ public class BizStockService {
public PageResult<StockSearchResult> search(StockSearch vo) { public PageResult<StockSearchResult> search(StockSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(stockMapper.search(vo)); return new PageResult<>(getByCondition(vo));
} }
public List<StockSearchResult> getByCondition(StockSearch vo) {
return mapper.search(getSearchCondition(vo));
}
@SuppressWarnings("unchecked")
public List<BizStock> getDetail(String cids) { public List<BizStock> getDetail(String cids) {
return stockMapper.getDetail(cids); return mapper.selectList(
Wrappers.lambdaQuery(BizStock.class)
.inSql(!StringUtils.isEmpty(cids), BizStock::getCid, cids)
.gt(BizStock::getNum, 0)
.orderByDesc(BizStock::getCgddid, BizStock::getCgrkid)
);
} }
public List<BizStock> getDetailById(String ids) { public List<BizStock> getDetailById(String ids) {
return stockMapper.getDetailById(ids); return mapper.selectList(
Wrappers.lambdaQuery(BizStock.class)
.inSql(!StringUtils.isEmpty(ids), BizStock::getId, ids)
);
} }
public void export(StockSearch vo, HttpServletResponse response) throws Exception { public void export(StockSearch vo, HttpServletResponse response) throws Exception {
List<StockExport> list = stockMapper.export(vo); List<StockExport> list = mapper.export(getSearchCondition(vo));
ExcelUtil.export(list, response, "库存导出", mergeOptions); ExcelUtil.export(list, response, "库存导出", mergeOptions);
} }
private Wrapper<BizStock> getSearchCondition(StockSearch vo) {
String ids = vo.getIds();
String cids = vo.getCids();
String cgddids = vo.getCgddids();
String cgrkids = vo.getCgrkids();
Long startTime = vo.getStartTime();
Long endTime = vo.getEndTime();
return Wrappers.lambdaQuery(BizStock.class)
.inSql(!StringUtils.isEmpty(ids), BizStock::getId, ids)
.inSql(!StringUtils.isEmpty(cids), BizStock::getCid, cids)
.inSql(!StringUtils.isEmpty(cgddids), BizStock::getCgddid, cgddids)
.inSql(!StringUtils.isEmpty(cgrkids), BizStock::getCgrkid, cgrkids)
.gt(BizStock::getNum, 0)
.ge(startTime != null, BizStock::getCtime, startTime)
.le(endTime != null, BizStock::getCtime, endTime);
}
} }

@ -1,26 +1,29 @@
package cn.toesbieya.jxc.service; package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.enumeration.RecLoginHistoryEnum; import cn.toesbieya.jxc.mapper.RecAttachmentMapper;
import cn.toesbieya.jxc.enumeration.UserActionEnum; import cn.toesbieya.jxc.mapper.RecLoginHistoryMapper;
import cn.toesbieya.jxc.mapper.RecUserActionMapper;
import cn.toesbieya.jxc.model.entity.RecAttachment; import cn.toesbieya.jxc.model.entity.RecAttachment;
import cn.toesbieya.jxc.model.entity.RecLoginHistory; import cn.toesbieya.jxc.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.model.entity.RecUserAction; import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.LoginHistorySearch; import cn.toesbieya.jxc.model.vo.search.LoginHistorySearch;
import cn.toesbieya.jxc.model.vo.search.UserActionSearch; import cn.toesbieya.jxc.model.vo.search.UserActionSearch;
import cn.toesbieya.jxc.utils.IpUtil;
import cn.toesbieya.jxc.utils.QiniuUtil; import cn.toesbieya.jxc.utils.QiniuUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.RecAttachmentMapper;
import cn.toesbieya.jxc.mapper.RecLoginHistoryMapper;
import cn.toesbieya.jxc.mapper.RecUserActionMapper;
import cn.toesbieya.jxc.utils.IpUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
@ -33,55 +36,104 @@ public class RecService {
private RecAttachmentMapper attachmentMapper; private RecAttachmentMapper attachmentMapper;
public PageResult<RecLoginHistory> searchLoginHistory(LoginHistorySearch vo) { public PageResult<RecLoginHistory> searchLoginHistory(LoginHistorySearch vo) {
Integer uid = vo.getUid();
String uname = vo.getUname();
Integer type = vo.getType();
String ip = vo.getIp();
String address = vo.getAddress();
Long startTime = vo.getStartTime();
Long endTime = vo.getEndTime();
Wrapper<RecLoginHistory> wrapper =
Wrappers.lambdaQuery(RecLoginHistory.class)
.eq(uid != null, RecLoginHistory::getUid, uid)
.like(!StringUtils.isEmpty(uname), RecLoginHistory::getUname, vo.getUname())
.eq(type != null, RecLoginHistory::getType, type)
.eq(!StringUtils.isEmpty(ip), RecLoginHistory::getIp, vo.getIp())
.like(!StringUtils.isEmpty(address), RecLoginHistory::getAddress, vo.getAddress())
.ge(startTime != null, RecLoginHistory::getTime, startTime)
.le(endTime != null, RecLoginHistory::getTime, endTime)
.orderByDesc(RecLoginHistory::getTime);
PageHelper.startPage(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<RecLoginHistory> list = loginHistoryMapper.search(vo); return new PageResult<>(loginHistoryMapper.selectList(wrapper));
return new PageResult<>(list);
} }
public PageResult<RecUserAction> searchUserAction(UserActionSearch vo) { public PageResult<RecUserAction> searchUserAction(UserActionSearch vo) {
Integer uid = vo.getUid();
String uname = vo.getUname();
String type = vo.getType();
String ip = vo.getIp();
String url = vo.getUrl();
Long startTime = vo.getStartTime();
Long endTime = vo.getEndTime();
Wrapper<RecUserAction> wrapper =
Wrappers.lambdaQuery(RecUserAction.class)
.eq(uid != null, RecUserAction::getUid, uid)
.like(!StringUtils.isEmpty(uname), RecUserAction::getUname, uname)
.inSql(!StringUtils.isEmpty(type), RecUserAction::getType, type)
.eq(!StringUtils.isEmpty(ip), RecUserAction::getIp, ip)
.eq(!StringUtils.isEmpty(url), RecUserAction::getUrl, url)
.ge(startTime != null, RecUserAction::getTime, startTime)
.le(endTime != null, RecUserAction::getTime, endTime)
.orderByDesc(RecUserAction::getTime);
PageHelper.startPage(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<RecUserAction> list = userActionMapper.search(vo); return new PageResult<>(userActionMapper.selectList(wrapper));
return new PageResult<>(list);
} }
public List<RecAttachment> getAttachmentByPid(String pid) { public List<RecAttachment> getAttachmentByPid(String pid) {
return attachmentMapper.getByPid(pid); if (StringUtils.isEmpty(pid)) {
return Collections.emptyList();
}
return attachmentMapper.selectList(
Wrappers.lambdaQuery(RecAttachment.class)
.eq(RecAttachment::getPid, pid)
.orderByAsc(RecAttachment::getSort)
);
} }
public void handleAttachment(List<RecAttachment> uploadImageList, List<String> deleteImageList) { public void handleAttachment(List<RecAttachment> uploadImageList, List<String> deleteImageList) {
if (uploadImageList != null && uploadImageList.size() > 0) { if (!CollectionUtils.isEmpty(uploadImageList)) {
attachmentMapper.add(uploadImageList); attachmentMapper.insertBatch(uploadImageList);
} }
if (deleteImageList != null && deleteImageList.size() > 0) { if (!CollectionUtils.isEmpty(deleteImageList)) {
attachmentMapper.delByUrls(deleteImageList); attachmentMapper.delete(
QiniuUtil.deleteBatch(deleteImageList.toArray(new String[0])); Wrappers.lambdaQuery(RecAttachment.class)
.in(RecAttachment::getUrl, deleteImageList)
);
QiniuUtil.deleteBatch(deleteImageList);
} }
} }
public void delAttachmentByPid(String pid) { public void delAttachmentByPid(String pid) {
List<String> urls = attachmentMapper.getUrlByPid(pid); List<RecAttachment> list = attachmentMapper.selectList(
if (urls.size() == 0) return; Wrappers.lambdaQuery(RecAttachment.class)
attachmentMapper.delByPid(pid); .eq(RecAttachment::getPid, pid)
QiniuUtil.deleteBatch(urls.toArray(new String[0])); );
if (CollectionUtils.isEmpty(list)) return;
attachmentMapper.delete(Wrappers.lambdaQuery(RecAttachment.class).eq(RecAttachment::getPid, pid));
List<String> urls = list.stream().map(RecAttachment::getUrl).collect(Collectors.toList());
QiniuUtil.deleteBatch(urls);
} }
@Async("dbInsertExecutor") @Async("dbInsertExecutor")
public void insertLoginHistory(UserVo user, String ip, RecLoginHistoryEnum historyEnum) { public void insertLoginHistory(RecLoginHistory history) {
RecLoginHistory history = RecLoginHistory.builder() if (StringUtils.isEmpty(history.getAddress())) {
.uid(user.getId()) history.setAddress(IpUtil.getIpAddress(history.getIp()));
.uname(user.getName()) }
.ip(ip) history.setId(null);
.type(historyEnum.getCode())
.time(System.currentTimeMillis())
.build();
history.setAddress(IpUtil.getIpAddress(ip));
loginHistoryMapper.insert(history); loginHistoryMapper.insert(history);
} }
@Async("dbInsertExecutor") @Async("dbInsertExecutor")
public void insertUserAction(RecUserAction action, UserActionEnum type) { public void insertUserAction(RecUserAction action) {
action.setTime(System.currentTimeMillis()); action.setId(null);
action.setType(type.getCode());
userActionMapper.insert(action); userActionMapper.insert(action);
} }
} }

@ -21,7 +21,7 @@ import java.util.Map;
@Slf4j @Slf4j
public class StatisticService { public class StatisticService {
@Resource @Resource
private StatisticMapper statisticMapper; private StatisticMapper mapper;
//获取首页四个色块的数据,在线用户、今日采购额、今日销售额、今日毛利润 //获取首页四个色块的数据,在线用户、今日采购额、今日销售额、今日毛利润
public FourBlockStat getFourBlock() { public FourBlockStat getFourBlock() {
@ -29,8 +29,8 @@ public class StatisticService {
FourBlockStat stat = new FourBlockStat(); FourBlockStat stat = new FourBlockStat();
BigDecimal purchase = statisticMapper.getPurchaseOrderDailyTotalPurchasePrice(now, null); BigDecimal purchase = mapper.getPurchaseOrderDailyTotalPurchasePrice(now, null);
BigDecimal sell = statisticMapper.getSellOrderDailyTotalPurchasePrice(now, null); BigDecimal sell = mapper.getSellOrderDailyTotalPurchasePrice(now, null);
long onlineNum = WebSocketUtil.getOnlineUserNum(); long onlineNum = WebSocketUtil.getOnlineUserNum();
@ -45,25 +45,25 @@ public class StatisticService {
//获取历史七天的每日采购额、销售额、毛利润 //获取历史七天的每日采购额、销售额、毛利润
public List<StatProfitTotal> getDailyProfitStat() { public List<StatProfitTotal> getDailyProfitStat() {
long lastWeekDay = DateUtil.getTimestampBeforeNow(7); long lastWeekDay = DateUtil.getTimestampBeforeNow(7);
return statisticMapper.searchTotalProfit(lastWeekDay, null); return mapper.searchTotalProfit(lastWeekDay, null);
} }
//获取历史七天已完成的采购订单数、销售订单数 //获取历史七天已完成的采购订单数、销售订单数
public List<StatFinishOrder> getDailyFinishOrder() { public List<StatFinishOrder> getDailyFinishOrder() {
long lastWeekDay = DateUtil.getTimestampBeforeNow(7); long lastWeekDay = DateUtil.getTimestampBeforeNow(7);
return statisticMapper.searchFinishOrder(lastWeekDay, null); return mapper.searchFinishOrder(lastWeekDay, null);
} }
//获取每种商品的采购总额、销售总额、总毛利 //获取每种商品的采购总额、销售总额、总毛利
public Collection<StatProfitGoods> getTotalProfitGoods() { public Collection<StatProfitGoods> getTotalProfitGoods() {
//获取历史的信息 //获取历史的信息
List<StatProfitGoods> history = statisticMapper.getHistoryTotalProfitGoods(); List<StatProfitGoods> history = mapper.getHistoryTotalProfitGoods();
//获取今日的信息 //获取今日的信息
long today = DateUtil.getTimestampNow(); long today = DateUtil.getTimestampNow();
long nextDay = DateUtil.getTimestampBeforeNow(-1); long nextDay = DateUtil.getTimestampBeforeNow(-1);
history.addAll(statisticMapper.getPurchaseOrderDailyProfitGoods(today, nextDay)); history.addAll(mapper.getPurchaseOrderDailyProfitGoods(today, nextDay));
history.addAll(statisticMapper.getSellOrderDailyProfitGoods(today, nextDay)); history.addAll(mapper.getSellOrderDailyProfitGoods(today, nextDay));
Map<Integer, StatProfitGoods> map = new HashMap<>(history.size()); Map<Integer, StatProfitGoods> map = new HashMap<>(history.size());

@ -1,79 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import cn.toesbieya.jxc.mapper.SysCategoryMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysCategoryService {
@Resource
private SysCategoryMapper categoryMapper;
public List<SysCategory> getAll() {
return categoryMapper.getAll();
}
public List<SysCategory> search(CategorySearch vo) {
return categoryMapper.search(vo);
}
@UserAction("'添加分类:'+#category.name")
@Lock("'category'+#category.pid")
public Result add(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("添加失败," + err);
int rows = categoryMapper.add(category);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改分类:'+#category.name")
@Lock("'category'+#category.id")
public Result update(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("修改失败," + err);
int rows = categoryMapper.update(category);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新后重试");
}
@UserAction("'删除分类:'+#category.name")
@Lock("'category'+#category.id")
public Result del(SysCategory category) {
Integer cid = category.getId();
if (categoryMapper.hasChildren(cid)) {
return Result.fail("请先删除该分类下的子节点");
}
if (categoryMapper.checkIsUse(cid)) {
return Result.fail("该分类已在业务中使用,不可删除");
}
int rows = categoryMapper.del(cid);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
}
private String check(SysCategory category) {
if (category.getPid() != 0) {
SysCategory parent = categoryMapper.getById(category.getPid());
if (parent == null || parent.getType() == 1) {
return "父节点状态变更,请刷新后重试";
}
}
if (categoryMapper.isNameExist(category.getName(), category.getId())) {
return String.format("分类【%s】已存在",category.getName());
}
if (category.getId() != null && category.getType() == 1) {
if (categoryMapper.hasChildren(category.getId())) {
return "该分类下存在子节点,不能改为实体类型";
}
}
return null;
}
}

@ -1,58 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.SysCustomerMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysCustomerService {
@Resource
private SysCustomerMapper customerMapper;
public List<RegionValueResult> getLimitRegion() {
return customerMapper.getLimitRegion();
}
public List<SysCustomer> get() {
return customerMapper.get();
}
public PageResult<SysCustomer> search(CustomerSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<SysCustomer> SysCustomers = customerMapper.search(vo);
return new PageResult<>(SysCustomers);
}
@UserAction("'添加客户:'+ #customer.name")
public Result add(SysCustomer customer) {
if (customerMapper.isNameExist(customer.getName(), null)) {
return Result.fail("添加失败,客户【" + customer.getName() + "】已存在");
}
int rows = customerMapper.add(customer);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改客户:'+ #customer.name")
public Result update(SysCustomer customer) {
if (customerMapper.isNameExist(customer.getName(), customer.getId())) {
return Result.fail("修改失败,客户【" + customer.getName() + "】已存在");
}
int rows = customerMapper.update(customer);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
}
@UserAction("删除客户:'+ #customer.name")
public Result del(SysCustomer customer) {
int rows = customerMapper.del(customer.getId());
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
}
}

@ -1,71 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.mapper.SysResourceMapper;
import cn.toesbieya.jxc.module.request.RequestModule;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
@Service
@Slf4j
public class SysResourceService {
@Resource
private SysResourceMapper resourceMapper;
public List<SysResource> get() {
List<SysResource> list = resourceMapper.get();
completeNode(list);
return list;
}
public List<SysResource> getAll() {
List<SysResource> list = resourceMapper.getAll();
completeNode(list);
return list;
}
public List<SysResource> getByRole(int role) {
List<SysResource> list = resourceMapper.getByRole(role);
completeNode(list);
return list;
}
public Result update(SysResource resource) {
int rows = resourceMapper.update(resource);
if (rows > 0) {
RequestModule.updateRate(resource.getUrl(), resource.getTotalRate(), resource.getIpRate());
}
return Result.success("修改成功");
}
private void completeNode(List<SysResource> list) {
HashMap<Integer, String> url = new HashMap<>(128);
HashMap<Integer, String> name = new HashMap<>(128);
for (SysResource resource : list) {
//pid为0时跳过
if (resource.getPid() == 0) {
url.put(resource.getId(), resource.getUrl());
name.put(resource.getId(), resource.getName());
resource.setFullname(resource.getName());
continue;
}
//获取父节点进行拼接
String parentUrl = url.get(resource.getPid());
String parentName = name.get(resource.getPid());
assert !StringUtils.isEmpty(parentUrl) && !StringUtils.isEmpty(parentName);
resource.setUrl(parentUrl + resource.getUrl());
resource.setFullname(parentName + " - " + resource.getName());
url.put(resource.getId(), resource.getUrl());
name.put(resource.getId(), resource.getFullname());
}
}
}

@ -1,56 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.SysRoleMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysRoleService {
@Resource
private SysRoleMapper roleMapper;
public List<SysRole> get() {
return roleMapper.get();
}
public List<SysRole> getAll() {
return roleMapper.getAll();
}
public PageResult<SysRole> search(RoleSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(roleMapper.search(vo));
}
@UserAction("'添加角色:'+#role.name")
public Result add(SysRole role) {
if (roleMapper.isNameExist(role.getName(), null)) {
return Result.fail("添加失败,角色名称重复");
}
int rows = roleMapper.insert(role);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改角色:'+#role.name")
public Result update(SysRole role) {
if (roleMapper.isNameExist(role.getName(), role.getId())) {
return Result.fail("修改失败,角色名称重复");
}
roleMapper.update(role);
return Result.success("修改成功");
}
@UserAction("'删除角色:'+#role.name")
public Result del(SysRole role) {
int rows = roleMapper.del(role.getId());
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
}
}

@ -1,58 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.SysSupplierMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysSupplierService {
@Resource
private SysSupplierMapper supplierMapper;
public List<RegionValueResult> getLimitRegion() {
return supplierMapper.getLimitRegion();
}
public List<SysSupplier> get() {
return supplierMapper.get();
}
public PageResult<SysSupplier> search(SupplierSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<SysSupplier> sysSuppliers = supplierMapper.search(vo);
return new PageResult<>(sysSuppliers);
}
@UserAction("'添加供应商:'+ #supplier.name")
public Result add(SysSupplier supplier) {
if (supplierMapper.isNameExist(supplier.getName(), null)) {
return Result.fail("添加失败,供应商【" + supplier.getName() + "】已存在");
}
int rows = supplierMapper.add(supplier);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改供应商:'+ #supplier.name")
public Result update(SysSupplier supplier) {
if (supplierMapper.isNameExist(supplier.getName(), supplier.getId())) {
return Result.fail("修改失败,供应商【" + supplier.getName() + "】已存在");
}
int rows = supplierMapper.update(supplier);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
}
@UserAction("删除供应商:'+ #supplier.name")
public Result del(SysSupplier supplier) {
int rows = supplierMapper.del(supplier.getId());
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
}
}

@ -1,95 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
import cn.toesbieya.jxc.utils.Util;
import cn.toesbieya.jxc.utils.WebSocketUtil;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.SysUserMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SysUserService {
private static final String DEFAULT_PWD = DigestUtils.md5DigestAsHex("123456".getBytes());
@Resource
private SysUserMapper userMapper;
public PageResult<UserVo> search(UserSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<UserVo> users = userMapper.search(vo);
//当前在线的用户id
Set<Integer> onlineUserIds = WebSocketUtil.getOnlineUserIds();
//设置在线情况
for (UserVo user : users) {
user.setOnline(Util.some(onlineUserIds, i -> user.getId().equals(i)));
}
return new PageResult<>(users);
}
@UserAction("'添加用户:'+#user.name")
public Result add(SysUser user) {
if (userMapper.isNameExist(user.getName(), null)) {
return Result.fail("该用户名称已存在");
}
user.setCtime(System.currentTimeMillis());
user.setPwd(DEFAULT_PWD);
userMapper.insert(user);
return Result.success("添加成功");
}
@UserAction("'修改用户:'+#user.name")
public Result update(SysUser user) {
if (userMapper.isNameExist(user.getName(), user.getId())) {
return Result.fail("该用户名称已存在");
}
userMapper.update(user);
return Result.success("修改成功");
}
@UserAction("'删除用户:'+#user.name")
@Transactional(rollbackFor = Exception.class)
public Result del(SysUser user) {
int rows = userMapper.deleteById(user.getId());
WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除");
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
}
@UserAction
public Result kick(List<SysUser> users) {
WebSocketUtil.sendLogoutEvent(
users
.stream()
.map(SysUser::getId)
.collect(Collectors.toList()),
"你已被强制下线,请重新登陆"
);
return Result.success("踢出成功");
}
@UserAction("'重置用户密码:'+#user.name")
public Result resetPwd(SysUser user) {
int rows = userMapper.resetPwd(user.getId(), DEFAULT_PWD);
return rows > 0 ? Result.success() : Result.fail("重置失败,未匹配到用户");
}
}

@ -0,0 +1,36 @@
package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.mapper.BizDocHistoryMapper;
import cn.toesbieya.jxc.model.entity.BizDocHistory;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.DocHistorySearch;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
@Service
public class BizDocHistoryService {
@Resource
private BizDocHistoryMapper mapper;
public PageResult<BizDocHistory> search(DocHistorySearch vo) {
String pid=vo.getPid();
String type = vo.getType();
String uid = vo.getUid();
String uname = vo.getUname();
Wrapper<BizDocHistory> wrapper = Wrappers.lambdaQuery(BizDocHistory.class)
.eq(!StringUtils.isEmpty(pid), BizDocHistory::getPid, pid)
.inSql(!StringUtils.isEmpty(type), BizDocHistory::getType, type)
.inSql(!StringUtils.isEmpty(uid), BizDocHistory::getUid, uid)
.like(!StringUtils.isEmpty(uname), BizDocHistory::getUname, uname)
.orderByDesc(BizDocHistory::getId);
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mapper.selectList(wrapper));
}
}

@ -1,4 +1,4 @@
package cn.toesbieya.jxc.service; package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.annoation.Lock; import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction; import cn.toesbieya.jxc.annoation.UserAction;
@ -6,20 +6,21 @@ import cn.toesbieya.jxc.enumeration.DocFinishEnum;
import cn.toesbieya.jxc.enumeration.DocHistoryEnum; import cn.toesbieya.jxc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.exception.JsonResultException; import cn.toesbieya.jxc.exception.JsonResultException;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper; import cn.toesbieya.jxc.mapper.*;
import cn.toesbieya.jxc.mapper.BizPurchaseInboundMapper;
import cn.toesbieya.jxc.mapper.BizPurchaseOrderMapper;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import cn.toesbieya.jxc.model.entity.*; import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.PurchaseInboundVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport; import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch; import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.utils.DocumentUtil; import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DocUtil;
import cn.toesbieya.jxc.utils.ExcelUtil; import cn.toesbieya.jxc.utils.ExcelUtil;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.Util; import cn.toesbieya.jxc.utils.Util;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -39,61 +40,72 @@ public class BizPurchaseInboundService {
@Resource @Resource
private BizPurchaseInboundMapper mainMapper; private BizPurchaseInboundMapper mainMapper;
@Resource @Resource
private BizPurchaseInboundSubMapper subMapper;
@Resource
private BizPurchaseOrderMapper orderMapper; private BizPurchaseOrderMapper orderMapper;
@Resource @Resource
private BizDocumentHistoryMapper historyMapper; private BizPurchaseOrderSubMapper orderSubMapper;
@Resource
private BizDocHistoryMapper historyMapper;
@Resource @Resource
private BizStockMapper stockMapper; private BizStockMapper stockMapper;
@Resource @Resource
private RecService recService; private RecService recService;
public BizPurchaseInbound getById(String id) { //组装子表、附件列表的数据
BizPurchaseInbound main = mainMapper.getById(id); public PurchaseInboundVo getById(String id) {
BizPurchaseInbound main = mainMapper.selectById(id);
if (main == null) return null; if (main == null) return null;
main.setData(this.getSubById(id)); PurchaseInboundVo vo = new PurchaseInboundVo(main);
main.setImageList(recService.getAttachmentByPid(id));
return main; vo.setData(getSubById(id));
vo.setImageList(recService.getAttachmentByPid(id));
return vo;
} }
//根据主表ID获取子表
public List<BizPurchaseInboundSub> getSubById(String id) { public List<BizPurchaseInboundSub> getSubById(String id) {
return mainMapper.getSubById(id); return subMapper.selectList(
Wrappers.lambdaQuery(BizPurchaseInboundSub.class)
.eq(BizPurchaseInboundSub::getPid, id)
);
} }
public PageResult<BizPurchaseInbound> search(PurchaseInboundSearch vo) { public PageResult<BizPurchaseInbound> search(PurchaseInboundSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mainMapper.search(vo)); return new PageResult<>(mainMapper.selectList(getSearchCondition(vo)));
} }
public void export(PurchaseInboundSearch vo, HttpServletResponse response) throws Exception { public void export(PurchaseInboundSearch vo, HttpServletResponse response) throws Exception {
List<PurchaseInboundExport> list = mainMapper.export(vo); List<PurchaseInboundExport> list = mainMapper.export(getSearchCondition(vo));
ExcelUtil.exportSimply(list, response, "采购入库单导出"); ExcelUtil.exportSimply(list, response, "采购入库单导出");
} }
@UserAction("'添加采购入库单'") @UserAction("'添加采购入库单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(BizPurchaseInbound doc) { public Result add(PurchaseInboundVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改采购入库单'+#doc.id") @UserAction("'修改采购入库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(BizPurchaseInbound doc) { public Result update(PurchaseInboundVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交采购入库单'+#doc.id") @UserAction("'提交采购入库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(BizPurchaseInbound doc) { public Result commit(PurchaseInboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(doc.getId()) .pid(doc.getId())
.type(DocHistoryEnum.COMMIT.getCode()) .type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid()) .uid(doc.getCid())
@ -111,16 +123,16 @@ public class BizPurchaseInboundService {
@UserAction("'撤回采购入库单'+#vo.id") @UserAction("'撤回采购入库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocumentStatusUpdate vo, UserVo user) { public Result withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (mainMapper.reject(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return Result.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode()) .type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId()) .uid(user.getId())
@ -138,18 +150,27 @@ public class BizPurchaseInboundService {
@UserAction("'通过采购入库单'+#vo.id") @UserAction("'通过采购入库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"}) @Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocumentStatusUpdate vo, UserVo user) { public Result pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
String pid = vo.getPid(); String pid = vo.getPid();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
//检查采购订单状态、入库商品是否符合订单要求 //检查采购订单状态、入库商品是否符合订单要求
List<BizPurchaseInboundSub> inboundSubList = mainMapper.getSubById(vo.getId()); List<BizPurchaseInboundSub> subList = getSubById(id);
String err = checkOrder(vo.getPid(), inboundSubList); String err = checkOrder(pid, subList);
if (err != null) return Result.fail("通过失败," + err); if (err != null) return Result.fail("通过失败," + err);
if (mainMapper.pass(id, user.getId(), user.getName(), now) < 1) { if (1 > mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseInbound.class)
.set(BizPurchaseInbound::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizPurchaseInbound::getVid, user.getId())
.set(BizPurchaseInbound::getVname, user.getName())
.set(BizPurchaseInbound::getVtime, now)
.eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试"); return Result.fail("通过失败,请刷新重试");
} }
@ -157,8 +178,7 @@ public class BizPurchaseInboundService {
List<BizStock> stockList = new ArrayList<>(); List<BizStock> stockList = new ArrayList<>();
DocFinishEnum finish = DocFinishEnum.FINISHED; DocFinishEnum finish = DocFinishEnum.FINISHED;
//使用一级缓存 List<BizPurchaseOrderSub> orderSubList = getOrderSubListByPid(pid);
List<BizPurchaseOrderSub> orderSubList = orderMapper.getSubById(pid);
//生成需要入库的商品列表 //生成需要入库的商品列表
for (BizPurchaseOrderSub orderSub : orderSubList) { for (BizPurchaseOrderSub orderSub : orderSubList) {
@ -166,7 +186,7 @@ public class BizPurchaseInboundService {
continue; continue;
} }
BizPurchaseInboundSub inboundSub = Util.find(inboundSubList, i -> i.getCid().equals(orderSub.getCid())); BizPurchaseInboundSub inboundSub = Util.find(subList, i -> i.getCid().equals(orderSub.getCid()));
if (inboundSub == null) continue; if (inboundSub == null) continue;
@ -185,28 +205,38 @@ public class BizPurchaseInboundService {
} }
//更新采购订单子表的remainNum //更新采购订单子表的remainNum
orderMapper.updateSubRemainNum(orderSub.getId(), gap); orderSubMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrderSub.class)
.set(BizPurchaseOrderSub::getRemainNum, gap)
.eq(BizPurchaseOrderSub::getId, orderSub.getId())
);
} }
//更新采购订单完成情况 //更新采购订单完成情况
if (1 > orderMapper.updateFinish(pid, finish.getCode(), finish == DocFinishEnum.FINISHED ? now : null)) { if (1 > orderMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getFinish, finish.getCode())
.set(BizPurchaseOrder::getFtime, finish == DocFinishEnum.FINISHED ? now : null)
.eq(BizPurchaseOrder::getId, pid)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
)) {
throw new JsonResultException("通过失败,采购订单状态有误,请刷新重试"); throw new JsonResultException("通过失败,采购订单状态有误,请刷新重试");
} }
//插入库存 //插入库存
if (stockList.size() == 0) throw new JsonResultException("通过失败,入库异常"); if (stockList.isEmpty()) throw new JsonResultException("通过失败,入库异常");
stockMapper.batchInsert(stockList); stockMapper.insertBatch(stockList);
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory
.pid(id) .builder()
.type(DocHistoryEnum.PASS.getCode()) .pid(id).type(DocHistoryEnum.PASS.getCode())
.uid(user.getId()) .uid(user.getId()).uname(user.getName())
.uname(user.getName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode()) .statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode()) .statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now) .time(now).info(info)
.info(info)
.build() .build()
); );
@ -216,16 +246,16 @@ public class BizPurchaseInboundService {
@UserAction("'驳回采购入库单'+#vo.id") @UserAction("'驳回采购入库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocumentStatusUpdate vo, UserVo user) { public Result reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (mainMapper.reject(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return Result.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.REJECT.getCode()) .type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId()) .uid(user.getId())
@ -244,24 +274,24 @@ public class BizPurchaseInboundService {
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public Result del(String id) {
if (mainMapper.del(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return Result.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
mainMapper.delSubByPid(id); delSubByPid(id);
recService.delAttachmentByPid(id); recService.delAttachmentByPid(id);
return Result.success("删除成功"); return Result.success("删除成功");
} }
private Result addMain(BizPurchaseInbound doc) { private Result addMain(PurchaseInboundVo doc) {
List<BizPurchaseInboundSub> subList = doc.getData(); List<BizPurchaseInboundSub> subList = doc.getData();
String err = checkOrder(doc.getPid(), subList); String err = checkOrder(doc.getPid(), subList);
if (err != null) return Result.fail(err); if (err != null) return Result.fail(err);
String id = DocumentUtil.getDocumentID("CGRK"); String id = DocUtil.getDocId("CGRK");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return Result.fail("获取单号失败");
@ -273,7 +303,7 @@ public class BizPurchaseInboundService {
subList.forEach(sub -> sub.setPid(id)); subList.forEach(sub -> sub.setPid(id));
mainMapper.insert(doc); mainMapper.insert(doc);
mainMapper.addSub(subList); subMapper.insertBatch(subList);
//插入附件 //插入附件
List<RecAttachment> uploadImageList = doc.getUploadImageList(); List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -287,7 +317,7 @@ public class BizPurchaseInboundService {
return Result.success("添加成功", id); return Result.success("添加成功", id);
} }
private Result updateMain(BizPurchaseInbound doc) { private Result updateMain(PurchaseInboundVo doc) {
String docId = doc.getId(); String docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
@ -295,13 +325,20 @@ public class BizPurchaseInboundService {
if (err != null) return Result.fail(err); if (err != null) return Result.fail(err);
//更新主表 //更新主表
mainMapper.update(doc); mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseInbound.class)
.set(BizPurchaseInbound::getPid, doc.getPid())
.set(BizPurchaseInbound::getStatus, doc.getStatus())
.set(BizPurchaseInbound::getRemark, doc.getRemark())
.eq(BizPurchaseInbound::getId, docId)
);
//删除旧的子表 //删除旧的子表
mainMapper.delSubByPid(docId); delSubByPid(docId);
//插入新的子表 //插入新的子表
mainMapper.addSub(doc.getData()); subMapper.insertBatch(doc.getData());
//附件增删 //附件增删
List<RecAttachment> uploadImageList = doc.getUploadImageList(); List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -317,7 +354,7 @@ public class BizPurchaseInboundService {
//只有拟定状态的单据才能修改 //只有拟定状态的单据才能修改
private String checkUpdateStatus(String id) { private String checkUpdateStatus(String id) {
BizPurchaseInbound doc = mainMapper.getById(id); BizPurchaseInbound doc = mainMapper.selectById(id);
if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) { if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) {
return "单据状态已更新,请刷新后重试"; return "单据状态已更新,请刷新后重试";
} }
@ -326,7 +363,7 @@ public class BizPurchaseInboundService {
//检查采购订单是否已审核、未完成、还有未入库的商品 //检查采购订单是否已审核、未完成、还有未入库的商品
private String checkOrder(String pid, List<BizPurchaseInboundSub> docSubList) { private String checkOrder(String pid, List<BizPurchaseInboundSub> docSubList) {
BizPurchaseOrder order = orderMapper.getById(pid); BizPurchaseOrder order = orderMapper.selectById(pid);
if (order == null if (order == null
|| !order.getStatus().equals(DocStatusEnum.VERIFIED.getCode()) || !order.getStatus().equals(DocStatusEnum.VERIFIED.getCode())
@ -335,7 +372,7 @@ public class BizPurchaseInboundService {
return "采购订单状态异常"; return "采购订单状态异常";
} }
List<BizPurchaseOrderSub> orderSubList = orderMapper.getSubById(pid); List<BizPurchaseOrderSub> orderSubList = getOrderSubListByPid(pid);
if (CollectionUtils.isEmpty(orderSubList)) return "没有找到采购订单的数据"; if (CollectionUtils.isEmpty(orderSubList)) return "没有找到采购订单的数据";
@ -355,4 +392,39 @@ public class BizPurchaseInboundService {
} }
return null; return null;
} }
//根据主表ID删除子表
private void delSubByPid(String pid) {
subMapper.delete(
Wrappers.lambdaQuery(BizPurchaseInboundSub.class)
.eq(BizPurchaseInboundSub::getPid, pid)
);
}
//驳回单据,只有等待审核单据的才能被驳回
private int rejectById(String id) {
return mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseInbound.class)
.set(BizPurchaseInbound::getStatus, DocStatusEnum.DRAFT.getCode())
.eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
);
}
private List<BizPurchaseOrderSub> getOrderSubListByPid(String pid) {
return orderSubMapper.selectList(
Wrappers.lambdaQuery(BizPurchaseOrderSub.class)
.eq(BizPurchaseOrderSub::getPid, pid)
);
}
private Wrapper<BizPurchaseInbound> getSearchCondition(PurchaseInboundSearch vo) {
String pid = vo.getPid();
String pidFuzzy = vo.getPidFuzzy();
return DocUtil.baseCondition(BizPurchaseInbound.class, vo)
.eq(pid != null, BizPurchaseInbound::getPid, pid)
.like(!StringUtils.isEmpty(pidFuzzy), BizPurchaseInbound::getPid, pidFuzzy);
}
} }

@ -1,24 +1,29 @@
package cn.toesbieya.jxc.service; package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.annoation.Lock; import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction; import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.DocHistoryEnum; import cn.toesbieya.jxc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.mapper.BizDocHistoryMapper;
import cn.toesbieya.jxc.mapper.BizPurchaseOrderMapper; import cn.toesbieya.jxc.mapper.BizPurchaseOrderMapper;
import cn.toesbieya.jxc.model.entity.BizDocumentHistory; import cn.toesbieya.jxc.mapper.BizPurchaseOrderSubMapper;
import cn.toesbieya.jxc.model.entity.BizDocHistory;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder; import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub; import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.entity.RecAttachment; import cn.toesbieya.jxc.model.entity.RecAttachment;
import cn.toesbieya.jxc.model.vo.PurchaseOrderVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport; import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch; import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DocUtil;
import cn.toesbieya.jxc.utils.ExcelUtil; import cn.toesbieya.jxc.utils.ExcelUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper;
import cn.toesbieya.jxc.utils.DocumentUtil;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -34,57 +39,66 @@ public class BizPurchaseOrderService {
@Resource @Resource
private BizPurchaseOrderMapper mainMapper; private BizPurchaseOrderMapper mainMapper;
@Resource @Resource
private BizDocumentHistoryMapper historyMapper; private BizPurchaseOrderSubMapper subMapper;
@Resource
private BizDocHistoryMapper historyMapper;
@Resource @Resource
private RecService recService; private RecService recService;
public BizPurchaseOrder getById(String id) { //组装子表、附件列表的数据
BizPurchaseOrder main = mainMapper.getById(id); public PurchaseOrderVo getById(String id) {
BizPurchaseOrder main = mainMapper.selectById(id);
if (main == null) return null; if (main == null) return null;
main.setData(this.getSubById(id)); PurchaseOrderVo vo = new PurchaseOrderVo(main);
main.setImageList(recService.getAttachmentByPid(id));
vo.setData(getSubById(id));
vo.setImageList(recService.getAttachmentByPid(id));
return main; return vo;
} }
//根据主表ID获取子表
public List<BizPurchaseOrderSub> getSubById(String id) { public List<BizPurchaseOrderSub> getSubById(String id) {
return mainMapper.getSubById(id); return subMapper.selectList(
Wrappers.lambdaQuery(BizPurchaseOrderSub.class)
.eq(BizPurchaseOrderSub::getPid, id)
);
} }
public PageResult<BizPurchaseOrder> search(PurchaseOrderSearch vo) { public PageResult<BizPurchaseOrder> search(PurchaseOrderSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mainMapper.search(vo)); return new PageResult<>(mainMapper.selectList(getSearchCondition(vo)));
} }
public void export(PurchaseOrderSearch vo, HttpServletResponse response) throws Exception { public void export(PurchaseOrderSearch vo, HttpServletResponse response) throws Exception {
List<PurchaseOrderExport> list = mainMapper.export(vo); List<PurchaseOrderExport> list = mainMapper.export(getSearchCondition(vo));
ExcelUtil.exportSimply(list, response, "采购订单导出"); ExcelUtil.exportSimply(list, response, "采购订单导出");
} }
@UserAction("'添加采购订单'") @UserAction("'添加采购订单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(BizPurchaseOrder doc) { public Result add(PurchaseOrderVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改采购订单'+#doc.id") @UserAction("'修改采购订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(BizPurchaseOrder doc) { public Result update(PurchaseOrderVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交采购订单'+#doc.id") @UserAction("'提交采购订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(BizPurchaseOrder doc) { public Result commit(PurchaseOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(doc.getId()) .pid(doc.getId())
.type(DocHistoryEnum.COMMIT.getCode()) .type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid()) .uid(doc.getCid())
@ -102,16 +116,16 @@ public class BizPurchaseOrderService {
@UserAction("'撤回采购订单'+#vo.id") @UserAction("'撤回采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocumentStatusUpdate vo, UserVo user) { public Result withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (mainMapper.reject(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return Result.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode()) .type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId()) .uid(user.getId())
@ -129,17 +143,26 @@ public class BizPurchaseOrderService {
@UserAction("'通过采购订单'+#vo.id") @UserAction("'通过采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocumentStatusUpdate vo, UserVo user) { public Result pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (mainMapper.pass(id, user.getId(), user.getName(), now) < 1) { if (0 == mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizPurchaseOrder::getVid, user.getId())
.set(BizPurchaseOrder::getVname, user.getName())
.set(BizPurchaseOrder::getVtime, now)
.eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试"); return Result.fail("通过失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.PASS.getCode()) .type(DocHistoryEnum.PASS.getCode())
.uid(user.getId()) .uid(user.getId())
@ -157,16 +180,16 @@ public class BizPurchaseOrderService {
@UserAction("'驳回采购订单'+#vo.id") @UserAction("'驳回采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocumentStatusUpdate vo, UserVo user) { public Result reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (mainMapper.reject(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return Result.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.REJECT.getCode()) .type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId()) .uid(user.getId())
@ -185,19 +208,19 @@ public class BizPurchaseOrderService {
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public Result del(String id) {
if (mainMapper.del(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return Result.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
mainMapper.delSubByPid(id); delSubByPid(id);
recService.delAttachmentByPid(id); recService.delAttachmentByPid(id);
return Result.success("删除成功"); return Result.success("删除成功");
} }
private Result addMain(BizPurchaseOrder doc) { private Result addMain(PurchaseOrderVo doc) {
String id = DocumentUtil.getDocumentID("CGDD"); String id = DocUtil.getDocId("CGDD");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return Result.fail("获取单号失败");
@ -215,7 +238,7 @@ public class BizPurchaseOrderService {
//插入主表和子表 //插入主表和子表
mainMapper.insert(doc); mainMapper.insert(doc);
mainMapper.addSub(subList); subMapper.insertBatch(subList);
//插入附件 //插入附件
List<RecAttachment> uploadImageList = doc.getUploadImageList(); List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -229,22 +252,31 @@ public class BizPurchaseOrderService {
return Result.success("添加成功", id); return Result.success("添加成功", id);
} }
private Result updateMain(BizPurchaseOrder doc) { private Result updateMain(PurchaseOrderVo doc) {
String docId = doc.getId(); String docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err != null) return Result.fail(err); if (err != null) return Result.fail(err);
//更新主表 //更新主表
mainMapper.update(doc); mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getSid, doc.getSid())
.set(BizPurchaseOrder::getSname, doc.getSname())
.set(BizPurchaseOrder::getStatus, doc.getStatus())
.set(BizPurchaseOrder::getTotal, doc.getTotal())
.set(BizPurchaseOrder::getRemark, doc.getRemark())
.eq(BizPurchaseOrder::getId, docId)
);
//删除旧的子表 //删除旧的子表
mainMapper.delSubByPid(docId); delSubByPid(docId);
//插入新的子表 //插入新的子表
List<BizPurchaseOrderSub> subList = doc.getData(); List<BizPurchaseOrderSub> subList = doc.getData();
subList.forEach(sub -> sub.setRemainNum(sub.getNum())); subList.forEach(sub -> sub.setRemainNum(sub.getNum()));
mainMapper.addSub(subList); subMapper.insertBatch(subList);
//附件增删 //附件增删
List<RecAttachment> uploadImageList = doc.getUploadImageList(); List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -260,10 +292,44 @@ public class BizPurchaseOrderService {
//只有拟定状态的单据才能修改 //只有拟定状态的单据才能修改
private String checkUpdateStatus(String id) { private String checkUpdateStatus(String id) {
BizPurchaseOrder doc = mainMapper.getById(id); BizPurchaseOrder doc = mainMapper.selectById(id);
if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) { if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) {
return "单据状态已更新,请刷新后重试"; return "单据状态已更新,请刷新后重试";
} }
return null; return null;
} }
//根据主表ID删除子表
private void delSubByPid(String pid) {
subMapper.delete(
Wrappers.lambdaQuery(BizPurchaseOrderSub.class)
.eq(BizPurchaseOrderSub::getPid, pid)
);
}
//驳回单据,只有等待审核单据的才能被驳回
private int rejectById(String id) {
return mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getStatus, DocStatusEnum.DRAFT.getCode())
.eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
);
}
private Wrapper<BizPurchaseOrder> getSearchCondition(PurchaseOrderSearch vo) {
Integer sid = vo.getSid();
String sname = vo.getSname();
String finish = vo.getFinish();
Long ftimeStart = vo.getFtimeStart();
Long ftimeEnd = vo.getFtimeEnd();
return DocUtil.baseCondition(BizPurchaseOrder.class, vo)
.eq(sid != null, BizPurchaseOrder::getSid, sid)
.like(!StringUtils.isEmpty(sname), BizPurchaseOrder::getSname, sname)
.inSql(!StringUtils.isEmpty(finish), BizPurchaseOrder::getFinish, finish)
.ge(ftimeStart != null, BizPurchaseOrder::getCtime, ftimeStart)
.le(ftimeEnd != null, BizPurchaseOrder::getCtime, ftimeEnd);
}
} }

@ -1,23 +1,28 @@
package cn.toesbieya.jxc.service; package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.annoation.Lock; import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction; import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.DocHistoryEnum; import cn.toesbieya.jxc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper; import cn.toesbieya.jxc.mapper.BizDocHistoryMapper;
import cn.toesbieya.jxc.mapper.BizSellOrderMapper; import cn.toesbieya.jxc.mapper.BizSellOrderMapper;
import cn.toesbieya.jxc.mapper.BizStockMapper; import cn.toesbieya.jxc.mapper.BizSellOrderSubMapper;
import cn.toesbieya.jxc.model.entity.*; import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SellOrderVo;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.SellOrderExport; import cn.toesbieya.jxc.model.vo.export.SellOrderExport;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.StockSearchResult; import cn.toesbieya.jxc.model.vo.result.StockSearchResult;
import cn.toesbieya.jxc.model.vo.search.SellOrderSearch; import cn.toesbieya.jxc.model.vo.search.SellOrderSearch;
import cn.toesbieya.jxc.model.vo.search.StockSearch; import cn.toesbieya.jxc.model.vo.search.StockSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.utils.DocumentUtil; import cn.toesbieya.jxc.service.BizStockService;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DocUtil;
import cn.toesbieya.jxc.utils.ExcelUtil; import cn.toesbieya.jxc.utils.ExcelUtil;
import cn.toesbieya.jxc.model.vo.Result; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -36,58 +41,68 @@ public class BizSellOrderService {
@Resource @Resource
private BizSellOrderMapper mainMapper; private BizSellOrderMapper mainMapper;
@Resource @Resource
private BizStockMapper stockMapper; private BizSellOrderSubMapper subMapper;
@Resource @Resource
private BizDocumentHistoryMapper historyMapper; private BizDocHistoryMapper historyMapper;
@Resource
private BizStockService stockService;
@Resource @Resource
private RecService recService; private RecService recService;
public BizSellOrder getById(String id) { //组装子表、附件列表的数据
BizSellOrder main = mainMapper.getById(id); public SellOrderVo getById(String id) {
BizSellOrder main = mainMapper.selectById(id);
if (main == null) return null; if (main == null) return null;
main.setData(this.getSubById(id)); SellOrderVo vo = new SellOrderVo(main);
main.setImageList(recService.getAttachmentByPid(id));
return main; vo.setData(getSubById(id));
vo.setImageList(recService.getAttachmentByPid(id));
return vo;
} }
//根据主表ID获取子表
public List<BizSellOrderSub> getSubById(String id) { public List<BizSellOrderSub> getSubById(String id) {
return mainMapper.getSubById(id); return subMapper.selectList(
Wrappers.lambdaQuery(BizSellOrderSub.class)
.eq(BizSellOrderSub::getPid, id)
);
} }
public PageResult<BizSellOrder> search(SellOrderSearch vo) { public PageResult<BizSellOrder> search(SellOrderSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mainMapper.search(vo)); return new PageResult<>(mainMapper.selectList(getSearchCondition(vo)));
} }
public void export(SellOrderSearch vo, HttpServletResponse response) throws Exception { public void export(SellOrderSearch vo, HttpServletResponse response) throws Exception {
List<SellOrderExport> list = mainMapper.export(vo); List<SellOrderExport> list = mainMapper.export(getSearchCondition(vo));
ExcelUtil.exportSimply(list, response, "销售订单导出"); ExcelUtil.exportSimply(list, response, "销售订单导出");
} }
@UserAction("'添加销售订单'") @UserAction("'添加销售订单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(BizSellOrder doc) { public Result add(SellOrderVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改销售订单'+#doc.id") @UserAction("'修改销售订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(BizSellOrder doc) { public Result update(SellOrderVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交销售订单'+#doc.id") @UserAction("'提交销售订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(BizSellOrder doc) { public Result commit(SellOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(doc.getId()) .pid(doc.getId())
.type(DocHistoryEnum.COMMIT.getCode()) .type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid()) .uid(doc.getCid())
@ -105,16 +120,16 @@ public class BizSellOrderService {
@UserAction("'撤回销售订单'+#vo.id") @UserAction("'撤回销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocumentStatusUpdate vo, UserVo user) { public Result withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (mainMapper.reject(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return Result.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode()) .type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId()) .uid(user.getId())
@ -132,17 +147,26 @@ public class BizSellOrderService {
@UserAction("'通过销售订单'+#vo.id") @UserAction("'通过销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocumentStatusUpdate vo, UserVo user) { public Result pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (mainMapper.pass(id, user.getId(), user.getName(), now) < 1) { if (0 == mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizSellOrder::getVid, user.getId())
.set(BizSellOrder::getVname, user.getName())
.set(BizSellOrder::getVtime, now)
.eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试"); return Result.fail("通过失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.PASS.getCode()) .type(DocHistoryEnum.PASS.getCode())
.uid(user.getId()) .uid(user.getId())
@ -160,16 +184,16 @@ public class BizSellOrderService {
@UserAction("'驳回销售订单'+#vo.id") @UserAction("'驳回销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocumentStatusUpdate vo, UserVo user) { public Result reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (mainMapper.reject(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return Result.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.REJECT.getCode()) .type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId()) .uid(user.getId())
@ -188,22 +212,22 @@ public class BizSellOrderService {
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public Result del(String id) {
if (mainMapper.del(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return Result.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
mainMapper.delSubByPid(id); delSubByPid(id);
recService.delAttachmentByPid(id); recService.delAttachmentByPid(id);
return Result.success("删除成功"); return Result.success("删除成功");
} }
private Result addMain(BizSellOrder doc) { private Result addMain(SellOrderVo doc) {
String err = checkStock(doc.getData()); String err = checkStock(doc.getData());
if (err != null) return Result.fail(err); if (err != null) return Result.fail(err);
String id = DocumentUtil.getDocumentID("XSDD"); String id = DocUtil.getDocId("XSDD");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return Result.fail("获取单号失败");
@ -220,7 +244,7 @@ public class BizSellOrderService {
//插入主表和子表 //插入主表和子表
mainMapper.insert(doc); mainMapper.insert(doc);
mainMapper.addSub(subList); subMapper.insertBatch(subList);
//插入附件 //插入附件
List<RecAttachment> uploadImageList = doc.getUploadImageList(); List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -234,7 +258,7 @@ public class BizSellOrderService {
return Result.success("添加成功", id); return Result.success("添加成功", id);
} }
private Result updateMain(BizSellOrder doc) { private Result updateMain(SellOrderVo doc) {
String docId = doc.getId(); String docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
@ -242,15 +266,24 @@ public class BizSellOrderService {
if (err != null) return Result.fail(err); if (err != null) return Result.fail(err);
//更新主表 //更新主表
mainMapper.update(doc); mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getCustomerId, doc.getCustomerId())
.set(BizSellOrder::getCustomerName, doc.getCustomerName())
.set(BizSellOrder::getStatus, doc.getStatus())
.set(BizSellOrder::getTotal, doc.getTotal())
.set(BizSellOrder::getRemark, doc.getRemark())
.eq(BizSellOrder::getId, docId)
);
//删除旧的子表 //删除旧的子表
mainMapper.delSubByPid(docId); delSubByPid(docId);
//插入新的子表 //插入新的子表
List<BizSellOrderSub> subList = doc.getData(); List<BizSellOrderSub> subList = doc.getData();
subList.forEach(sub->sub.setRemainNum(sub.getNum())); subList.forEach(sub -> sub.setRemainNum(sub.getNum()));
mainMapper.addSub(subList); subMapper.insertBatch(subList);
//附件增删 //附件增删
List<RecAttachment> uploadImageList = doc.getUploadImageList(); List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -266,7 +299,7 @@ public class BizSellOrderService {
//只有拟定状态的单据才能修改 //只有拟定状态的单据才能修改
private String checkUpdateStatus(String id) { private String checkUpdateStatus(String id) {
BizSellOrder doc = mainMapper.getById(id); BizSellOrder doc = mainMapper.selectById(id);
if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) { if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) {
return "单据状态已更新,请刷新后重试"; return "单据状态已更新,请刷新后重试";
} }
@ -278,7 +311,7 @@ public class BizSellOrderService {
List<String> cids = list.stream().map(i -> String.valueOf(i.getCid())).collect(Collectors.toList()); List<String> cids = list.stream().map(i -> String.valueOf(i.getCid())).collect(Collectors.toList());
StockSearch vo = new StockSearch(); StockSearch vo = new StockSearch();
vo.setCids(String.join(",", cids)); vo.setCids(String.join(",", cids));
List<StockSearchResult> stockList = stockMapper.search(vo); List<StockSearchResult> stockList = stockService.getByCondition(vo);
//list长度必然大于等于stockList长度 //list长度必然大于等于stockList长度
int subListLength = list.size(); int subListLength = list.size();
@ -288,7 +321,7 @@ public class BizSellOrderService {
return String.format("商品【%s】库存不足", sub.getCname()); return String.format("商品【%s】库存不足", sub.getCname());
} }
list.sort(Comparator.comparing(BizDocumentSub::getCid)); list.sort(Comparator.comparing(BizDocSub::getCid));
stockList.sort(Comparator.comparing(StockSearchResult::getCid)); stockList.sort(Comparator.comparing(StockSearchResult::getCid));
for (int i = 0; i < subListLength; i++) { for (int i = 0; i < subListLength; i++) {
BizSellOrderSub sub = list.get(i); BizSellOrderSub sub = list.get(i);
@ -300,4 +333,38 @@ public class BizSellOrderService {
return null; return null;
} }
//根据主表ID删除子表
private void delSubByPid(String pid) {
subMapper.delete(
Wrappers.lambdaQuery(BizSellOrderSub.class)
.eq(BizSellOrderSub::getPid, pid)
);
}
//驳回单据,只有等待审核单据的才能被驳回
private int rejectById(String id) {
return mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getStatus, DocStatusEnum.DRAFT.getCode())
.eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
);
}
private Wrapper<BizSellOrder> getSearchCondition(SellOrderSearch vo) {
Integer customerId = vo.getCustomerId();
String customerName = vo.getCustomerName();
String finish = vo.getFinish();
Long ftimeStart = vo.getFtimeStart();
Long ftimeEnd = vo.getFtimeEnd();
return DocUtil.baseCondition(BizSellOrder.class, vo)
.eq(customerId != null, BizSellOrder::getCustomerId, customerId)
.like(!StringUtils.isEmpty(customerName), BizSellOrder::getCustomerName, customerName)
.inSql(!StringUtils.isEmpty(finish), BizSellOrder::getFinish, finish)
.ge(ftimeStart != null, BizSellOrder::getCtime, ftimeStart)
.le(ftimeEnd != null, BizSellOrder::getCtime, ftimeEnd);
}
} }

@ -1,4 +1,4 @@
package cn.toesbieya.jxc.service; package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.annoation.Lock; import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction; import cn.toesbieya.jxc.annoation.UserAction;
@ -6,20 +6,22 @@ import cn.toesbieya.jxc.enumeration.DocFinishEnum;
import cn.toesbieya.jxc.enumeration.DocHistoryEnum; import cn.toesbieya.jxc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.exception.JsonResultException; import cn.toesbieya.jxc.exception.JsonResultException;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper; import cn.toesbieya.jxc.mapper.*;
import cn.toesbieya.jxc.mapper.BizSellOrderMapper;
import cn.toesbieya.jxc.mapper.BizSellOutboundMapper;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import cn.toesbieya.jxc.model.entity.*; import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SellOutboundVo;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.SellOutboundExport; import cn.toesbieya.jxc.model.vo.export.SellOutboundExport;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch; import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.utils.DocumentUtil; import cn.toesbieya.jxc.service.BizStockService;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DocUtil;
import cn.toesbieya.jxc.utils.ExcelUtil; import cn.toesbieya.jxc.utils.ExcelUtil;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.Util; import cn.toesbieya.jxc.utils.Util;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -41,9 +43,13 @@ public class BizSellOutboundService {
@Resource @Resource
private BizSellOutboundMapper mainMapper; private BizSellOutboundMapper mainMapper;
@Resource @Resource
private BizSellOutboundSubMapper subMapper;
@Resource
private BizSellOrderMapper orderMapper; private BizSellOrderMapper orderMapper;
@Resource @Resource
private BizDocumentHistoryMapper historyMapper; private BizSellOrderSubMapper orderSubMapper;
@Resource
private BizDocHistoryMapper historyMapper;
@Resource @Resource
private BizStockMapper stockMapper; private BizStockMapper stockMapper;
@Resource @Resource
@ -51,53 +57,60 @@ public class BizSellOutboundService {
@Resource @Resource
private BizStockService stockService; private BizStockService stockService;
public BizSellOutbound getById(String id) { //组装子表、附件列表的数据
BizSellOutbound main = mainMapper.getById(id); public SellOutboundVo getById(String id) {
BizSellOutbound main = mainMapper.selectById(id);
if (main == null) return null; if (main == null) return null;
main.setData(this.getSubById(id)); SellOutboundVo vo = new SellOutboundVo(main);
main.setImageList(recService.getAttachmentByPid(id));
vo.setData(getSubById(id));
vo.setImageList(recService.getAttachmentByPid(id));
return main; return vo;
} }
public List<BizSellOutboundSub> getSubById(String pid) { //根据主表ID获取子表
return mainMapper.getSubById(pid); public List<BizSellOutboundSub> getSubById(String id) {
return subMapper.selectList(
Wrappers.lambdaQuery(BizSellOutboundSub.class)
.eq(BizSellOutboundSub::getPid, id)
);
} }
public PageResult<BizSellOutbound> search(SellOutboundSearch vo) { public PageResult<BizSellOutbound> search(SellOutboundSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mainMapper.search(vo)); return new PageResult<>(mainMapper.selectList(getSearchCondition(vo)));
} }
public void export(SellOutboundSearch vo, HttpServletResponse response) throws Exception { public void export(SellOutboundSearch vo, HttpServletResponse response) throws Exception {
List<SellOutboundExport> list = mainMapper.export(vo); List<SellOutboundExport> list = mainMapper.export(getSearchCondition(vo));
ExcelUtil.exportSimply(list, response, "销售出库单导出"); ExcelUtil.exportSimply(list, response, "销售出库单导出");
} }
@UserAction("'添加销售出库单'") @UserAction("'添加销售出库单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(BizSellOutbound doc) { public Result add(SellOutboundVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改销售出库单'+#doc.id") @UserAction("'修改销售出库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(BizSellOutbound doc) { public Result update(SellOutboundVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交销售出库单'+#doc.id") @UserAction("'提交销售出库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(BizSellOutbound doc) { public Result commit(SellOutboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(doc.getId()) .pid(doc.getId())
.type(DocHistoryEnum.COMMIT.getCode()) .type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid()) .uid(doc.getCid())
@ -115,16 +128,16 @@ public class BizSellOutboundService {
@UserAction("'撤回销售出库单'+#vo.id") @UserAction("'撤回销售出库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocumentStatusUpdate vo, UserVo user) { public Result withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (mainMapper.reject(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return Result.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode()) .type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId()) .uid(user.getId())
@ -142,17 +155,26 @@ public class BizSellOutboundService {
@UserAction("'通过销售出库单'+#vo.id") @UserAction("'通过销售出库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"}) @Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocumentStatusUpdate vo, UserVo user) { public Result pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
String pid = vo.getPid(); String pid = vo.getPid();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
List<BizSellOutboundSub> subList = this.getSubById(vo.getId()); List<BizSellOutboundSub> subList = getSubById(vo.getId());
String err = check(vo.getPid(), subList); String err = check(vo.getPid(), subList);
if (err != null) return Result.fail("通过失败," + err); if (err != null) return Result.fail("通过失败," + err);
if (mainMapper.pass(id, user.getId(), user.getName(), now) < 1) { if (1 > mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOutbound.class)
.set(BizSellOutbound::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizSellOutbound::getVid, user.getId())
.set(BizSellOutbound::getVname, user.getName())
.set(BizSellOutbound::getVtime, now)
.eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试"); return Result.fail("通过失败,请刷新重试");
} }
@ -171,7 +193,7 @@ public class BizSellOutboundService {
//更新销售订单子表的剩余未出库数量,记录销售订单的完成情况 //更新销售订单子表的剩余未出库数量,记录销售订单的完成情况
DocFinishEnum finish = DocFinishEnum.FINISHED; DocFinishEnum finish = DocFinishEnum.FINISHED;
List<BizSellOrderSub> orderSubList = orderMapper.getSubById(pid); List<BizSellOrderSub> orderSubList = getOrderSubListByPid(pid);
for (BizSellOrderSub orderSub : orderSubList) { for (BizSellOrderSub orderSub : orderSubList) {
if (orderSub.getRemainNum().equals(BigDecimal.ZERO)) { if (orderSub.getRemainNum().equals(BigDecimal.ZERO)) {
@ -189,16 +211,29 @@ public class BizSellOutboundService {
finish = DocFinishEnum.UNDERWAY; finish = DocFinishEnum.UNDERWAY;
} }
orderMapper.updateSubRemainNum(orderSub.getId(), gap); //更新采购订单子表的remainNum
orderSubMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrderSub.class)
.set(BizSellOrderSub::getRemainNum, gap)
.eq(BizSellOrderSub::getId, orderSub.getId())
);
} }
//更新销售订单完成情况 //更新销售订单完成情况
if (1 > orderMapper.updateFinish(pid, finish.getCode(), finish == DocFinishEnum.FINISHED ? now : null)) { if (1 > orderMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getFinish, finish.getCode())
.set(BizSellOrder::getFtime, finish == DocFinishEnum.FINISHED ? now : null)
.eq(BizSellOrder::getId, pid)
.eq(BizSellOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
)) {
throw new JsonResultException("通过失败,销售订单状态有误,请刷新重试"); throw new JsonResultException("通过失败,销售订单状态有误,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.PASS.getCode()) .type(DocHistoryEnum.PASS.getCode())
.uid(user.getId()) .uid(user.getId())
@ -216,16 +251,16 @@ public class BizSellOutboundService {
@UserAction("'驳回销售出库单'+#vo.id") @UserAction("'驳回销售出库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocumentStatusUpdate vo, UserVo user) { public Result reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (mainMapper.reject(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return Result.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
BizDocumentHistory.builder() BizDocHistory.builder()
.pid(id) .pid(id)
.type(DocHistoryEnum.REJECT.getCode()) .type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId()) .uid(user.getId())
@ -244,24 +279,24 @@ public class BizSellOutboundService {
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public Result del(String id) {
if (mainMapper.del(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return Result.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
mainMapper.delSubByPid(id); delSubByPid(id);
recService.delAttachmentByPid(id); recService.delAttachmentByPid(id);
return Result.success("删除成功"); return Result.success("删除成功");
} }
private Result addMain(BizSellOutbound doc) { private Result addMain(SellOutboundVo doc) {
List<BizSellOutboundSub> subList = doc.getData(); List<BizSellOutboundSub> subList = doc.getData();
String err = check(doc.getPid(), subList); String err = check(doc.getPid(), subList);
if (err != null) return Result.fail(err); if (err != null) return Result.fail(err);
String id = DocumentUtil.getDocumentID("XSCK"); String id = DocUtil.getDocId("XSCK");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return Result.fail("获取单号失败");
@ -269,10 +304,11 @@ public class BizSellOutboundService {
doc.setId(id); doc.setId(id);
//设置子表的pid
subList.forEach(sub -> sub.setPid(id)); subList.forEach(sub -> sub.setPid(id));
mainMapper.insert(doc); mainMapper.insert(doc);
mainMapper.addSub(subList); subMapper.insertBatch(subList);
//插入附件 //插入附件
List<RecAttachment> uploadImageList = doc.getUploadImageList(); List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -286,17 +322,30 @@ public class BizSellOutboundService {
return Result.success("添加成功", id); return Result.success("添加成功", id);
} }
private Result updateMain(BizSellOutbound doc) { private Result updateMain(SellOutboundVo doc) {
String docId = doc.getId(); String docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err == null) err = check(doc.getPid(), doc.getData()); if (err == null) err = check(doc.getPid(), doc.getData());
if (err != null) return Result.fail(err); if (err != null) return Result.fail(err);
mainMapper.update(doc); //更新主表
mainMapper.delSubByPid(docId); mainMapper.update(
mainMapper.addSub(doc.getData()); null,
Wrappers.lambdaUpdate(BizSellOutbound.class)
.set(BizSellOutbound::getPid, doc.getPid())
.set(BizSellOutbound::getStatus, doc.getStatus())
.set(BizSellOutbound::getRemark, doc.getRemark())
.eq(BizSellOutbound::getId, docId)
);
//删除旧的子表
delSubByPid(docId);
//插入新的子表
subMapper.insertBatch(doc.getData());
//附件增删
List<RecAttachment> uploadImageList = doc.getUploadImageList(); List<RecAttachment> uploadImageList = doc.getUploadImageList();
Long time = System.currentTimeMillis(); Long time = System.currentTimeMillis();
for (RecAttachment attachment : uploadImageList) { for (RecAttachment attachment : uploadImageList) {
@ -310,7 +359,7 @@ public class BizSellOutboundService {
//只有拟定状态的单据才能修改 //只有拟定状态的单据才能修改
private String checkUpdateStatus(String id) { private String checkUpdateStatus(String id) {
BizSellOutbound doc = mainMapper.getById(id); BizSellOutbound doc = mainMapper.selectById(id);
if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) { if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) {
return "单据状态已更新,请刷新后重试"; return "单据状态已更新,请刷新后重试";
} }
@ -319,7 +368,7 @@ public class BizSellOutboundService {
//添加、修改、通过前都需要检查 //添加、修改、通过前都需要检查
private String check(String pid, List<BizSellOutboundSub> docSubList) { private String check(String pid, List<BizSellOutboundSub> docSubList) {
BizSellOrder order = orderMapper.getById(pid); BizSellOrder order = orderMapper.selectById(pid);
//检查销售订单是否已审核、未完成 //检查销售订单是否已审核、未完成
if (order == null if (order == null
@ -329,14 +378,14 @@ public class BizSellOutboundService {
return "销售订单状态异常"; return "销售订单状态异常";
} }
List<BizSellOrderSub> orderSubList = orderMapper.getSubById(pid); List<BizSellOrderSub> orderSubList = getOrderSubListByPid(pid);
if (CollectionUtils.isEmpty(orderSubList)) { if (CollectionUtils.isEmpty(orderSubList)) {
return "没有找到销售订单的数据"; return "没有找到销售订单的数据";
} }
//按分类统计商品的出库数量 //按分类统计商品的出库数量
Map<Integer, BigDecimal> outboundCount = this.getOutboundCount(docSubList); Map<Integer, BigDecimal> outboundCount = getOutboundCount(docSubList);
String[] cids = new String[outboundCount.size()]; String[] cids = new String[outboundCount.size()];
@ -370,6 +419,41 @@ public class BizSellOutboundService {
return null; return null;
} }
//根据主表ID删除子表
private void delSubByPid(String pid) {
subMapper.delete(
Wrappers.lambdaQuery(BizSellOutboundSub.class)
.eq(BizSellOutboundSub::getPid, pid)
);
}
//驳回单据,只有等待审核单据的才能被驳回
private int rejectById(String id) {
return mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOutbound.class)
.set(BizSellOutbound::getStatus, DocStatusEnum.DRAFT.getCode())
.eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
);
}
private List<BizSellOrderSub> getOrderSubListByPid(String pid) {
return orderSubMapper.selectList(
Wrappers.lambdaQuery(BizSellOrderSub.class)
.eq(BizSellOrderSub::getPid, pid)
);
}
private Wrapper<BizSellOutbound> getSearchCondition(SellOutboundSearch vo) {
String pid = vo.getPid();
String pidFuzzy = vo.getPidFuzzy();
return DocUtil.baseCondition(BizSellOutbound.class, vo)
.eq(pid != null, BizSellOutbound::getPid, pid)
.like(!StringUtils.isEmpty(pidFuzzy), BizSellOutbound::getPid, pidFuzzy);
}
private Map<Integer, BigDecimal> getOutboundCount(List<BizSellOutboundSub> list) { private Map<Integer, BigDecimal> getOutboundCount(List<BizSellOutboundSub> list) {
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
return new HashMap<>(); return new HashMap<>();

@ -1,19 +1,18 @@
package cn.toesbieya.jxc.service; package cn.toesbieya.jxc.service.msg;
import cn.toesbieya.jxc.annoation.UserAction; import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.constant.MsgConstant; import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.constant.SocketConstant; import cn.toesbieya.jxc.constant.SocketConstant;
import cn.toesbieya.jxc.mapper.MsgMapper;
import cn.toesbieya.jxc.model.entity.Msg; import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.entity.MsgState; import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SocketEventVo; import cn.toesbieya.jxc.model.vo.SocketEventVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.model.vo.search.MsgSearch; import cn.toesbieya.jxc.model.vo.search.MsgSearch;
import cn.toesbieya.jxc.utils.WebSocketUtil; import cn.toesbieya.jxc.utils.WebSocketUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.MsgMapper;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -27,23 +26,49 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class MsgService { public class MsgService {
@Resource @Resource
private MsgMapper msgMapper; private MsgMapper mapper;
public PageResult<Msg> search(MsgSearch vo) { public PageResult<Msg> search(MsgSearch vo) {
String title = vo.getTitle();
String type = vo.getType();
String status = vo.getStatus();
Wrapper<Msg> wrapper =
Wrappers.lambdaQuery(Msg.class)
.like(!StringUtils.isEmpty(title), Msg::getTitle, title)
.inSql(!StringUtils.isEmpty(type), Msg::getType, type)
.inSql(!StringUtils.isEmpty(status), Msg::getStatus, status)
.orderByDesc(Msg::getId);
PageHelper.startPage(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<Msg> list = msgMapper.search(vo); return new PageResult<>(mapper.selectList(wrapper));
return new PageResult<>(list);
} }
@UserAction("'添加消息:'+#msg.title") @UserAction("'添加消息:'+#msg.title")
public Result add(Msg msg) { public Result add(Msg msg) {
msgMapper.insert(msg); mapper.insert(msg);
return Result.success("添加成功", msg); return Result.success("添加成功", msg);
} }
@UserAction("'修改消息:'+#msg.title") @UserAction("'修改消息:'+#msg.title")
public Result update(Msg msg) { public Result update(Msg msg) {
int rows = msgMapper.update(msg); int rows = mapper.update(
null,
Wrappers.lambdaUpdate(Msg.class)
.set(Msg::getTitle, msg.getTitle())
.set(Msg::getContent, msg.getContent())
.set(Msg::getType, msg.getType())
.set(Msg::getPid, msg.getPid())
.set(Msg::getPname, msg.getPname())
.set(Msg::getPtime, msg.getPtime())
.set(Msg::getWid, msg.getWid())
.set(Msg::getWname, msg.getWname())
.set(Msg::getWtime, msg.getWtime())
.set(Msg::getStatus, msg.getStatus())
.set(Msg::getBroadcast, msg.getBroadcast())
.set(Msg::getRecipient, msg.getRecipient())
.eq(Msg::getId, msg.getId())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试"); return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
} }
@ -59,6 +84,7 @@ public class MsgService {
SocketEventVo eventVo = new SocketEventVo(); SocketEventVo eventVo = new SocketEventVo();
eventVo.setEvent(SocketConstant.EVENT_NEW_MESSAGE); eventVo.setEvent(SocketConstant.EVENT_NEW_MESSAGE);
//发送websocket消息
if (msg.getBroadcast().equals(MsgConstant.TO_ALL)) { if (msg.getBroadcast().equals(MsgConstant.TO_ALL)) {
eventVo.setType(SocketConstant.REDIS_EVENT_BROADCAST); eventVo.setType(SocketConstant.REDIS_EVENT_BROADCAST);
WebSocketUtil.sendEvent(eventVo); WebSocketUtil.sendEvent(eventVo);
@ -82,51 +108,24 @@ public class MsgService {
return result; return result;
} }
@UserAction("'撤回消息:'+#msg.title")
public Result withdraw(Msg msg) { public Result withdraw(Msg msg) {
int rows = msgMapper.withdraw(msg); int rows = mapper.update(
null,
Wrappers.lambdaUpdate(Msg.class)
.set(Msg::getStatus, msg.getStatus())
.set(Msg::getWid, msg.getWid())
.set(Msg::getWname, msg.getWname())
.set(Msg::getWtime, msg.getWtime())
.eq(Msg::getId, msg.getId())
.eq(Msg::getStatus, msg.getStatus())
);
return rows > 0 ? Result.success("撤回成功", msg) : Result.fail("撤回失败,请刷新重试"); return rows > 0 ? Result.success("撤回成功", msg) : Result.fail("撤回失败,请刷新重试");
} }
public Result del(int id) { @UserAction("'删除消息:'+#title")
int rows = msgMapper.del(id); public Result del(int id, String title) {
int rows = mapper.deleteById(id);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试"); return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
} }
public PageResult<Msg> searchPersonal(MsgPersonalSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<Msg> list = vo.isUnread() ? msgMapper.getUnreadByUser(vo) : msgMapper.getReadByUser(vo);
return new PageResult<>(list);
}
public Result read(UserVo user, int id) {
if (msgMapper.checkRead(id, user.getId())) {
return Result.success();
}
MsgState state = new MsgState();
state.setMid(id);
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
return Result.success(msgMapper.insertState(state));
}
public Result readAll(UserVo user) {
MsgPersonalSearch vo = new MsgPersonalSearch();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
MsgState state = new MsgState();
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
List<Msg> list = msgMapper.getUnreadByUser(vo);
for (Msg msg : list) {
state.setMid(msg.getId());
msgMapper.insertState(state);
}
return Result.success();
}
} }

@ -0,0 +1,71 @@
package cn.toesbieya.jxc.service.msg;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.mapper.MsgMapper;
import cn.toesbieya.jxc.mapper.MsgStateMapper;
import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.entity.MsgState;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class MsgUserService {
@Resource
private MsgMapper msgMapper;
@Resource
private MsgStateMapper msgStateMapper;
public PageResult<Msg> search(MsgPersonalSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<Msg> list = vo.isUnread() ? msgMapper.getUnreadByUser(vo) : msgMapper.getReadByUser(vo);
return new PageResult<>(list);
}
public Result read(SysUser user, int id) {
//如果该消息已读,直接返回
if (!msgStateMapper
.selectCount(
Wrappers.lambdaQuery(MsgState.class)
.eq(MsgState::getId, id)
.eq(MsgState::getMid, user.getId())
)
.equals(0)) {
return Result.success();
}
MsgState state = new MsgState();
state.setMid(id);
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
return Result.success(msgStateMapper.insert(state));
}
@UserAction("'清空所有未读消息'")
public Result readAll(SysUser user) {
MsgPersonalSearch vo = new MsgPersonalSearch();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
MsgState state = new MsgState();
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
List<Msg> list = msgMapper.getUnreadByUser(vo);
for (Msg msg : list) {
state.setMid(msg.getId());
msgStateMapper.insert(state);
}
return Result.success();
}
}

@ -0,0 +1,121 @@
package cn.toesbieya.jxc.service.sys;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.mapper.SysCategoryMapper;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysCategoryService {
@Resource
private SysCategoryMapper mapper;
public List<SysCategory> getAll() {
return mapper.selectList(null);
}
public List<SysCategory> search(CategorySearch vo) {
Integer id = vo.getId();
String ids = vo.getIds();
Integer pid = vo.getPid();
String pids = vo.getPids();
String name = vo.getName();
Integer type = vo.getType();
Long startTime = vo.getStartTime();
Long endTime = vo.getEndTime();
return mapper.selectList(
Wrappers.lambdaQuery(SysCategory.class)
.eq(id != null, SysCategory::getId, id)
.inSql(!StringUtils.isEmpty(ids), SysCategory::getId, ids)
.eq(pid != null, SysCategory::getPid, pid)
.inSql(!StringUtils.isEmpty(pids), SysCategory::getPid, pids)
.like(!StringUtils.isEmpty(name), SysCategory::getName, name)
.eq(type != null, SysCategory::getType, type)
.ge(startTime != null, SysCategory::getCtime, startTime)
.le(endTime != null, SysCategory::getCtime, endTime)
.orderByDesc(SysCategory::getCtime)
);
}
@UserAction("'添加分类:'+#category.name")
@Lock("'category'+#category.pid")
public Result add(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("添加失败," + err);
int rows = mapper.insert(category);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改分类:'+#category.name")
@Lock("'category'+#category.id")
public Result update(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("修改失败," + err);
int rows = mapper.update(
null,
Wrappers.lambdaUpdate(SysCategory.class)
.set(SysCategory::getPid, category.getPid())
.set(SysCategory::getName, category.getName())
.set(SysCategory::getType, category.getType())
.eq(SysCategory::getId, category.getId())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新后重试");
}
@UserAction("'删除分类:'+#category.name")
@Lock("'category'+#category.id")
public Result del(SysCategory category) {
Integer cid = category.getId();
if (hasChildren(cid)) {
return Result.fail("请先删除该分类下的子节点");
}
if (mapper.checkIsUse(cid)) {
return Result.fail("该分类已在业务中使用,不可删除");
}
int rows = mapper.deleteById(cid);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
}
private String check(SysCategory category) {
//当该分类不是顶级节点时,判断其父节点是否允许有下级
if (!category.getPid().equals(0)) {
SysCategory parent = mapper.selectById(category.getPid());
if (parent == null || parent.getType().equals(1)) {
return "父节点状态变更,请刷新后重试";
}
}
Integer id = category.getId();
Integer exist = mapper.selectCount(
Wrappers.lambdaQuery(SysCategory.class)
.eq(SysCategory::getName, category.getName())
.ne(id != null, SysCategory::getId, id)
);
if (exist != null && exist > 0) {
return String.format("分类【%s】已存在", category.getName());
}
if (id != null && category.getType().equals(1) && hasChildren(id)) {
return "该分类下存在子节点,不能改为实体类型";
}
return null;
}
private boolean hasChildren(Integer id) {
Integer checkNum = mapper.selectCount(
Wrappers.lambdaQuery(SysCategory.class)
.eq(SysCategory::getPid, id)
);
return checkNum != null && checkNum > 0;
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save