Browse Source

230508

erp、
qianyu 2 years ago
parent
commit
b7576a286a
  1. 119
      log.path_IS_UNDEFINED/sys-user.log
  2. 10
      ruoyi-admin/src/main/java/com/ruoyi/storehouse/controller/OutboundDetailController.java
  3. 53
      ruoyi-admin/src/main/java/com/ruoyi/storehouse/controller/OutboundInfoController.java
  4. 1
      ruoyi-admin/src/main/java/com/ruoyi/storehouse/domain/exportDto/OutboundDetailDto.java
  5. 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
  6. 72
      ruoyi-admin/src/main/resources/mapper/storehouse/OutboundInfoMapper.xml
  7. 4
      ruoyi-admin/src/main/resources/templates/manufacture/deliveryGoodsNotice/add.html
  8. 4
      ruoyi-admin/src/main/resources/templates/manufacture/deliveryGoodsNotice/deliveryGoodsNotice.html
  9. 397
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoCP/add.html
  10. 411
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoCP/edit.html
  11. 57
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoCP/outboundInfoCP.html
  12. 353
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoFL/add.html
  13. 358
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoFL/edit.html
  14. 56
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoFL/outboundInfoFL.html
  15. 197
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoYL/add.html
  16. 227
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoYL/edit.html
  17. 55
      ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoYL/outboundInfoYL.html
  18. 9
      ruoyi-admin/src/main/resources/templates/system/dept/dept.html
  19. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysCaptchaController.class
  20. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysDeptController.class
  21. 4
      ruoyi-admin/target/classes/templates/manufacture/deliveryGoodsNotice/add.html
  22. 4
      ruoyi-admin/target/classes/templates/manufacture/deliveryGoodsNotice/deliveryGoodsNotice.html
  23. 9
      ruoyi-admin/target/classes/templates/system/dept/dept.html
  24. 12
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
  25. 3
      ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
  26. 3
      ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml

119
log.path_IS_UNDEFINED/sys-user.log

@ -1,46 +1,73 @@
09:19:58.017 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
09:25:47.462 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
09:25:47.463 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:25:47.464 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:26:22.401 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
09:30:35.910 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
09:30:35.914 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:30:35.915 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:31:04.832 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
09:32:20.576 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
09:32:20.578 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:32:20.578 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:32:53.897 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
09:36:30.407 [Thread-38] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
09:36:30.408 [Thread-38] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:36:30.408 [Thread-38] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:37:07.832 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:37:07.833 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:37:56.116 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
09:39:00.885 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
09:39:00.885 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:39:00.885 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:39:26.053 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
09:40:14.231 [Thread-39] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
09:40:14.232 [Thread-39] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:40:14.232 [Thread-39] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:40:43.714 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:40:43.716 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:41:05.565 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
09:50:15.147 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
09:50:15.148 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:50:15.148 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
09:54:32.967 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
09:57:39.429 [Thread-39] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
09:57:39.430 [Thread-39] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
09:57:39.431 [Thread-39] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
10:07:34.344 [Thread-51] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
10:07:34.345 [Thread-51] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
10:08:07.258 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
11:41:15.736 [Thread-64] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
11:41:15.739 [Thread-64] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
11:41:15.739 [Thread-64] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
11:41:36.567 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
11:56:17.833 [Thread-77] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
11:56:17.835 [Thread-77] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
11:56:17.836 [Thread-77] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
02:45:48.343 [Thread-50] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
02:45:48.345 [Thread-50] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
02:45:48.345 [Thread-50] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
02:46:13.209 [Thread-63] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
02:46:13.210 [Thread-63] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
02:56:50.770 [Thread-76] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
02:56:50.771 [Thread-76] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
02:58:05.003 [Thread-89] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
02:58:05.004 [Thread-89] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
02:59:22.821 [Thread-102] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
02:59:22.822 [Thread-102] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:00:33.014 [Thread-115] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:00:33.014 [Thread-115] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:01:35.920 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:12:25.938 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:12:25.939 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:12:25.939 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:13:11.692 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:25:43.689 [Thread-52] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:25:43.691 [Thread-52] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:25:43.691 [Thread-52] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:26:10.292 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:29:00.385 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:29:00.386 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:29:00.386 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:29:29.460 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:30:50.965 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:30:50.966 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:30:50.966 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:31:30.040 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:31:30.040 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:32:01.221 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:38:04.722 [Thread-51] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:38:04.723 [Thread-51] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:38:04.723 [Thread-51] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:38:24.901 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:38:44.027 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:38:44.027 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:38:44.028 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:39:14.527 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:40:16.399 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:40:16.399 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:40:16.399 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:40:43.506 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:46:32.686 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:46:32.687 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:46:32.687 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:47:14.778 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
03:53:30.687 [Thread-52] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
03:53:30.687 [Thread-52] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
03:53:30.687 [Thread-52] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
03:54:04.703 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
04:04:44.447 [Thread-65] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
04:04:44.450 [Thread-65] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
04:04:44.450 [Thread-65] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
04:05:02.344 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
04:05:02.345 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
04:05:38.817 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
04:15:55.337 [Thread-53] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
04:15:55.338 [Thread-53] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
04:15:55.338 [Thread-53] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
04:17:20.638 [Thread-66] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
04:17:20.638 [Thread-66] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
04:22:55.116 [Thread-79] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
04:22:55.117 [Thread-79] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
04:23:29.151 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
04:23:29.151 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
04:23:29.152 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
04:24:32.097 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]
05:43:56.126 [SpringContextShutdownHook] INFO sys-user - [shutdownSpringSessionValidationScheduler,45] - ====关闭会话验证任务====
05:43:56.129 [SpringContextShutdownHook] INFO sys-user - [shutdownAsyncManager,62] - ====关闭后台任务任务线程池====
05:43:56.129 [SpringContextShutdownHook] INFO sys-user - [shutdownEhCacheManager,75] - ====关闭缓存====
05:44:26.717 [schedule-pool-2] INFO sys-user - [run,109] - [127.0.0.1]内网IP[admin][Success][登录成功]

10
ruoyi-admin/src/main/java/com/ruoyi/storehouse/controller/OutboundDetailController.java

@ -1,5 +1,6 @@
package com.ruoyi.storehouse.controller;
import java.sql.SQLOutput;
import java.util.List;
import java.util.Objects;
@ -130,12 +131,13 @@ public class OutboundDetailController extends BaseController
@ResponseBody
public AjaxResult addOutboundDetail(@RequestParam(value = "data") String data){
List<OutboundDetail> outboundDetailList = JSONObject.parseArray(data, OutboundDetail.class);
for (int i=0;i<outboundDetailList.size();i++) {
String id = String.valueOf(outboundDetailService.selectOutboundDetailById(outboundDetailList.get(i).getOutboundDetailId()));
for (OutboundDetail outboundDetail : outboundDetailList) {
String id = String.valueOf(outboundDetailService.selectOutboundDetailById(outboundDetail.getOutboundDetailId()));
if (Objects.equals(id, "null")) {
outboundDetailService.insertOutboundDetail(outboundDetailList.get(i));
System.out.println("--------------------------"+id+"------------------------------");
outboundDetailService.insertOutboundDetail(outboundDetail);
} else {
outboundDetailService.updateOutboundDetail(outboundDetailList.get(i));
outboundDetailService.updateOutboundDetail(outboundDetail);
}
}
return new AjaxResult(SUCCESS, "test done");

53
ruoyi-admin/src/main/java/com/ruoyi/storehouse/controller/OutboundInfoController.java

@ -170,18 +170,34 @@ public class OutboundInfoController extends BaseController
@ResponseBody
public AjaxResult addSave(OutboundInfo outboundInfo,OutboundDetail outboundDetail)
{
return toAjax(outboundInfoService.insertOutboundInfo(outboundInfo)+outboundDetailService.insertOutboundDetail(outboundDetail));
return toAjax(outboundInfoService.insertOutboundInfo(outboundInfo));
}
/**
* 修改outboundInfo
*/
@GetMapping("/edit/{outboundId}")
public String edit(@PathVariable("outboundId") Long outboundId, ModelMap mmap)
@GetMapping("/editYL/{outboundId}")
public String editYL(@PathVariable("outboundId") Long outboundId, ModelMap mmap)
{
OutboundInfo outboundInfo = outboundInfoService.selectOutboundInfoById(outboundId);
mmap.put("outboundInfo", outboundInfo);
return prefix + "/edit";
return prefixYL + "/edit";
}
@GetMapping("/editFL/{outboundId}")
public String editFL(@PathVariable("outboundId") Long outboundId, ModelMap mmap)
{
OutboundInfo outboundInfo = outboundInfoService.selectOutboundInfoById(outboundId);
mmap.put("outboundInfo", outboundInfo);
return prefixFL + "/edit";
}
@GetMapping("/editCP/{outboundId}")
public String editCP(@PathVariable("outboundId") Long outboundId, ModelMap mmap)
{
OutboundInfo outboundInfo = outboundInfoService.selectOutboundInfoById(outboundId);
mmap.put("outboundInfo", outboundInfo);
return prefixCP + "/edit";
}
/**
@ -208,6 +224,29 @@ public class OutboundInfoController extends BaseController
return toAjax(outboundInfoService.deleteOutboundInfoByIds(ids));
}
@RequiresPermissions("storehouse:outboundInfo:remove")
@Log(title = "outboundInfo", businessType = BusinessType.DELETE)
@PostMapping( "/removeAll")
@ResponseBody
public String removeAll(@RequestParam(value = "ids") String ids)
{
String[] idsStr = ids.split(",");
for (int i = 0; i < idsStr.length; i++) {
outboundInfoService.selectOutboundInfoById(Long.valueOf(idsStr[i]));
outboundDetail.setOutboundNo(outboundInfo.getOutboundNo());
List<OutboundDetail> outboundDetailList = outboundDetailService.selectOutboundDetailList(outboundDetail);
if (outboundDetailList.size()>0){
for (OutboundDetail detail : outboundDetailList) {
outboundDetailService.deleteOutboundDetailById(detail.getOutboundDetailId());
}
}
}
outboundInfoService.deleteOutboundInfoByIds(ids);
return "操作成功";
}
@RequiresPermissions("storehouse:outboundInfo:remove")
@Log(title = "outboundInfo", businessType = BusinessType.DELETE)
@PostMapping( "/removeOutbound")
@ -235,20 +274,20 @@ public class OutboundInfoController extends BaseController
@ResponseBody
public Result getOutNoYL() throws Exception {
String time = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(System.currentTimeMillis());
return Result.getSuccessResult("YL"+time);
return Result.getSuccessResult("YLOUT"+time);
}
@PostMapping("/getOutNoFL")
@ResponseBody
public Result getOutNoFL() throws Exception {
String time = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(System.currentTimeMillis());
return Result.getSuccessResult("FL"+time);
return Result.getSuccessResult("FLOUT"+time);
}
@PostMapping("/getOutNoCP")
@ResponseBody
public Result getOutNoCP() throws Exception {
String time = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(System.currentTimeMillis());
return Result.getSuccessResult("CP"+time);
return Result.getSuccessResult("CPOUT"+time);
}
}

1
ruoyi-admin/src/main/java/com/ruoyi/storehouse/domain/exportDto/OutboundDetailDto.java

@ -328,4 +328,5 @@ public class OutboundDetailDto extends BaseEntity
", deductionReason='" + deductionReason + '\'' +
'}';
}
}

1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java

@ -47,6 +47,7 @@ public class SysDeptController extends BaseController
public List<SysDept> list(SysDept dept)
{
List<SysDept> deptList = deptService.selectDeptList(dept);
System.out.println(deptList);
return deptList;
}

72
ruoyi-admin/src/main/resources/mapper/storehouse/OutboundInfoMapper.xml

@ -66,54 +66,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectYLOutboundInfoList" parameterType="String" resultMap="OutboundInfoResult">
<include refid="selectOutboundInfoVo"/>
where outbound_no like '%YLOUT%'
<if test="outboundNo != null and outboundNo != ''"> and outboundNo like concat('%', #{outboundNo}, '%')</if>
<if test="materialRequisitionNumber != null and materialRequisitionNumber != ''"> and materialRequisitionNumber like concat('%', #{materialRequisitionNumber}, '%')</if>
<if test="workOrderNumber != null and workOrderNumber != ''"> and workOrderNumber like concat('%', #{workOrderNumber}, '%')</if>
<if test="finishProductCode != null and finishProductCode != ''"> and finishProductCode like concat('%', #{finishProductCode}, '%')</if>
<if test="deptId != null and deptId != ''"> and deptId like concat('%', #{deptId}, '%')</if>
<if test="deptName != null and deptName != ''"> and deptName like concat('%', #{deptName}, '%')</if>
<if test="outboundPicker != null and outboundPicker != ''"> and outboundPicker like concat('%', #{outboundPicker}, '%')</if>
<if test="stockNo != null and stockNo != ''"> and stockNo like concat('%', #{stockNo}, '%')</if>
<if test="stockName != null and stockName != ''"> and stockName like concat('%', #{stockName}, '%')</if>
<if test="outboundType != null and outboundType != ''"> and outboundType like concat('%', #{outboundType}, '%')</if>
<if test="stockManager != null and stockManager != ''"> and stockManager like concat('%', #{stockManager}, '%')</if>
<if test="outboundRemarks != null and outboundRemarks != ''"> and outboundRemarks like concat('%', #{outboundRemarks}, '%')</if>
<if test="outboundNo != null and outboundNo != ''"> and outbound_no like concat('%', #{outboundNo}, '%')</if>
<if test="materialRequisitionNumber != null and materialRequisitionNumber != ''"> and material_requisition_number like concat('%', #{materialRequisitionNumber}, '%')</if>
<if test="workOrderNumber != null and workOrderNumber != ''"> and work_order_number like concat('%', #{workOrderNumber}, '%')</if>
<if test="finishProductCode != null and finishProductCode != ''"> and finish_product_code like concat('%', #{finishProductCode}, '%')</if>
<if test="deptId != null and deptId != ''"> and dept_id like concat('%', #{deptId}, '%')</if>
<if test="deptName != null and deptName != ''"> and dept_name like concat('%', #{deptName}, '%')</if>
<if test="outboundPicker != null and outboundPicker != ''"> and outbound_picker like concat('%', #{outboundPicker}, '%')</if>
<if test="stockNo != null and stockNo != ''"> and stock_no like concat('%', #{stockNo}, '%')</if>
<if test="stockName != null and stockName != ''"> and stock_name like concat('%', #{stockName}, '%')</if>
<if test="outboundType != null and outboundType != ''"> and outbound_type like concat('%', #{outboundType}, '%')</if>
<if test="stockManager != null and stockManager != ''"> and stock_manager like concat('%', #{stockManager}, '%')</if>
<if test="outboundRemarks != null and outboundRemarks != ''"> and outbound_remarks like concat('%', #{outboundRemarks}, '%')</if>
ORDER BY outbound_id ASC
</select>
<select id="selectFLOutboundInfoList" parameterType="String" resultMap="OutboundInfoResult">
<include refid="selectOutboundInfoVo"/>
where outbound_no like '%FLOUT%'
<if test="outboundNo != null and outboundNo != ''"> and outboundNo like concat('%', #{outboundNo}, '%')</if>
<if test="materialRequisitionNumber != null and materialRequisitionNumber != ''"> and materialRequisitionNumber like concat('%', #{materialRequisitionNumber}, '%')</if>
<if test="workOrderNumber != null and workOrderNumber != ''"> and workOrderNumber like concat('%', #{workOrderNumber}, '%')</if>
<if test="finishProductCode != null and finishProductCode != ''"> and finishProductCode like concat('%', #{finishProductCode}, '%')</if>
<if test="deptId != null and deptId != ''"> and deptId like concat('%', #{deptId}, '%')</if>
<if test="deptName != null and deptName != ''"> and deptName like concat('%', #{deptName}, '%')</if>
<if test="outboundPicker != null and outboundPicker != ''"> and outboundPicker like concat('%', #{outboundPicker}, '%')</if>
<if test="stockNo != null and stockNo != ''"> and stockNo like concat('%', #{stockNo}, '%')</if>
<if test="stockName != null and stockName != ''"> and stockName like concat('%', #{stockName}, '%')</if>
<if test="outboundType != null and outboundType != ''"> and outboundType like concat('%', #{outboundType}, '%')</if>
<if test="stockManager != null and stockManager != ''"> and stockManager like concat('%', #{stockManager}, '%')</if>
<if test="outboundRemarks != null and outboundRemarks != ''"> and outboundRemarks like concat('%', #{outboundRemarks}, '%')</if>
<if test="outboundNo != null and outboundNo != ''"> and outbound_no like concat('%', #{outboundNo}, '%')</if>
<if test="materialRequisitionNumber != null and materialRequisitionNumber != ''"> and material_requisition_number like concat('%', #{materialRequisitionNumber}, '%')</if>
<if test="workOrderNumber != null and workOrderNumber != ''"> and work_order_number like concat('%', #{workOrderNumber}, '%')</if>
<if test="finishProductCode != null and finishProductCode != ''"> and finish_product_code like concat('%', #{finishProductCode}, '%')</if>
<if test="deptId != null and deptId != ''"> and dept_id like concat('%', #{deptId}, '%')</if>
<if test="deptName != null and deptName != ''"> and dept_name like concat('%', #{deptName}, '%')</if>
<if test="outboundPicker != null and outboundPicker != ''"> and outbound_picker like concat('%', #{outboundPicker}, '%')</if>
<if test="stockNo != null and stockNo != ''"> and stock_no like concat('%', #{stockNo}, '%')</if>
<if test="stockName != null and stockName != ''"> and stock_name like concat('%', #{stockName}, '%')</if>
<if test="outboundType != null and outboundType != ''"> and outbound_type like concat('%', #{outboundType}, '%')</if>
<if test="stockManager != null and stockManager != ''"> and stock_manager like concat('%', #{stockManager}, '%')</if>
<if test="outboundRemarks != null and outboundRemarks != ''"> and outbound_remarks like concat('%', #{outboundRemarks}, '%')</if>
ORDER BY outbound_id ASC
</select>
<select id="selectCPOutboundInfoList" parameterType="String" resultMap="OutboundInfoResult">
<include refid="selectOutboundInfoVo"/>
where outbound_no like '%CPOUT%'
<if test="outboundNo != null and outboundNo != ''"> and outboundNo like concat('%', #{outboundNo}, '%')</if>
<if test="materialRequisitionNumber != null and materialRequisitionNumber != ''"> and materialRequisitionNumber like concat('%', #{materialRequisitionNumber}, '%')</if>
<if test="workOrderNumber != null and workOrderNumber != ''"> and workOrderNumber like concat('%', #{workOrderNumber}, '%')</if>
<if test="finishProductCode != null and finishProductCode != ''"> and finishProductCode like concat('%', #{finishProductCode}, '%')</if>
<if test="deptId != null and deptId != ''"> and deptId like concat('%', #{deptId}, '%')</if>
<if test="deptName != null and deptName != ''"> and deptName like concat('%', #{deptName}, '%')</if>
<if test="outboundPicker != null and outboundPicker != ''"> and outboundPicker like concat('%', #{outboundPicker}, '%')</if>
<if test="stockNo != null and stockNo != ''"> and stockNo like concat('%', #{stockNo}, '%')</if>
<if test="stockName != null and stockName != ''"> and stockName like concat('%', #{stockName}, '%')</if>
<if test="outboundType != null and outboundType != ''"> and outboundType like concat('%', #{outboundType}, '%')</if>
<if test="stockManager != null and stockManager != ''"> and stockManager like concat('%', #{stockManager}, '%')</if>
<if test="outboundRemarks != null and outboundRemarks != ''"> and outboundRemarks like concat('%', #{outboundRemarks}, '%')</if>
<if test="outboundNo != null and outboundNo != ''"> and outbound_no like concat('%', #{outboundNo}, '%')</if>
<if test="materialRequisitionNumber != null and materialRequisitionNumber != ''"> and material_requisition_number like concat('%', #{materialRequisitionNumber}, '%')</if>
<if test="workOrderNumber != null and workOrderNumber != ''"> and work_order_number like concat('%', #{workOrderNumber}, '%')</if>
<if test="finishProductCode != null and finishProductCode != ''"> and finish_product_code like concat('%', #{finishProductCode}, '%')</if>
<if test="deptId != null and deptId != ''"> and dept_id like concat('%', #{deptId}, '%')</if>
<if test="deptName != null and deptName != ''"> and dept_name like concat('%', #{deptName}, '%')</if>
<if test="outboundPicker != null and outboundPicker != ''"> and outbound_picker like concat('%', #{outboundPicker}, '%')</if>
<if test="stockNo != null and stockNo != ''"> and stock_no like concat('%', #{stockNo}, '%')</if>
<if test="stockName != null and stockName != ''"> and stock_name like concat('%', #{stockName}, '%')</if>
<if test="outboundType != null and outboundType != ''"> and outbound_type like concat('%', #{outboundType}, '%')</if>
<if test="stockManager != null and stockManager != ''"> and stock_manager like concat('%', #{stockManager}, '%')</if>
<if test="outboundRemarks != null and outboundRemarks != ''"> and outbound_remarks like concat('%', #{outboundRemarks}, '%')</if>
ORDER BY outbound_id ASC
</select>

4
ruoyi-admin/src/main/resources/templates/manufacture/deliveryGoodsNotice/add.html

@ -83,7 +83,7 @@
<input name="deliveryAddress" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<div class="form-group" style="display: none">
<label class="col-sm-3 control-label">内外销:</label>
<div class="col-sm-8">
<select name="exportSales" class="form-control m-b" th:with="type=${@dict.getType('sys_export_sales')}">
@ -120,7 +120,7 @@
</select>
</div>
</div>
<div class="form-group">
<div class="form-group" style="display: none">
<label class="col-sm-3 control-label">发货否:</label>
<div class="col-sm-8">
<select name="deliveryGoodsFlag" class="form-control m-b" th:with="type=${@dict.getType('sys_whether')}">

4
ruoyi-admin/src/main/resources/templates/manufacture/deliveryGoodsNotice/deliveryGoodsNotice.html

@ -28,14 +28,14 @@
<label>客户名称:</label>
<input type="text" name="enterpriseName"/>
</li>
<li>
<li style="display: none">
<label>内外销:</label>
<select name="exportSales" th:with="type=${@dict.getType('sys_export_sales')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<li style="display: none">
<label>发货否:</label>
<select name="deliveryGoodsFlag" th:with="type=${@dict.getType('sys_whether')}">
<option value="">所有</option>

397
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoCP/add.html

@ -3,6 +3,33 @@
<head>
<th:block th:include="include :: header('新增outboundInfo')" />
<th:block th:include="include :: datetimepicker-css" />
<link th:href="@{/ajax/libs/select2/select2.css}" rel="stylesheet">
<link th:href="@{/ajax/libs/select2/select2-bootstrap.css}" rel="stylesheet">
<th:block th:include="include :: bootstrap-editable-css"/>
<style>
.other-container {
width: 90%;
height: 200px;
margin: auto;
}
.other {
margin-top: 20px;
}
h4 {
display: inline-block;
margin-right: 20px;
}
.modal-body{
height: 550px;
}
iframe{
width: 100%;
height: 500px;
frameborder: 0;
border: 0;
display: inline-block;
}
</style>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
@ -19,12 +46,6 @@
<input name="noticeOrderNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8">
<input name="outboundTel" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">送货地址:</label>
<div class="col-sm-8">
@ -32,63 +53,21 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料人:</label>
<div class="col-sm-8">
<input name="outboundPicker" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库日期:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="outboundDate" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库类型:</label>
<div class="col-sm-8">
<select name="outboundType" class="form-control m-b">
<option value="">所有</option>
</select>
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注内容:</label>
<div class="col-sm-8">
<input name="outboundRemarks" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料单号:</label>
<div class="col-sm-8">
<input name="materialRequisitionNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">工单号/样品单号:</label>
<div class="col-sm-8">
<input name="workOrderNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单号:</label>
<label class="col-sm-3 control-label">客户编号:</label>
<div class="col-sm-8">
<input name="salesOrderNumber" class="form-control" type="text">
<input name="enterpriseCode" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">成品代码</label>
<label class="col-sm-3 control-label">客户名称:</label>
<div class="col-sm-8">
<input name="finishProductCode" class="form-control" type="text">
<input name="enterpriseName" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门编号</label>
<label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8">
<input name="deptId" class="form-control" type="text">
<input name="outboundTel" class="form-control" type="text">
</div>
</div>
<div class="form-group">
@ -98,33 +77,39 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户编号</label>
<label class="col-sm-3 control-label">仓库名称</label>
<div class="col-sm-8">
<input name="enterpriseCode" class="form-control" type="text">
<input name="stockName" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户名称</label>
<label class="col-sm-3 control-label">出库类型</label>
<div class="col-sm-8">
<input name="enterpriseName" class="form-control" type="text">
<select name="outboundType" class="form-control m-b" th:with="type=${@dict.getType('warehousing_out_category')}">
<option selected="selected">工单生产领料</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料部门</label>
<label class="col-sm-3 control-label">出库日期</label>
<div class="col-sm-8">
<input name="deptName" class="form-control" type="text">
<div class="input-group date">
<input name="outboundDate" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">库名称</label>
<label class="col-sm-3 control-label">管理员</label>
<div class="col-sm-8">
<input name="stockName" class="form-control" type="text">
<input name="stockManager" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">仓管理员</label>
<label class="col-sm-3 control-label">备注内容</label>
<div class="col-sm-8">
<input name="stockManager" class="form-control" type="text">
<input name="outboundRemarks" class="form-control" type="text">
</div>
</div>
<div class="form-group">
@ -139,23 +124,305 @@
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<th:block th:include="include :: select2-js"/>
<th:block th:include="include :: bootstrap-table-editable-js"/>
<script th:inline="javascript">
var prefix = ctx + "storehouse/outboundInfo"
var prefixDetail = ctx + "storehouse/outboundDetail"
var prefixWorkOrderInfo = ctx + "manufacture/workOrderInfo"
var prefixWorkOrderDetail = ctx + "manufacture/workOrderDetail"
var inventoryUnit = [[${@dict.getType('sys_unit_class')}]];
$("#form-outboundInfo-add").validate({
focusCleanup: true
});
function submitHandler() {
let getData=$('#addDetailTable').bootstrapTable('getData', true)
if(getData.length > 0) {
//确认添加选中的物料数据
if ($.validate.form()) {
$.operate.save(prefix + "/add", $('#form-outboundInfo-add').serialize());
addOutboundDetail();
$.operate.save(prefix + "/add", $('#form-outboundInfo-add').serialize());}
} else {
$.modal.alertWarning("未选择物料,请添加!")
}
}
function addOutboundDetail(){
$("#addDetailTable").bootstrapTable('refresh');
let data = $('#addDetailTable').bootstrapTable('getData', true);
//获取outboundDetail
$.ajax({
url: prefixDetail + '/addOutboundDetail',
type: "POST",
data: {
data: JSON.stringify(data)
},
dataType: "json",
success: function (resp) {
console.log(resp)
},
})
}
$("input[name='outboundDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='outboundDate']").datetimepicker('setDate', new Date())
//获取出库单号
$.ajax({
url: prefix + "/getOutNoCP",
type: "post",
dateType: "json",
success: function (resp) {
if (resp.code === 0) {
$("input[name='outboundNo']").val(resp.data);
} else {
$.modal.msgError("失败啦");
}
},
error: function () {
$.modal.msgError("后台出错啦!");
}
});
//(工单)出库明细列表
$.ajax({
url: prefixWorkOrderInfo + "/list",
type: "post",
dateType: "json",
success: function (res) {
if (res.rows.length > 0) {
var orderData = res.rows;
for(let i in orderData){
$("#form-outboundInfo-add select[name='workOrderNumber']").append("<option value='" + orderData[i].workOrderNumber + "'>" + orderData[i].workOrderNumber + "</option>");
}
$("#form-outboundInfo-add select[name='workOrderNumber']").change(function () {
var workOrderNumber = $(this).val();
for (let i=0;i<orderData.length;i++) {
if (orderData[i].workOrderNumber == workOrderNumber) {
$("#form-outboundInfo-add input[name='finishProductCode]").val(orderData[i].finishProductCode);
showDetailMaterial();
}
}
})
} else {
$.modal.msgError(res.msg);
}
},
error: function () {
$.modal.msgError("后台出错啦!");
}
});
//显示表内订单信息
function showDetailMaterial() {
$('#addDetailTable').bootstrapTable("removeAll")
var workOrderNumber = $("select[name='workOrderNumber']").val();
$.ajax({
url: prefixWorkOrderDetail + '/list',
type: 'post',
data: {
workOrderNumber: workOrderNumber
},
success: function (res) {
console.log(res)
var count = res.rows.length;
var data = res.rows;
var outboundNo = $("input[name='outboundNo']").val();
for (i = 0; i < res.rows.length; i++) {
$("#addDetailTable").bootstrapTable('insertRow', {
index: count + i,
row: {
outboundNo: outboundNo,
materialCode: data[i].materialCode,
materialName: data[i].materialName,
specificationModel: data[i].specificationModel,
typeMachine:'',
inventoryUnit: data[i].inventoryUnit,
planCount:data[i].materialConsumption,
actualCount:'',
reason:'',
salesOrderNumber:'',
batchNumber:'',
orderNumber:'',
storageLocation:'',
}
});
}
}
})
}
$('#addDetailTable').bootstrapTable({
pagination: true,
pageNumber: 1,
pageSize: 10,
showToggle: false, // 是否显示详细视图和列表视图的切换按钮
cardView: false, // 是否显示详细视图
detailView: false, // 是否显示父子表
smartDisplay: false, // 加了这个才显示每页显示的行数
showExport: false, // 是否显示导出按钮
clickToSelect: true,//点击行选中
contentType: "application/x-www-form-urlencoded",
paginationDetailHAlign: ' hiddenDetailInfo',
height: 250,
queryParams: function (params) {
//console.log("123");
var curParams = {
// 传递参数查询参数
pageSize: params.limit,
pageNum: params.offset / params.limit + 1,
// enterpriseCode: data[0].enterpriseCode
};
// console.log(data[0].enterpriseCode)
return curParams
},
columns: [
{
title: '操作',
align: 'center',
formatter: function (value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeData(\'' + row.materialCode + '\')" ><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
},
{
field: 'outboundNo',
title: '出库单号',
visible: false
},
{
field: 'materialCode',
title: '代码'
},
{
field: 'materialName',
title: '名称'
},
{
field: 'specificationModel',
title: '规格型号'
},
{
field: 'typeMachine',
title: '机种',
editable: {
type: 'text',
title: '机种',
emptytext: '机种',
validate: function (v) {
}
}
},
{
field: 'inventoryUnit',
title: '单位'
},
{
field: 'planCount',
title: '计划数量',
editable: {
type: 'text',
title: '计划数量',
emptytext: '计划数量',
validate: function (v) {
}
}
},
{
field: 'actualCount',
title: '实领数量',
editable: {
type: 'text',
title: '实领数量',
emptytext: '实领数量',
validate: function (v) {
}
}
},
{
field: 'reason',
title: '说明',
editable: {
type: 'text',
title: '说明',
emptytext: '说明',
validate: function (v) {
}
}
},
{
field: 'salesOrderNumber',
title: '订单号',
editable: {
type: 'text',
title: '订单号',
emptytext: '订单号',
validate: function (v) {
}
}
},
{
field: 'batchNumber',
title: '生产批号',
editable: {
type: 'text',
title: '生产批号',
emptytext: '生产批号',
validate: function (v) {
}
}
},
{
field: 'orderNumber',
title: '订单项次',
editable: {
type: 'text',
title: '订单项次',
emptytext: '订单项次',
validate: function (v) {
}
}
},
{
field: 'storageLocation',
title: '存放位置',
editable: {
type: 'text',
title: '存放位置',
emptytext: '存放位置',
validate: function (v) {
}
}
}
]
})
//添加表格内删除物料信息
function removeData(materialCode){
var ids = [];
ids.push(materialCode);
$('#addDetailTable').bootstrapTable("remove",{
field:'materialCode',
values:ids
})
$("#addDetailTable").bootstrapTable('refresh');
}
</script>
</body>
</html>

411
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoCP/edit.html

@ -3,6 +3,34 @@
<head>
<th:block th:include="include :: header('修改outboundInfo')" />
<th:block th:include="include :: datetimepicker-css" />
<link th:href="@{/ajax/libs/select2/select2.css}" rel="stylesheet">
<link th:href="@{/ajax/libs/select2/select2-bootstrap.css}" rel="stylesheet">
<th:block th:include="include :: bootstrap-editable-css"/>
<style>
.other-container {
width: 90%;
height: 200px;
margin: auto;
}
.other {
margin-top: 20px;
}
h4 {
display: inline-block;
margin-right: 20px;
}
.modal-body{
height: 550px;
}
iframe{
width: 100%;
height: 500px;
frameborder: 0;
border: 0;
display: inline-block;
}
</style>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
@ -20,12 +48,6 @@
<input name="noticeOrderNumber" th:field="*{noticeOrderNumber}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8">
<input name="outboundTel" th:field="*{outboundTel}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">送货地址:</label>
<div class="col-sm-8">
@ -33,63 +55,21 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料人:</label>
<div class="col-sm-8">
<input name="outboundPicker" th:field="*{outboundPicker}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库日期:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="outboundDate" th:value="${#dates.format(outboundInfo.outboundDate, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库类型:</label>
<div class="col-sm-8">
<select name="outboundType" class="form-control m-b">
<option value="">所有</option>
</select>
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注内容:</label>
<div class="col-sm-8">
<input name="outboundRemarks" th:field="*{outboundRemarks}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料单号:</label>
<div class="col-sm-8">
<input name="materialRequisitionNumber" th:field="*{materialRequisitionNumber}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">工单号/样品单号:</label>
<div class="col-sm-8">
<input name="workOrderNumber" th:field="*{workOrderNumber}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单号:</label>
<label class="col-sm-3 control-label">客户编号:</label>
<div class="col-sm-8">
<input name="salesOrderNumber" th:field="*{salesOrderNumber}" class="form-control" type="text">
<input name="enterpriseCode" th:field="*{enterpriseCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">成品代码</label>
<label class="col-sm-3 control-label">客户名称:</label>
<div class="col-sm-8">
<input name="finishProductCode" th:field="*{finishProductCode}" class="form-control" type="text">
<input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门编号</label>
<label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8">
<input name="deptId" th:field="*{deptId}" class="form-control" type="text">
<input name="outboundTel" th:field="*{outboundTel}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
@ -99,33 +79,38 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户编号</label>
<label class="col-sm-3 control-label">仓库名称</label>
<div class="col-sm-8">
<input name="enterpriseCode" th:field="*{enterpriseCode}" class="form-control" type="text">
<input name="stockName" th:field="*{stockName}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户名称</label>
<label class="col-sm-3 control-label">出库类型</label>
<div class="col-sm-8">
<input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text">
<select name="outboundType" class="form-control m-b" th:with="type=${@dict.getType('warehousing_out_category')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{outboundType}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料部门</label>
<label class="col-sm-3 control-label">出库日期</label>
<div class="col-sm-8">
<input name="deptName" th:field="*{deptName}" class="form-control" type="text">
<div class="input-group date">
<input name="outboundDate" th:value="${#dates.format(outboundInfo.outboundDate, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">库名称</label>
<label class="col-sm-3 control-label">管理员</label>
<div class="col-sm-8">
<input name="stockName" th:field="*{stockName}" class="form-control" type="text">
<input name="stockManager" th:field="*{stockManager}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">仓管理员</label>
<label class="col-sm-3 control-label">备注内容</label>
<div class="col-sm-8">
<input name="stockManager" th:field="*{stockManager}" class="form-control" type="text">
<input name="outboundRemarks" th:field="*{outboundRemarks}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
@ -138,25 +123,319 @@
</div>
</form>
</div>
<div class="other-container">
<div class="other">
<br><hr>
<h4>材料信息</h4>
<div class="col-sm-12 select-table table-striped">
<table id="addDetailTable" style="white-space:nowrap"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<th:block th:include="include :: select2-js"/>
<th:block th:include="include :: bootstrap-table-editable-js"/>
<script th:inline="javascript">
var prefix = ctx + "storehouse/outboundInfo";
var getData = [[${outboundInfo}]]
var prefix = ctx + "storehouse/outboundInfo"
var prefixDetail = ctx + "storehouse/outboundDetail"
var prefixWorkOrderInfo = ctx + "manufacture/workOrderInfo"
var prefixWorkOrderDetail = ctx + "manufacture/workOrderDetail"
var inventoryUnit = [[${@dict.getType('sys_unit_class')}]];
$("#form-outboundInfo-edit").validate({
focusCleanup: true
});
function submitHandler() {
let getData=$('#addDetailTable').bootstrapTable('getData', true)
if(getData.length > 0) {
//确认添加选中的物料数据
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-outboundInfo-edit').serialize());
updateOutbountDetail();
$.operate.save(prefix + "/edit", $('#form-outboundInfo-edit').serialize());}
} else {
$.modal.alertWarning("未选择物料,请添加!")
}
}
function updateOutbountDetail(){
$("#addDetailTable").bootstrapTable('refresh');
let data = $('#addDetailTable').bootstrapTable('getData', true);
//获取outboundDetail
$.ajax({
url: prefixDetail + '/addOutboundDetail',
type: "POST",
data: {
data: JSON.stringify(data)
},
dataType: "json",
success: function (resp) {
console.log(resp)
},
})
}
$("input[name='outboundDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
//(工单)出库明细列表
$.ajax({
url: prefixWorkOrderInfo + "/list",
type: "post",
dateType: "json",
success: function (res) {
if (res.rows.length > 0) {
var orderData = res.rows;
for(let i in orderData){
$("#form-outboundInfo-edit select[name='workOrderNumber']").append("<option value='" + orderData[i].workOrderNumber + "'>" + orderData[i].workOrderNumber + "</option>");
}
$("#form-outboundInfo-edit select[name='workOrderNumber']").val(getData.workOrderNumber).trigger("change")
$("#form-outboundInfo-edit select[name='outboundType']").val(getData.outboundType).trigger("change")
$("#form-outboundInfo-edit select[name='workOrderNumber']").change(function () {
var workOrderNumber = $(this).val();
for (let i=0;i<orderData.length;i++) {
if (orderData[i].workOrderNumber == workOrderNumber) {
$("#form-outboundInfo-edit input[name='finishProductCode]").val(orderData[i].finishProductCode);
showDetailMaterial();
}
}
})
} else {
$.modal.msgError(res.msg);
}
},
error: function () {
$.modal.msgError("后台出错啦!");
}
});
//显示表内订单信息
function showDetailMaterial() {
$('#addDetailTable').bootstrapTable("removeAll")
var outboundNo = $("select[name='outboundNo']").val();
$.ajax({
url: prefixDetail + '/list',
type: 'post',
data: {
outboundNo: outboundNo
},
success: function (res) {
console.log(res)
var count = res.rows.length;
var data = res.rows;
var outboundNo = $("input[name='outboundNo']").val();
for (i = 0; i < res.rows.length; i++) {
$("#addDetailTable").bootstrapTable('insertRow', {
index: count + i,
row: {
outboundNo: outboundNo,
materialCode: data[i].materialCode,
materialName: data[i].materialName,
specificationModel: data[i].specificationModel,
inventoryUnit: data[i].inventoryUnit,
planCount:data[i].planCount,
actualCount:'',
returnCount:'',
reason:'',
purchaseNumber:'',
storageLocation:'',
notReturnOutboundNo:'',
itemNumber:'',
deductionCount:'',
deductionReason:'',
}
});
}
}
})
}
$('#addDetailTable').bootstrapTable({
url: prefixDetail + '/list',
method: "post",
pagination: true,
pageNumber: 1,
pageSize: 10,
showToggle: false, // 是否显示详细视图和列表视图的切换按钮
cardView: false, // 是否显示详细视图
detailView: false, // 是否显示父子表
smartDisplay: false, // 加了这个才显示每页显示的行数
showExport: false, // 是否显示导出按钮
clickToSelect: true,//点击行选中
contentType: "application/x-www-form-urlencoded",
paginationDetailHAlign: ' hiddenDetailInfo',
height: 250,
queryParams: function (params) {
//console.log("123");
var curParams = {
// 传递参数查询参数
pageSize: params.limit,
pageNum: params.offset / params.limit + 1,
outboundNo:getData.outboundNo
// enterpriseCode: data[0].enterpriseCode
};
// console.log(data[0].enterpriseCode)
return curParams
},
columns: [
{
field: 'outboundNo',
title: '出库单号',
visible: false
},
{
field: 'materialCode',
title: '代码'
},
{
field: 'materialName',
title: '名称'
},
{
field: 'specificationModel',
title: '规格型号'
},
{
field: 'inventoryUnit',
title: '单位'
},
{
field: 'planCount',
title: '计划数量',
editable: {
type: 'text',
title: '计划数量',
emptytext: '计划数量',
validate: function (v) {
}
}
// formatter: (value, row, index) => {
// console.log(value)
// if (value == null || value == "") {
// return ''
// }
// }
},
{
field: 'actualCount',
title: '实领数量',
editable: {
type: 'text',
title: '实领数量',
emptytext: '实领数量',
validate: function (v) {
}
}
},
{
field: 'returnCount',
title: '应退数量',
editable: {
type: 'text',
title: '应退数量',
emptytext: '应退数量',
validate: function (v) {
}
}
},
{
field: 'reason',
title: '说明',
editable: {
type: 'text',
title: '说明',
emptytext: '说明',
validate: function (v) {
}
}
},
{
field: 'purchaseNumber',
title: '进货批号',
editable: {
type: 'text',
title: '进货批号',
emptytext: '进货批号',
validate: function (v) {
}
}
},
{
field: 'storageLocation',
title: '存放位置',
editable: {
type: 'text',
title: '存放位置',
emptytext: '存放位置',
validate: function (v) {
}
}
},
{
field: 'notReturnOutboundNo',
title: '上次多领未还出库单号',
editable: {
type: 'text',
title: '上次多领未还出库单号',
emptytext: '上次多领未还出库单号',
validate: function (v) {
}
}
},
{
field: 'itemNumber',
title: '项次号',
editable: {
type: 'text',
title: '项次号',
emptytext: '项次号',
validate: function (v) {
}
}
},
{
field: 'deductionCount',
title: '本次抵扣数量',
editable: {
type: 'text',
title: '本次抵扣数量',
emptytext: '本次抵扣数量',
validate: function (v) {
}
}
},
{
field: 'deductionReason',
title: '抵扣说明',
editable: {
type: 'text',
title: '抵扣说明',
emptytext: '抵扣说明',
validate: function (v) {
}
}
},
]
})
</script>
</body>
</html>

57
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoCP/outboundInfoCP.html

@ -2,6 +2,7 @@
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('outboundInfo列表')" />
<script type="text/javascript" th:src="@{/js/axios.min.js}"></script>
</head>
<body class="gray-bg">
<div class="container-div">
@ -9,7 +10,6 @@
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<ul>
<li>
<label>出库单号:</label>
@ -58,7 +58,7 @@
<label>仓管理员:</label>
<input type="text" name="stockManager"/>
</li>
<li>
<li style="display: none">
<label>备注内容:</label>
<input type="text" name="outboundRemarks"/>
</li>
@ -78,15 +78,15 @@
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="storehouse:outboundInfo:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="storehouse:outboundInfo:remove">
<a class="btn btn-danger multiple disabled" onclick="removeAll()" shiro:hasPermission="storehouse:outboundInfo:remove">
<i class="fa fa-remove"></i> 删除
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="storehouse:outboundInfo:export">
<i class="fa fa-download"></i> 导出
</a>
<!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="storehouse:outboundInfo:export">-->
<!-- <i class="fa fa-download"></i> 导出-->
<!-- </a>-->
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
<table id="bootstrap-table" style="white-space: nowrap"></table>
</div>
</div>
</div>
@ -102,13 +102,18 @@
var options = {
url: prefix + "/listCP",
createUrl: prefix + "/addCP",
updateUrl: prefix + "/edit/{id}",
updateUrl: prefix + "/editCP/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
modalName: "outboundInfo",
columns: [{
checkbox: true
},
{
field: 'outboundId',
title: '',
visible: false
},
{
field: 'outboundNo',
title: '出库单号'
@ -159,20 +164,36 @@
{
field: 'outboundRemarks',
title: '备注内容'
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.outboundId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.outboundId + '\')"><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
}]
};
$.table.init(options);
});
function removeAll() {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
console.log(rows)
if (rows.length > 0) {
$.modal.confirm("是否删除选中的"+ rows.length +"条出库单?", function () {
$.ajax({
url: prefix + '/removeAll',
type: 'post',
data: {
ids : rows.join()
},
success: function (res) {
// console.log(res)
$("#bootstrap-table").bootstrapTable("refresh");
$.modal.msgSuccess("删除成功!")
},
error: function (res) {
$.modal.msgError(res.error())
}
})
})
} else {
$.modal.msgWarning("请选择一条数据")
}
}
</script>
</body>
</html>

353
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoFL/add.html

@ -41,81 +41,41 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出货单号:</label>
<div class="col-sm-8">
<input name="noticeOrderNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8">
<input name="outboundTel" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">送货地址:</label>
<div class="col-sm-8">
<input name="outboundAddress" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料人:</label>
<div class="col-sm-8">
<input name="outboundPicker" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库日期:</label>
<label class="col-sm-3 control-label">领料单号:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="outboundDate" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
<input name="materialRequisitionNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库类型</label>
<label class="col-sm-3 control-label">工单号/样品单号:</label>
<div class="col-sm-8">
<select name="outboundType" class="form-control m-b">
<select name="workOrderNumber" class="form-control m-b" required>
<option value="">所有</option>
</select>
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注内容:</label>
<div class="col-sm-8">
<input name="outboundRemarks" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料单号:</label>
<div class="col-sm-8">
<input name="materialRequisitionNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">工单号/样品单号:</label>
<label class="col-sm-3 control-label">订单号:</label>
<div class="col-sm-8">
<input name="workOrderNumber" class="form-control" type="text">
<input name="salesOrderNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单号:</label>
<label class="col-sm-3 control-label">部门编号:</label>
<div class="col-sm-8">
<input name="salesOrderNumber" class="form-control" type="text">
<input name="deptId" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">成品代码</label>
<label class="col-sm-3 control-label">领料部门</label>
<div class="col-sm-8">
<input name="finishProductCode" class="form-control" type="text">
<input name="deptName" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门编号</label>
<label class="col-sm-3 control-label">领料人</label>
<div class="col-sm-8">
<input name="deptId" class="form-control" type="text">
<input name="outboundPicker" class="form-control" type="text">
</div>
</div>
<div class="form-group">
@ -125,33 +85,38 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户编号</label>
<label class="col-sm-3 control-label">仓库名称</label>
<div class="col-sm-8">
<input name="enterpriseCode" class="form-control" type="text">
<input name="stockName" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户名称</label>
<label class="col-sm-3 control-label">出库类型</label>
<div class="col-sm-8">
<input name="enterpriseName" class="form-control" type="text">
<select name="outboundType" class="form-control m-b" th:with="type=${@dict.getType('warehousing_out_category')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料部门</label>
<label class="col-sm-3 control-label">出库日期</label>
<div class="col-sm-8">
<input name="deptName" class="form-control" type="text">
<div class="input-group date">
<input name="outboundDate" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">库名称</label>
<label class="col-sm-3 control-label">管理员</label>
<div class="col-sm-8">
<input name="stockName" class="form-control" type="text">
<input name="stockManager" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">仓管理员</label>
<label class="col-sm-3 control-label">备注内容</label>
<div class="col-sm-8">
<input name="stockManager" class="form-control" type="text">
<input name="outboundRemarks" class="form-control" type="text">
</div>
</div>
<div class="form-group">
@ -162,20 +127,57 @@
</select>
</div>
</div>
<div class="other-container">
<div class="other">
<br><hr>
<h4>材料信息</h4>
<div class="col-sm-12 select-table table-striped">
<table id="addDetailTable" style="white-space:nowrap"></table>
</div>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<th:block th:include="include :: select2-js"/>
<th:block th:include="include :: bootstrap-table-editable-js"/>
<script th:inline="javascript">
var prefix = ctx + "storehouse/outboundInfo"
var prefixDetail = ctx + "storehouse/outboundDetail"
var prefixWorkOrderInfo = ctx + "manufacture/workOrderInfo"
var prefixWorkOrderDetail = ctx + "manufacture/workOrderDetail"
$("#form-outboundInfo-add").validate({
focusCleanup: true
});
function submitHandler() {
let getData=$('#addDetailTable').bootstrapTable('getData', true)
if(getData.length > 0) {
//确认添加选中的物料数据
if ($.validate.form()) {
$.operate.save(prefix + "/add", $('#form-outboundInfo-add').serialize());
addOutboundDetail();
$.operate.save(prefix + "/add", $('#form-outboundInfo-add').serialize());}
} else {
$.modal.alertWarning("未选择物料,请添加!")
}
}
function addOutboundDetail(){
$("#addDetailTable").bootstrapTable('refresh');
let data = $('#addDetailTable').bootstrapTable('getData', true);
//获取outboundDetail
$.ajax({
url: prefixDetail + '/addOutboundDetail',
type: "POST",
data: {
data: JSON.stringify(data)
},
dataType: "json",
success: function (resp) {
console.log(resp)
},
})
}
$("input[name='outboundDate']").datetimepicker({
@ -183,6 +185,231 @@
minView: "month",
autoclose: true
});
$("input[name='outboundDate']").datetimepicker('setDate', new Date())
//获取出库单号
$.ajax({
url: prefix + "/getOutNoFL",
type: "post",
dateType: "json",
success: function (resp) {
if (resp.code === 0) {
$("input[name='outboundNo']").val(resp.data);
} else {
$.modal.msgError("失败啦");
}
},
error: function () {
$.modal.msgError("后台出错啦!");
}
});
//(工单)出库明细列表
$.ajax({
url: prefixWorkOrderInfo + "/list",
type: "post",
dateType: "json",
success: function (res) {
if (res.rows.length > 0) {
var orderData = res.rows;
for(let i in orderData){
$("#form-outboundInfo-add select[name='workOrderNumber']").append("<option value='" + orderData[i].workOrderNumber + "'>" + orderData[i].workOrderNumber + "</option>");
}
$("#form-outboundInfo-add select[name='workOrderNumber']").change(function () {
var workOrderNumber = $(this).val();
for (let i=0;i<orderData.length;i++) {
if (orderData[i].workOrderNumber == workOrderNumber) {
$("#form-outboundInfo-add input[name='finishProductCode]").val(orderData[i].finishProductCode);
showDetailMaterial();
}
}
})
} else {
$.modal.msgError(res.msg);
}
},
error: function () {
$.modal.msgError("后台出错啦!");
}
});
//显示表内订单信息
function showDetailMaterial() {
$('#addDetailTable').bootstrapTable("removeAll")
var workOrderNumber = $("select[name='workOrderNumber']").val();
$.ajax({
url: prefixWorkOrderDetail + '/list',
type: 'post',
data: {
workOrderNumber: workOrderNumber
},
success: function (res) {
console.log(res)
var count = res.rows.length;
var data = res.rows;
var outboundNo = $("input[name='outboundNo']").val();
for (i = 0; i < res.rows.length; i++) {
$("#addDetailTable").bootstrapTable('insertRow', {
index: count + i,
row: {
outboundNo: outboundNo,
materialCode: data[i].materialCode,
materialName: data[i].materialName,
specificationModel: data[i].specificationModel,
inventoryUnit: data[i].inventoryUnit,
planCount:data[i].materialConsumption,
actualCount:'',
returnCount:'',
weight:'',
storageLocation:'',
reason:''
}
});
}
}
})
}
$('#addDetailTable').bootstrapTable({
pagination: true,
pageNumber: 1,
pageSize: 10,
showToggle: false, // 是否显示详细视图和列表视图的切换按钮
cardView: false, // 是否显示详细视图
detailView: false, // 是否显示父子表
smartDisplay: false, // 加了这个才显示每页显示的行数
showExport: false, // 是否显示导出按钮
clickToSelect: true,//点击行选中
contentType: "application/x-www-form-urlencoded",
paginationDetailHAlign: ' hiddenDetailInfo',
height: 250,
queryParams: function (params) {
//console.log("123");
var curParams = {
// 传递参数查询参数
pageSize: params.limit,
pageNum: params.offset / params.limit + 1,
// enterpriseCode: data[0].enterpriseCode
};
// console.log(data[0].enterpriseCode)
return curParams
},
columns: [
{
title: '操作',
align: 'center',
formatter: function (value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeData(\'' + row.materialCode + '\')" ><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
},
{
field: 'outboundNo',
title: '出库单号',
visible: false
},
{
field: 'materialCode',
title: '代码'
},
{
field: 'materialName',
title: '名称'
},
{
field: 'specificationModel',
title: '规格型号'
},
{
field: 'inventoryUnit',
title: '单位'
},
{
field: 'planCount',
title: '计划数量',
editable: {
type: 'text',
title: '计划数量',
emptytext: '计划数量',
validate: function (v) {
}
}
},
{
field: 'actualCount',
title: '实领数量',
editable: {
type: 'text',
title: '实领数量',
emptytext: '实领数量',
validate: function (v) {
}
}
},
{
field: 'returnCount',
title: '应退数量',
editable: {
type: 'text',
title: '应退数量',
emptytext: '应退数量',
validate: function (v) {
}
}
},
{
field: 'weight',
title: '重量',
editable: {
type: 'text',
title: '重量',
emptytext: '重量',
validate: function (v) {
}
}
},
{
field: 'reason',
title: '说明',
editable: {
type: 'text',
title: '说明',
emptytext: '说明',
validate: function (v) {
}
}
},
{
field: 'storageLocation',
title: '存放位置',
editable: {
type: 'text',
title: '存放位置',
emptytext: '存放位置',
validate: function (v) {
}
}
},
]
})
//添加表格内删除物料信息
function removeData(materialCode){
var ids = [];
ids.push(materialCode);
$('#addDetailTable').bootstrapTable("remove",{
field:'materialCode',
values:ids
})
$("#addDetailTable").bootstrapTable('refresh');
}
</script>
</body>
</html>

358
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoFL/edit.html

@ -3,9 +3,36 @@
<head>
<th:block th:include="include :: header('修改outboundInfo')" />
<th:block th:include="include :: datetimepicker-css" />
<link th:href="@{/ajax/libs/select2/select2.css}" rel="stylesheet">
<link th:href="@{/ajax/libs/select2/select2-bootstrap.css}" rel="stylesheet">
<th:block th:include="include :: bootstrap-editable-css"/>
<style>
.other-container {
width: 90%;
height: 200px;
margin: auto;
}
.other {
margin-top: 20px;
}
h4 {
display: inline-block;
margin-right: 20px;
}
.modal-body{
height: 550px;
}
iframe{
width: 100%;
height: 500px;
frameborder: 0;
border: 0;
display: inline-block;
}
</style>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-outboundInfo-edit" th:object="${outboundInfo}">
<input name="outboundId" th:field="*{outboundId}" type="hidden">
<div class="form-group">
@ -15,81 +42,41 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出货单号:</label>
<div class="col-sm-8">
<input name="noticeOrderNumber" th:field="*{noticeOrderNumber}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8">
<input name="outboundTel" th:field="*{outboundTel}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">送货地址:</label>
<div class="col-sm-8">
<input name="outboundAddress" th:field="*{outboundAddress}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料人:</label>
<div class="col-sm-8">
<input name="outboundPicker" th:field="*{outboundPicker}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库日期:</label>
<label class="col-sm-3 control-label">领料单号:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="outboundDate" th:value="${#dates.format(outboundInfo.outboundDate, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
<input name="materialRequisitionNumber" th:field="*{materialRequisitionNumber}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库类型</label>
<label class="col-sm-3 control-label">工单号/样品单号:</label>
<div class="col-sm-8">
<select name="outboundType" class="form-control m-b">
<select name="workOrderNumber" class="form-control m-b" required>
<option value="">所有</option>
</select>
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注内容:</label>
<div class="col-sm-8">
<input name="outboundRemarks" th:field="*{outboundRemarks}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料单号:</label>
<div class="col-sm-8">
<input name="materialRequisitionNumber" th:field="*{materialRequisitionNumber}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">工单号/样品单号:</label>
<label class="col-sm-3 control-label">订单号:</label>
<div class="col-sm-8">
<input name="workOrderNumber" th:field="*{workOrderNumber}" class="form-control" type="text">
<input name="salesOrderNumber" th:field="*{salesOrderNumber}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单号:</label>
<label class="col-sm-3 control-label">部门编号:</label>
<div class="col-sm-8">
<input name="salesOrderNumber" th:field="*{salesOrderNumber}" class="form-control" type="text">
<input name="deptId" th:field="*{deptId}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">成品代码</label>
<label class="col-sm-3 control-label">领料部门</label>
<div class="col-sm-8">
<input name="finishProductCode" th:field="*{finishProductCode}" class="form-control" type="text">
<input name="deptName" th:field="*{deptName}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门编号</label>
<label class="col-sm-3 control-label">领料人</label>
<div class="col-sm-8">
<input name="deptId" th:field="*{deptId}" class="form-control" type="text">
<input name="outboundPicker" th:field="*{outboundPicker}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
@ -99,33 +86,38 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户编号</label>
<label class="col-sm-3 control-label">仓库名称</label>
<div class="col-sm-8">
<input name="enterpriseCode" th:field="*{enterpriseCode}" class="form-control" type="text">
<input name="stockName" th:field="*{stockName}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户名称</label>
<label class="col-sm-3 control-label">出库类型</label>
<div class="col-sm-8">
<input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text">
<select name="outboundType" class="form-control m-b" th:with="type=${@dict.getType('warehousing_out_category')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{outboundType}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">领料部门</label>
<label class="col-sm-3 control-label">出库日期</label>
<div class="col-sm-8">
<input name="deptName" th:field="*{deptName}" class="form-control" type="text">
<div class="input-group date">
<input name="outboundDate" th:value="${#dates.format(outboundInfo.outboundDate, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">库名称</label>
<label class="col-sm-3 control-label">管理员</label>
<div class="col-sm-8">
<input name="stockName" th:field="*{stockName}" class="form-control" type="text">
<input name="stockManager" th:field="*{stockManager}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">仓管理员</label>
<label class="col-sm-3 control-label">备注内容</label>
<div class="col-sm-8">
<input name="stockManager" th:field="*{stockManager}" class="form-control" type="text">
<input name="outboundRemarks" th:field="*{outboundRemarks}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
@ -138,25 +130,261 @@
</div>
</form>
</div>
<div class="other-container">
<div class="other">
<br><hr>
<h4>材料信息</h4>
<div class="col-sm-12 select-table table-striped">
<table id="addDetailTable" style="white-space:nowrap"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<th:block th:include="include :: select2-js"/>
<th:block th:include="include :: bootstrap-table-editable-js"/>
<script th:inline="javascript">
var prefix = ctx + "storehouse/outboundInfo";
var getData = [[${outboundInfo}]]
var prefix = ctx + "storehouse/outboundInfo"
var prefixDetail = ctx + "storehouse/outboundDetail"
var prefixWorkOrderInfo = ctx + "manufacture/workOrderInfo"
var prefixWorkOrderDetail = ctx + "manufacture/workOrderDetail"
var inventoryUnit = [[${@dict.getType('sys_unit_class')}]];
$("#form-outboundInfo-edit").validate({
focusCleanup: true
});
function submitHandler() {
let getData=$('#addDetailTable').bootstrapTable('getData', true)
if(getData.length > 0) {
//确认添加选中的物料数据
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-outboundInfo-edit').serialize());
updateOutbountDetail();
$.operate.save(prefix + "/edit", $('#form-outboundInfo-edit').serialize());}
} else {
$.modal.alertWarning("未选择物料,请添加!")
}
}
function updateOutbountDetail(){
$("#addDetailTable").bootstrapTable('refresh');
let data = $('#addDetailTable').bootstrapTable('getData', true);
//获取outboundDetail
$.ajax({
url: prefixDetail + '/addOutboundDetail',
type: "POST",
data: {
data: JSON.stringify(data)
},
dataType: "json",
success: function (resp) {
console.log(resp)
},
})
}
$("input[name='outboundDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
//(工单)出库明细列表
$.ajax({
url: prefixWorkOrderInfo + "/list",
type: "post",
dateType: "json",
success: function (res) {
if (res.rows.length > 0) {
var orderData = res.rows;
for(let i in orderData){
$("#form-outboundInfo-edit select[name='workOrderNumber']").append("<option value='" + orderData[i].workOrderNumber + "'>" + orderData[i].workOrderNumber + "</option>");
}
$("#form-outboundInfo-edit select[name='workOrderNumber']").val(getData.workOrderNumber).trigger("change")
$("#form-outboundInfo-edit select[name='outboundType']").val(getData.outboundType).trigger("change")
$("#form-outboundInfo-edit select[name='workOrderNumber']").change(function () {
var workOrderNumber = $(this).val();
for (let i=0;i<orderData.length;i++) {
if (orderData[i].workOrderNumber == workOrderNumber) {
$("#form-outboundInfo-edit input[name='finishProductCode]").val(orderData[i].finishProductCode);
showDetailMaterial();
}
}
})
} else {
$.modal.msgError(res.msg);
}
},
error: function () {
$.modal.msgError("后台出错啦!");
}
});
//显示表内订单信息
function showDetailMaterial() {
$('#addDetailTable').bootstrapTable("removeAll")
var outboundNo = $("select[name='outboundNo']").val();
$.ajax({
url: prefixDetail + '/list',
type: 'post',
data: {
outboundNo: outboundNo
},
success: function (res) {
console.log(res)
var count = res.rows.length;
var data = res.rows;
var outboundNo = $("input[name='outboundNo']").val();
for (i = 0; i < res.rows.length; i++) {
$("#addDetailTable").bootstrapTable('insertRow', {
index: count + i,
row: {
outboundNo: outboundNo,
materialCode: data[i].materialCode,
materialName: data[i].materialName,
specificationModel: data[i].specificationModel,
inventoryUnit: data[i].inventoryUnit,
planCount:data[i].materialConsumption,
actualCount:'',
returnCount:'',
weight:'',
storageLocation:'',
reason:''
}
});
}
}
})
}
$('#addDetailTable').bootstrapTable({
url: prefixDetail + '/list',
method: "post",
pagination: true,
pageNumber: 1,
pageSize: 10,
showToggle: false, // 是否显示详细视图和列表视图的切换按钮
cardView: false, // 是否显示详细视图
detailView: false, // 是否显示父子表
smartDisplay: false, // 加了这个才显示每页显示的行数
showExport: false, // 是否显示导出按钮
clickToSelect: true,//点击行选中
contentType: "application/x-www-form-urlencoded",
paginationDetailHAlign: ' hiddenDetailInfo',
height: 250,
queryParams: function (params) {
//console.log("123");
var curParams = {
// 传递参数查询参数
pageSize: params.limit,
pageNum: params.offset / params.limit + 1,
outboundNo:getData.outboundNo
// enterpriseCode: data[0].enterpriseCode
};
// console.log(data[0].enterpriseCode)
return curParams
},
columns: [
{
field: 'outboundNo',
title: '出库单号',
visible: false
},
{
field: 'materialCode',
title: '代码'
},
{
field: 'materialName',
title: '名称'
},
{
field: 'specificationModel',
title: '规格型号'
},
{
field: 'inventoryUnit',
title: '单位'
},
{
field: 'planCount',
title: '计划数量',
editable: {
type: 'text',
title: '计划数量',
emptytext: '计划数量',
validate: function (v) {
}
}
},
{
field: 'actualCount',
title: '实领数量',
editable: {
type: 'text',
title: '实领数量',
emptytext: '实领数量',
validate: function (v) {
}
}
},
{
field: 'returnCount',
title: '应退数量',
editable: {
type: 'text',
title: '应退数量',
emptytext: '应退数量',
validate: function (v) {
}
}
},
{
field: 'weight',
title: '重量',
editable: {
type: 'text',
title: '重量',
emptytext: '重量',
validate: function (v) {
}
}
},
{
field: 'reason',
title: '说明',
editable: {
type: 'text',
title: '说明',
emptytext: '说明',
validate: function (v) {
}
}
},
{
field: 'storageLocation',
title: '存放位置',
editable: {
type: 'text',
title: '存放位置',
emptytext: '存放位置',
validate: function (v) {
}
}
},
]
})
</script>
</body>
</html>

56
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoFL/outboundInfoFL.html

@ -62,7 +62,7 @@
<label>仓管理员:</label>
<input type="text" name="stockManager"/>
</li>
<li>
<li style="display: none">
<label>备注内容:</label>
<input type="text" name="outboundRemarks"/>
</li>
@ -82,15 +82,15 @@
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="storehouse:outboundInfo:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="storehouse:outboundInfo:remove">
<a class="btn btn-danger multiple disabled" onclick="removeAll()" shiro:hasPermission="storehouse:outboundInfo:remove">
<i class="fa fa-remove"></i> 删除
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="storehouse:outboundInfo:export">
<i class="fa fa-download"></i> 导出
</a>
<!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="storehouse:outboundInfo:export">-->
<!-- <i class="fa fa-download"></i> 导出-->
<!-- </a>-->
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
<table id="bootstrap-table" style="white-space: nowrap"></table>
</div>
</div>
</div>
@ -106,13 +106,19 @@
var options = {
url: prefix + "/listFL",
createUrl: prefix + "/addFL",
updateUrl: prefix + "/edit/{id}",
updateUrl: prefix + "/editFL/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
clickToSelect: true,
modalName: "outboundInfo",
columns: [{
checkbox: true
},
{
field: 'outboundId',
title: '',
visible: false
},
{
field: 'outboundNo',
title: '出库单号'
@ -174,20 +180,36 @@
formatter: function(value, row, index) {
return $.table.selectDictLabel(materialTypeDatas, value);
}
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.outboundId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.outboundId + '\')"><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
}]
};
$.table.init(options);
});
function removeAll() {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
console.log(rows)
if (rows.length > 0) {
$.modal.confirm("是否删除选中的"+ rows.length +"条出库单?", function () {
$.ajax({
url: prefix + '/removeAll',
type: 'post',
data: {
ids : rows.join()
},
success: function (res) {
// console.log(res)
$("#bootstrap-table").bootstrapTable("refresh");
$.modal.msgSuccess("删除成功!")
},
error: function (res) {
$.modal.msgError(res.error())
}
})
})
} else {
$.modal.msgWarning("请选择一条数据")
}
}
</script>
</body>
</html>

197
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoYL/add.html

@ -49,7 +49,9 @@
<div class="form-group">
<label class="col-sm-3 control-label">工单号/样品单号:</label>
<div class="col-sm-8">
<input name="workOrderNumber" class="form-control" type="text">
<select name="workOrderNumber" class="form-control m-b" required>
<option value="">所有</option>
</select>
</div>
</div>
<div class="form-group">
@ -101,6 +103,7 @@
<label class="col-sm-3 control-label">出库类型:</label>
<div class="col-sm-8">
<select name="outboundType" class="form-control m-b" th:with="type=${@dict.getType('warehousing_out_category')}">
<option selected="selected">工单生产领料</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
@ -117,6 +120,14 @@
<input name="outboundRemarks" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">物料类型:</label>
<div class="col-sm-8">
<select name="materialType" class="form-control m-b" th:with="type=${@dict.getType('ck_meterialt_type')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
<div class="other-container">
<div class="other">
<br><hr>
@ -135,6 +146,8 @@
<script th:inline="javascript">
var prefix = ctx + "storehouse/outboundInfo"
var prefixDetail = ctx + "storehouse/outboundDetail"
var prefixWorkOrderInfo = ctx + "manufacture/workOrderInfo"
var prefixWorkOrderDetail = ctx + "manufacture/workOrderDetail"
var inventoryUnit = [[${@dict.getType('sys_unit_class')}]];
@ -147,14 +160,14 @@
if(getData.length > 0) {
//确认添加选中的物料数据
if ($.validate.form()) {
addOutbountDetail();
addOutboundDetail();
$.operate.save(prefix + "/add", $('#form-outboundInfo-add').serialize());}
} else {
$.modal.alertWarning("未选择物料,请添加!")
}
}
function addOutbountDetail(){
function addOutboundDetail(){
$("#addDetailTable").bootstrapTable('refresh');
let data = $('#addDetailTable').bootstrapTable('getData', true);
//获取outboundDetail
@ -195,31 +208,22 @@
}
});
//出库明细列表
//(工单)出库明细列表
$.ajax({
url: prefixDetail + "/list",
url: prefixWorkOrderInfo + "/list",
type: "post",
dateType: "json",
success: function (res) {
if (res.rows.length > 0) {
var orderData = res.rows;
$("#form-outboundInfo-add select[name='outboundNo']").change(function () {
var outboundNo = $(this).val();
for(let i in orderData){
$("#form-outboundInfo-add select[name='workOrderNumber']").append("<option value='" + orderData[i].workOrderNumber + "'>" + orderData[i].workOrderNumber + "</option>");
}
$("#form-outboundInfo-add select[name='workOrderNumber']").change(function () {
var workOrderNumber = $(this).val();
for (let i=0;i<orderData.length;i++) {
if (orderData[i].outboundNo == outboundNo) {
$("#form-outboundInfo-add input[name='outboundNo]").val(orderData[i].outboundNo);
$("#form-outboundInfo-add input[name='materialRequisitionNumber]").val(orderData[i].materialRequisitionNumber);
$("#form-outboundInfo-add input[name='workOrderNumber]").val(orderData[i].workOrderNumber);
if (orderData[i].workOrderNumber == workOrderNumber) {
$("#form-outboundInfo-add input[name='finishProductCode]").val(orderData[i].finishProductCode);
$("#form-outboundInfo-add input[name='deptId]").val(orderData[i].deptId);
$("#form-outboundInfo-add input[name='deptName]").val(orderData[i].deptName);
$("#form-outboundInfo-add input[name='outboundPicker]").val(orderData[i].outboundPicker);
$("#form-outboundInfo-add input[name='outboundDate]").val(orderData[i].outboundDate);
$("#form-outboundInfo-add input[name='stockNo]").val(orderData[i].stockNo);
$("#form-outboundInfo-add input[name='stockName]").val(orderData[i].stockName);
$("#form-outboundInfo-add input[name='outboundType]").val(orderData[i].outboundType);
$("#form-outboundInfo-add input[name='stockManager]").val(orderData[i].stockManager);
$("#form-outboundInfo-add input[name='outboundRemarks]").val(orderData[i].outboundRemarks);
showDetailMaterial();
}
}
@ -234,6 +238,46 @@
}
});
//显示表内订单信息
function showDetailMaterial() {
$('#addDetailTable').bootstrapTable("removeAll")
var workOrderNumber = $("select[name='workOrderNumber']").val();
$.ajax({
url: prefixWorkOrderDetail + '/list',
type: 'post',
data: {
workOrderNumber: workOrderNumber
},
success: function (res) {
console.log(res)
var count = res.rows.length;
var data = res.rows;
var outboundNo = $("input[name='outboundNo']").val();
for (i = 0; i < res.rows.length; i++) {
$("#addDetailTable").bootstrapTable('insertRow', {
index: count + i,
row: {
outboundNo: outboundNo,
materialCode: data[i].materialCode,
materialName: data[i].materialName,
specificationModel: data[i].specificationModel,
inventoryUnit: data[i].inventoryUnit,
planCount:data[i].materialConsumption,
actualCount:'',
returnCount:'',
reason:'',
purchaseNumber:'',
storageLocation:'',
notReturnOutboundNo:'',
itemNumber:'',
deductionCount:'',
deductionReason:''
}
});
}
}
})
}
$('#addDetailTable').bootstrapTable({
pagination: true,
@ -265,7 +309,7 @@
align: 'center',
formatter: function (value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeMaterialData(\'' + row.materialCode + '\')" ><i class="fa fa-remove"></i>删除</a>');
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeData(\'' + row.materialCode + '\')" ><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
},
@ -292,47 +336,136 @@
},
{
field: 'planCount',
title: '计划数量'
title: '计划数量',
editable: {
type: 'text',
title: '计划数量',
emptytext: '计划数量',
validate: function (v) {
}
}
},
{
field: 'actualCount',
title: '实领数量'
title: '实领数量',
editable: {
type: 'text',
title: '实领数量',
emptytext: '实领数量',
validate: function (v) {
}
}
},
{
field: 'returnCount',
title: '应退数量'
title: '应退数量',
editable: {
type: 'text',
title: '应退数量',
emptytext: '应退数量',
validate: function (v) {
}
}
},
{
field: 'reason',
title: '说明'
title: '说明',
editable: {
type: 'text',
title: '说明',
emptytext: '说明',
validate: function (v) {
}
}
},
{
field: 'purchaseNumber',
title: '进货批号'
title: '进货批号',
editable: {
type: 'text',
title: '进货批号',
emptytext: '进货批号',
validate: function (v) {
}
}
},
{
field: 'storageLocation',
title: '存放位置'
title: '存放位置',
editable: {
type: 'text',
title: '存放位置',
emptytext: '存放位置',
validate: function (v) {
}
}
},
{
field: 'notReturnOutboundNo',
title: '上次多领未还出库单号'
title: '上次多领未还出库单号',
editable: {
type: 'text',
title: '上次多领未还出库单号',
emptytext: '上次多领未还出库单号',
validate: function (v) {
}
}
},
{
field: 'itemNumber',
title: '项次号'
title: '项次号',
editable: {
type: 'text',
title: '项次号',
emptytext: '项次号',
validate: function (v) {
}
}
},
{
field: 'deductionCount',
title: '本次抵扣数量'
title: '本次抵扣数量',
editable: {
type: 'text',
title: '本次抵扣数量',
emptytext: '本次抵扣数量',
validate: function (v) {
}
}
},
{
field: 'deductionReason',
title: '抵扣说明'
title: '抵扣说明',
editable: {
type: 'text',
title: '抵扣说明',
emptytext: '抵扣说明',
validate: function (v) {
}
}
},
]
})
//添加表格内删除物料信息
function removeData(materialCode){
var ids = [];
ids.push(materialCode);
$('#addDetailTable').bootstrapTable("remove",{
field:'materialCode',
values:ids
})
$("#addDetailTable").bootstrapTable('refresh');
}
</script>
</body>

227
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoYL/edit.html

@ -34,6 +34,7 @@
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-outboundInfo-edit" th:object="${outboundInfo}">
<input name="outboundId" th:field="*{outboundId}" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label is-required">出库单号:</label>
<div class="col-sm-8">
@ -49,7 +50,9 @@
<div class="form-group">
<label class="col-sm-3 control-label">工单号/样品单号:</label>
<div class="col-sm-8">
<input name="workOrderNumber" th:field="*{workOrderNumber}" class="form-control" type="text">
<select name="workOrderNumber" class="form-control m-b" required>
<option value="">所有</option>
</select>
</div>
</div>
<div class="form-group">
@ -101,6 +104,7 @@
<label class="col-sm-3 control-label">出库类型:</label>
<div class="col-sm-8">
<select name="outboundType" class="form-control m-b" th:with="type=${@dict.getType('warehousing_out_category')}">
<option selected="selected">工单生产领料</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{outboundType}"></option>
</select>
</div>
@ -119,13 +123,26 @@
</div>
</form>
</div>
<div class="other-container">
<div class="other">
<br><hr>
<h4>材料信息</h4>
<div class="col-sm-12 select-table table-striped">
<table id="addDetailTable" style="white-space:nowrap"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<th:block th:include="include :: select2-js"/>
<th:block th:include="include :: bootstrap-table-editable-js"/>
<script th:inline="javascript">
var getData = [[${outboundInfo}]]
var prefix = ctx + "storehouse/outboundInfo"
var prefixDetail = ctx + "storehouse/outboundDetail"
var prefixWorkOrderInfo = ctx + "manufacture/workOrderInfo"
var prefixWorkOrderDetail = ctx + "manufacture/workOrderDetail"
var inventoryUnit = [[${@dict.getType('sys_unit_class')}]];
@ -138,14 +155,14 @@
if(getData.length > 0) {
//确认添加选中的物料数据
if ($.validate.form()) {
addOutbountDetail();
$.operate.save(prefix + "/add", $('#form-outboundInfo-add').serialize());}
updateOutbountDetail();
$.operate.save(prefix + "/edit", $('#form-outboundInfo-edit').serialize());}
} else {
$.modal.alertWarning("未选择物料,请添加!")
}
}
function addOutbountDetail(){
function updateOutbountDetail(){
$("#addDetailTable").bootstrapTable('refresh');
let data = $('#addDetailTable').bootstrapTable('getData', true);
//获取outboundDetail
@ -167,50 +184,25 @@
minView: "month",
autoclose: true
});
$("input[name='outboundDate']").datetimepicker('setDate', new Date())
//获取出库单号
$.ajax({
url: prefix + "/getOutNoYL",
type: "post",
dateType: "json",
success: function (resp) {
if (resp.code === 0) {
$("input[name='outboundNo']").val(resp.data);
} else {
$.modal.msgError("失败啦");
}
},
error: function () {
$.modal.msgError("后台出错啦!");
}
});
//出库明细列表
//(工单)出库明细列表
$.ajax({
url: prefixDetail + "/list",
url: prefixWorkOrderInfo + "/list",
type: "post",
dateType: "json",
success: function (res) {
if (res.rows.length > 0) {
var orderData = res.rows;
$("#form-outboundInfo-add select[name='outboundNo']").change(function () {
var outboundNo = $(this).val();
for(let i in orderData){
$("#form-outboundInfo-edit select[name='workOrderNumber']").append("<option value='" + orderData[i].workOrderNumber + "'>" + orderData[i].workOrderNumber + "</option>");
}
$("#form-outboundInfo-edit select[name='workOrderNumber']").val(getData.workOrderNumber).trigger("change")
$("#form-outboundInfo-edit select[name='outboundType']").val(getData.outboundType).trigger("change")
$("#form-outboundInfo-edit select[name='workOrderNumber']").change(function () {
var workOrderNumber = $(this).val();
for (let i=0;i<orderData.length;i++) {
if (orderData[i].outboundNo == outboundNo) {
$("#form-outboundInfo-add input[name='outboundNo]").val(orderData[i].outboundNo);
$("#form-outboundInfo-add input[name='materialRequisitionNumber]").val(orderData[i].materialRequisitionNumber);
$("#form-outboundInfo-add input[name='workOrderNumber]").val(orderData[i].workOrderNumber);
$("#form-outboundInfo-add input[name='finishProductCode]").val(orderData[i].finishProductCode);
$("#form-outboundInfo-add input[name='deptId]").val(orderData[i].deptId);
$("#form-outboundInfo-add input[name='deptName]").val(orderData[i].deptName);
$("#form-outboundInfo-add input[name='outboundPicker]").val(orderData[i].outboundPicker);
$("#form-outboundInfo-add input[name='outboundDate]").val(orderData[i].outboundDate);
$("#form-outboundInfo-add input[name='stockNo]").val(orderData[i].stockNo);
$("#form-outboundInfo-add input[name='stockName]").val(orderData[i].stockName);
$("#form-outboundInfo-add input[name='outboundType]").val(orderData[i].outboundType);
$("#form-outboundInfo-add input[name='stockManager]").val(orderData[i].stockManager);
$("#form-outboundInfo-add input[name='outboundRemarks]").val(orderData[i].outboundRemarks);
if (orderData[i].workOrderNumber == workOrderNumber) {
$("#form-outboundInfo-edit input[name='finishProductCode]").val(orderData[i].finishProductCode);
showDetailMaterial();
}
}
@ -225,8 +217,49 @@
}
});
//显示表内订单信息
function showDetailMaterial() {
$('#addDetailTable').bootstrapTable("removeAll")
var outboundNo = $("select[name='outboundNo']").val();
$.ajax({
url: prefixDetail + '/list',
type: 'post',
data: {
outboundNo: outboundNo
},
success: function (res) {
console.log(res)
var count = res.rows.length;
var data = res.rows;
var outboundNo = $("input[name='outboundNo']").val();
for (i = 0; i < res.rows.length; i++) {
$("#addDetailTable").bootstrapTable('insertRow', {
index: count + i,
row: {
outboundNo: outboundNo,
materialCode: data[i].materialCode,
materialName: data[i].materialName,
specificationModel: data[i].specificationModel,
typeMachine:'',
inventoryUnit: data[i].inventoryUnit,
planCount:data[i].materialConsumption,
actualCount:'',
reason:'',
salesOrderNumber:'',
batchNumber:'',
orderNumber:'',
storageLocation:'',
}
});
}
}
})
}
$('#addDetailTable').bootstrapTable({
url: prefixDetail + '/list',
method: "post",
pagination: true,
pageNumber: 1,
pageSize: 10,
@ -245,21 +278,13 @@
// 传递参数查询参数
pageSize: params.limit,
pageNum: params.offset / params.limit + 1,
outboundNo:getData.outboundNo
// enterpriseCode: data[0].enterpriseCode
};
// console.log(data[0].enterpriseCode)
return curParams
},
columns: [
{
title: '操作',
align: 'center',
formatter: function (value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeMaterialData(\'' + row.materialCode + '\')" ><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
},
{
field: 'outboundNo',
title: '出库单号',
@ -277,50 +302,106 @@
field: 'specificationModel',
title: '规格型号'
},
{
field: 'typeMachine',
title: '机种',
editable: {
type: 'text',
title: '机种',
emptytext: '机种',
validate: function (v) {
}
}
},
{
field: 'inventoryUnit',
title: '单位'
},
{
field: 'planCount',
title: '计划数量'
title: '计划数量',
editable: {
type: 'text',
title: '计划数量',
emptytext: '计划数量',
validate: function (v) {
}
}
},
{
field: 'actualCount',
title: '实领数量'
},
{
field: 'returnCount',
title: '应退数量'
title: '实领数量',
editable: {
type: 'text',
title: '实领数量',
emptytext: '实领数量',
validate: function (v) {
}
}
},
{
field: 'reason',
title: '说明'
},
{
field: 'purchaseNumber',
title: '进货批号'
},
{
field: 'storageLocation',
title: '存放位置'
title: '说明',
editable: {
type: 'text',
title: '说明',
emptytext: '说明',
validate: function (v) {
}
}
},
{
field: 'notReturnOutboundNo',
title: '上次多领未还出库单号'
field: 'salesOrderNumber',
title: '订单号',
editable: {
type: 'text',
title: '订单号',
emptytext: '订单号',
validate: function (v) {
}
}
},
{
field: 'itemNumber',
title: '项次号'
field: 'batchNumber',
title: '生产批号',
editable: {
type: 'text',
title: '生产批号',
emptytext: '生产批号',
validate: function (v) {
}
}
},
{
field: 'deductionCount',
title: '本次抵扣数量'
field: 'orderNumber',
title: '订单项次',
editable: {
type: 'text',
title: '订单项次',
emptytext: '订单项次',
validate: function (v) {
}
}
},
{
field: 'deductionReason',
title: '抵扣说明'
},
field: 'storageLocation',
title: '存放位置',
editable: {
type: 'text',
title: '存放位置',
emptytext: '存放位置',
validate: function (v) {
}
}
}
]
})

55
ruoyi-admin/src/main/resources/templates/storehouse/outboundInfoYL/outboundInfoYL.html

@ -53,16 +53,17 @@
</li>
<li>
<label>出库类型:</label>
<select name="outboundType">
<select name="outboundType" th:with="type=${@dict.getType('warehousing_out_category')}">
<option value="">所有</option>
<option value="-1">代码生成请选择字典属性</option>
<option value="">工单生产领料</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>仓管理员:</label>
<input type="text" name="stockManager"/>
</li>
<li>
<li style="display: none">
<label>备注内容:</label>
<input type="text" name="outboundRemarks"/>
</li>
@ -82,7 +83,7 @@
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="storehouse:outboundInfo:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="storehouse:outboundInfo:remove">
<a class="btn btn-danger multiple disabled" onclick="removeAll()" shiro:hasPermission="storehouse:outboundInfo:remove">
<i class="fa fa-remove"></i> 删除
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="storehouse:outboundInfo:export">
@ -90,7 +91,7 @@
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
<table id="bootstrap-table" style="white-space: nowrap"></table>
</div>
</div>
</div>
@ -106,13 +107,19 @@
var options = {
url: prefix + "/listYL",
createUrl: prefix + "/addYL",
updateUrl: prefix + "/edit/{id}",
updateUrl: prefix + "/editYL/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
clickToSelect: true,
modalName: "outboundInfo",
columns: [{
checkbox: true
},
{
field: 'outboundId',
title: '',
visible: false
},
{
field: 'outboundNo',
title: '出库单号'
@ -174,20 +181,36 @@
formatter: function(value, row, index) {
return $.table.selectDictLabel(materialTypeDatas, value);
}
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.outboundId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.outboundId + '\')"><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
}]
};
$.table.init(options);
});
function removeAll() {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
console.log(rows)
if (rows.length > 0) {
$.modal.confirm("是否删除选中的"+ rows.length +"条出库单?", function () {
$.ajax({
url: prefix + '/removeAll',
type: 'post',
data: {
ids : rows.join()
},
success: function (res) {
// console.log(res)
$("#bootstrap-table").bootstrapTable("refresh");
$.modal.msgSuccess("删除成功!")
},
error: function (res) {
$.modal.msgError(res.error())
}
})
})
} else {
$.modal.msgWarning("请选择一条数据")
}
}
</script>
</body>
</html>

9
ruoyi-admin/src/main/resources/templates/system/dept/dept.html

@ -72,8 +72,13 @@
align: "left"
},
{
field: 'orderNum',
title: '排序',
field: 'deptNumber',
title: '部门编号',
align: "left"
},
{
field: 'leader',
title: '主管',
align: "left"
},
{

BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysCaptchaController.class

Binary file not shown.

BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysDeptController.class

Binary file not shown.

4
ruoyi-admin/target/classes/templates/manufacture/deliveryGoodsNotice/add.html

@ -83,7 +83,7 @@
<input name="deliveryAddress" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<div class="form-group" style="display: none">
<label class="col-sm-3 control-label">内外销:</label>
<div class="col-sm-8">
<select name="exportSales" class="form-control m-b" th:with="type=${@dict.getType('sys_export_sales')}">
@ -120,7 +120,7 @@
</select>
</div>
</div>
<div class="form-group">
<div class="form-group" style="display: none">
<label class="col-sm-3 control-label">发货否:</label>
<div class="col-sm-8">
<select name="deliveryGoodsFlag" class="form-control m-b" th:with="type=${@dict.getType('sys_whether')}">

4
ruoyi-admin/target/classes/templates/manufacture/deliveryGoodsNotice/deliveryGoodsNotice.html

@ -28,14 +28,14 @@
<label>客户名称:</label>
<input type="text" name="enterpriseName"/>
</li>
<li>
<li style="display: none">
<label>内外销:</label>
<select name="exportSales" th:with="type=${@dict.getType('sys_export_sales')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<li style="display: none">
<label>发货否:</label>
<select name="deliveryGoodsFlag" th:with="type=${@dict.getType('sys_whether')}">
<option value="">所有</option>

9
ruoyi-admin/target/classes/templates/system/dept/dept.html

@ -72,8 +72,13 @@
align: "left"
},
{
field: 'orderNum',
title: '排序',
field: 'deptNumber',
title: '部门编号',
align: "left"
},
{
field: 'leader',
title: '主管',
align: "left"
},
{

12
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java

@ -26,6 +26,9 @@ public class SysDept extends BaseEntity
/** 部门名称 */
private String deptName;
/** 部门编号*/
private String deptNumber;
/** 显示顺序 */
private String orderNum;
@ -77,6 +80,14 @@ public class SysDept extends BaseEntity
this.ancestors = ancestors;
}
public String getDeptNumber() {
return deptNumber;
}
public void setDeptNumber(String deptNumber) {
this.deptNumber = deptNumber;
}
@NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
public String getDeptName()
@ -170,6 +181,7 @@ public class SysDept extends BaseEntity
.append("parentId", getParentId())
.append("ancestors", getAncestors())
.append("deptName", getDeptName())
.append("deptNumber",getDeptNumber())
.append("orderNum", getOrderNum())
.append("leader", getLeader())
.append("phone", getPhone())

3
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml

@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="parentId" column="parent_id" />
<result property="ancestors" column="ancestors" />
<result property="deptName" column="dept_name" />
<result property="deptNumber" column="dept_number" />
<result property="orderNum" column="order_num" />
<result property="leader" column="leader" />
<result property="phone" column="phone" />
@ -23,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectDeptVo">
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.dept_number, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
from sys_dept d
</sql>

3
ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml

@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="parentId" column="parent_id" />
<result property="ancestors" column="ancestors" />
<result property="deptName" column="dept_name" />
<result property="deptNumber" column="dept_number" />
<result property="orderNum" column="order_num" />
<result property="leader" column="leader" />
<result property="phone" column="phone" />
@ -23,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectDeptVo">
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.dept_number, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
from sys_dept d
</sql>

Loading…
Cancel
Save