Commit 4ea4f617f6a813f16a74cca970cf40e5bd7045a7

Authored by huhai
2 parents 5f854853 b43696fc

Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java
#	src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java
#	src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
Showing 99 changed files with 985 additions and 393 deletions
README.md
1 1 版本说明
2 2 WMS_v2
3   - 1. 入库
4   - 单据新建-0
5   -
  3 +
  4 + /***
  5 + * 1.差异单页面
  6 + * 盘点有差异之后生成差异单,差异单不做操作,展示,和生成调整单
  7 + *
  8 + * 2.实盘登记页面,
  9 + * 做到盘点任务明细后面,
  10 + * 当员工确定容器,扫码物料,弹出选中已经生成的任务进行盘点登记,
  11 + * 可以扫码容器选中任务
  12 + * 新增盘有按钮,可以新增一条盘点明细
  13 + *
  14 + *
  15 + * 3.配置
  16 + * 根据 容器多选,库位多选,巷道,物料多选,库存时间段,呆滞时间
  17 + * 根据配置条件自动生成盘点单
  18 + * 在盘点单下发任务时,重新查询库存,同步变更库存物料数量
  19 + * 给一个自动生成盘点单按钮,定时扫描是否开启
  20 + *
  21 + *
  22 + * 4.下发任务至WCS时做校验,是否同库位同容器已经有任务在执行
  23 + *
  24 + * */
6 25  
7 26 \ No newline at end of file
... ...
src/main/java/com/huaheng/HuaHengServletInitializer.java
... ... @@ -34,7 +34,7 @@ public class HuaHengServletInitializer extends SpringBootServletInitializer
34 34  
35 35 public static void main(String[] args)
36 36 {
37   - SpringApplication.run(HuaHengApplication.class, args);
  37 + //SpringApplication.run(HuaHengServletInitializer.class, args);
38 38 System.out.println("*************** 华恒WMS启动成功WAR ***************\n" +
39 39 " >>> WMS_Servlet启动成功! <<< \n"+
40 40 "   へ     /|▓\n"+
... ...
src/main/java/com/huaheng/api/acs/controller/StateInfoUp.java
... ... @@ -15,7 +15,7 @@ import javax.annotation.Resource;
15 15  
16 16 @RestController
17 17 @RequestMapping("/api/ACS/v1")
18   -@Api(tags = {"ACS"}, description = "登陆接口")
  18 +@Api(tags = {"ACS信息上传接口"}, value = "ACS信息上传接口")
19 19 public class StateInfoUp extends BaseController {
20 20 @Resource
21 21 private AcsService acsService;
... ...
src/main/java/com/huaheng/api/acs/controller/TaskConfirm.java
... ... @@ -15,7 +15,7 @@ import javax.annotation.Resource;
15 15  
16 16 @RestController
17 17 @RequestMapping("/api/ACS/v1")
18   -@Api(tags = {"ACS"}, description = "登陆接口")
  18 +@Api(tags = {"ACS任务回传接口"}, value = "ACS任务回传接口")
19 19 public class TaskConfirm extends BaseController {
20 20 @Resource
21 21 private AcsService acsService;
... ...
src/main/java/com/huaheng/api/general/controller/AdjustApi.java
... ... @@ -16,7 +16,7 @@ import javax.annotation.Resource;
16 16  
17 17 @RestController
18 18 @RequestMapping("/api/adjustApi")
19   -@Api(tags = {"adjust"}, description = "调整单接口")
  19 +@Api(tags = {"调整单接口"}, value = "调整单接口adjust")
20 20 public class AdjustApi {
21 21  
22 22 @Resource
... ...
src/main/java/com/huaheng/api/general/controller/BasicDataApi.java
... ... @@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*;
21 21  
22 22 @RestController
23 23 @RequestMapping("/api/basicData")
24   -@Api(tags = {"basicData"}, description = "基础数据接口")
  24 +@Api(tags = {"基础数据接口"}, value = "基础数据接口basicData")
25 25 public class BasicDataApi extends BaseController {
26 26  
27 27 @Autowired
... ...
src/main/java/com/huaheng/api/general/controller/CycleCountApi.java
... ... @@ -18,7 +18,7 @@ import javax.annotation.Resource;
18 18  
19 19 @RestController
20 20 @RequestMapping("/api/cycleCountApi")
21   -@Api(tags = {"cycleCount"}, description = "盘点单接口")
  21 +@Api(tags = {"盘点单接口"}, value = "盘点单接口cycleCount")
22 22 public class CycleCountApi {
23 23  
24 24 @Resource
... ...
src/main/java/com/huaheng/api/general/controller/LoginApi.java
... ... @@ -19,7 +19,7 @@ import java.util.Map;
19 19  
20 20 @RestController
21 21 @RequestMapping("/api")
22   -@Api(tags = {"Login"}, description = "登陆接口")
  22 +@Api(tags = {"登陆接口"}, value = "登陆接口Login")
23 23 public class LoginApi extends BaseController {
24 24  
25 25 @Autowired
... ... @@ -29,12 +29,15 @@ public class LoginApi extends BaseController {
29 29 @ApiOperation("登陆接口")
30 30 public AjaxResult login(@RequestBody @ApiParam(value="登陆的Map集合") Map<String, String> param)
31 31 {
32   - if (param.get("username") == null)
  32 + if (param.get("username") == null) {
33 33 throw new JSONException("username(用户名)不能为空");
34   - if (param.get("password") == null)
  34 + }
  35 + if (param.get("password") == null) {
35 36 throw new JSONException("password(密码)不能为空");
36   - if (param.get("warehouseCode") == null)
  37 + }
  38 + if (param.get("warehouseCode") == null) {
37 39 throw new JSONException("warehouseCode(仓库编码)不能为空");
  40 + }
38 41 String username = param.get("username");
39 42 String password = param.get("password");
40 43 String warehouseCode = param.get("warehouseCode");
... ...
src/main/java/com/huaheng/api/general/controller/ReceiptApi.java
... ... @@ -17,7 +17,7 @@ import javax.annotation.Resource;
17 17  
18 18 @RestController
19 19 @RequestMapping("/api/receiptApi")
20   -@Api(tags = {"receipt"}, description = "入库单接口")
  20 +@Api(tags = {"入库单接口"}, value = "入库单接口receipt")
21 21 public class ReceiptApi {
22 22  
23 23 @Resource
... ...
src/main/java/com/huaheng/api/general/controller/ReceiptController.java
... ... @@ -17,7 +17,7 @@ import javax.annotation.Resource;
17 17 */
18 18 @RestController
19 19 @RequestMapping("/api/receipt")
20   -@Api(tags = {"basicData"}, description = "入库接口")
  20 +@Api(tags = {"入库接口"}, value = "入库接口receiptApi")
21 21 public class ReceiptController {
22 22  
23 23 @Resource
... ...
src/main/java/com/huaheng/api/general/controller/ShipmentApi.java
... ... @@ -14,7 +14,7 @@ import javax.annotation.Resource;
14 14  
15 15 @RestController
16 16 @RequestMapping("/api/shipmentApi")
17   -@Api(tags = {"shipment"}, description = "出库单接口")
  17 +@Api(tags = {"出库单接口"}, value = "出库单接口shipment")
18 18 public class ShipmentApi {
19 19  
20 20 @Resource
... ...
src/main/java/com/huaheng/api/general/service/AdjustService.java
... ... @@ -134,6 +134,8 @@ public class AdjustService {
134 134 throw new SecurityException("选择单据类型为普通调整时,盘点单编码不能为空!");
135 135 }
136 136 break;
  137 + default:
  138 + throw new ServiceException("类型错误!");
137 139  
138 140 }
139 141  
... ...
src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
... ... @@ -104,7 +104,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
104 104 Location newlocation =new Location();
105 105 String code=ShiroUtils.getWarehouseCode();
106 106 //重入的库位由wcs提供
107   - if(!taskFinishDomain.getRedirectionLocationCode().equals("0")) {
  107 + if(!"0".equals(taskFinishDomain.getRedirectionLocationCode())) {
108 108 LambdaQueryWrapper<Location> locationLa = Wrappers.lambdaQuery();
109 109 locationLa.eq(Location::getCode, taskFinishDomain.getRedirectionLocationCode())
110 110 .eq(Location::getStatus,"empty")
... ...
src/main/java/com/huaheng/common/jasper/DocTypeUtil.java
... ... @@ -20,21 +20,21 @@ public class DocTypeUtil {
20 20 DocType type = DocType.PDF;
21 21 docType = docType.toUpperCase();
22 22  
23   - if(docType.equals("DOC")){
  23 + if("DOC".equals(docType)){
24 24 type =DocType.DOC;
25   - } else if (docType.equals("XLS")) {
  25 + } else if ("XLS".equals(docType)) {
26 26 type = DocType.XLS;
27   - } else if(docType.equals("XLSX")) {
  27 + } else if("XLSX".equals(docType)) {
28 28 type = DocType.XLSX;
29   - }else if (docType.equals("XML")) {
  29 + }else if ("XML".equals(docType)) {
30 30 type = DocType.XML;
31   - } else if (docType.equals("RTF")) {
  31 + } else if ("RTF".equals(docType)) {
32 32 type = DocType.RTF;
33   - } else if (docType.equals("CSV")) {
  33 + } else if ("CSV".equals(docType)) {
34 34 type = DocType.CSV;
35   - } else if (docType.equals("HTML")) {
  35 + } else if ("HTML".equals(docType)) {
36 36 type = DocType.HTML;
37   - } else if (docType.equals("TXT")) {
  37 + } else if ("TXT".equals(docType)) {
38 38 type = DocType.TXT;
39 39 }
40 40 return type;
... ...
src/main/java/com/huaheng/common/jasper/JasperreportUtils.java
1 1 package com.huaheng.common.jasper;
2 2  
  3 +import com.huaheng.common.exception.service.ServiceException;
3 4 import net.sf.jasperreports.engine.*;
4 5 import net.sf.jasperreports.engine.export.*;
5 6 import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
... ... @@ -138,6 +139,9 @@ public class JasperreportUtils {
138 139 case DOC:
139 140 contentType = "application/msword";
140 141 break;
  142 + default:
  143 + throw new ServiceException("格式错误!");
  144 +
141 145 }
142 146 return contentType;
143 147 }
... ... @@ -192,7 +196,6 @@ public class JasperreportUtils {
192 196 * @param docType
193 197 * @return
194 198 */
195   - @SuppressWarnings("deprecation")
196 199 public JRAbstractExporter getJRExporter(DocType docType) {
197 200 JRAbstractExporter exporter = null;
198 201 switch (docType) {
... ... @@ -223,6 +226,8 @@ public class JasperreportUtils {
223 226 case TXT:
224 227 exporter = new JRTextExporter();
225 228 break;
  229 + default:
  230 + throw new ServiceException("格式错误!");
226 231 }
227 232 return exporter;
228 233 }
... ... @@ -251,7 +256,7 @@ public class JasperreportUtils {
251 256  
252 257  
253 258 // 3、判断资源类型
254   - if (ext.equals("xls")) {
  259 + if ("xls".equals(ext)) {
255 260 SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
256 261 // 删除记录最下面的空行
257 262 configuration.setRemoveEmptySpaceBetweenRows(Boolean.TRUE);
... ... @@ -261,7 +266,7 @@ public class JasperreportUtils {
261 266 configuration.setWhitePageBackground(Boolean.FALSE);
262 267 exporter.setConfiguration(configuration);
263 268 }
264   - if(ext.equals("xlsx")) {
  269 + if("xlsx".equals(ext)) {
265 270 SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
266 271 configuration.setRemoveEmptySpaceBetweenRows(Boolean.TRUE);
267 272 configuration.setRemoveEmptySpaceBetweenColumns(Boolean.TRUE);
... ... @@ -270,7 +275,7 @@ public class JasperreportUtils {
270 275 configuration.setDetectCellType(Boolean.TRUE);
271 276 exporter.setConfiguration(configuration);
272 277 }
273   - if (ext.equals("txt")) {
  278 + if ("txt".equals(ext)) {
274 279 SimpleTextReportConfiguration configuration = new SimpleTextReportConfiguration();
275 280 configuration.setCharWidth((float)8);
276 281 configuration.setCharHeight((float)15);
... ... @@ -297,17 +302,17 @@ public class JasperreportUtils {
297 302  
298 303 // 7、解决中文乱码问题
299 304 response.setCharacterEncoding("UTF-8");
300   - if (ext.equals("csv") || ext.equals("doc") || ext.equals("rtf") || ext.equals("txt")) {
  305 + if ("csv".equals(ext) || "doc".equals(ext) || "rtf".equals(ext) || "txt".equals(ext)) {
301 306 outWriter = response.getWriter();
302 307 SimpleWriterExporterOutput outPut = new SimpleWriterExporterOutput(outWriter);
303 308 exporter.setExporterOutput(outPut);
304 309 //exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, outWriter);
305 310 } else {
306   - if(ext.equals("xml")) {
  311 + if("xml".equals(ext)) {
307 312 outWriter = response.getWriter();
308 313 XmlExporterOutput outPut = new SimpleXmlExporterOutput(outWriter);
309 314 exporter.setExporterOutput(outPut);
310   - }else if(ext.equals("html")){
  315 + }else if("html".equals(ext)){
311 316 outWriter = response.getWriter();
312 317 HtmlExporterOutput outPut = new SimpleHtmlExporterOutput(outWriter);
313 318 exporter.setExporterOutput(outPut);
... ... @@ -457,7 +462,7 @@ public class JasperreportUtils {
457 462 }
458 463 if (null != val) {
459 464 if (type.endsWith("String")) {
460   - if (val.equals("0")) {
  465 + if ("0".equals(val)) {
461 466 f.set(obj, "--");
462 467 } else {
463 468 /*
... ...
src/main/java/com/huaheng/common/utils/DataUtils.java
... ... @@ -40,8 +40,11 @@ public class DataUtils {
40 40 */
41 41 public static String getString(Object object)
42 42 {
43   - if (object == null) return null;
44   - else return object.toString();
  43 + if (object == null) {
  44 + return null;
  45 + } else {
  46 + return object.toString();
  47 + }
45 48 }
46 49  
47 50 /**
... ... @@ -51,8 +54,11 @@ public class DataUtils {
51 54 */
52 55 public static Integer getInteger(Object object)
53 56 {
54   - if (object == null) return null;
55   - else return Integer.valueOf(object.toString());
  57 + if (object == null) {
  58 + return null;
  59 + } else {
  60 + return Integer.valueOf(object.toString());
  61 + }
56 62 }
57 63  
58 64 /**
... ... @@ -62,8 +68,11 @@ public class DataUtils {
62 68 */
63 69 public static BigDecimal getBigDecimal(Object object)
64 70 {
65   - if (object == null) return null;
66   - else return new BigDecimal(object.toString());
  71 + if (object == null) {
  72 + return null;
  73 + } else {
  74 + return new BigDecimal(object.toString());
  75 + }
67 76 }
68 77  
69 78 /**
... ... @@ -73,8 +82,11 @@ public class DataUtils {
73 82 */
74 83 public static Double getDouble(Object object)
75 84 {
76   - if (object == null) return null;
77   - else return new Double(object.toString());
  85 + if (object == null) {
  86 + return null;
  87 + } else {
  88 + return new Double(object.toString());
  89 + }
78 90 }
79 91  
80 92 /**
... ...
src/main/java/com/huaheng/common/utils/YamlUtil.java
... ... @@ -68,7 +68,7 @@ public class YamlUtil
68 68 if (map != null && !map.isEmpty() && qualifiedKey != null)
69 69 {
70 70 String input = String.valueOf(qualifiedKey);
71   - if (!input.equals(""))
  71 + if (!"".equals(input))
72 72 {
73 73 if (input.contains("."))
74 74 {
... ...
src/main/java/com/huaheng/common/utils/http/HttpUtils.java
... ... @@ -192,7 +192,7 @@ public class HttpUtils
192 192 String ret = "";
193 193 while ((ret = br.readLine()) != null)
194 194 {
195   - if (ret != null && !ret.trim().equals(""))
  195 + if (ret != null && !"".equals(ret.trim()))
196 196 {
197 197 result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
198 198 }
... ...
src/main/java/com/huaheng/common/utils/poi/ExcelUtil.java
... ... @@ -35,9 +35,9 @@ public class ExcelUtil&lt;T&gt;
35 35 private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
36 36  
37 37 /**
38   - * Excel sheet最大行数,默认65536
  38 + * Excel sheet最大行数,默认65535
39 39 */
40   - public static final int sheetSize = 65536;
  40 + public static final int Sheet_Size = 65535;
41 41  
42 42 /**
43 43 * 工作表名称
... ... @@ -292,7 +292,7 @@ public class ExcelUtil&lt;T&gt;
292 292 try
293 293 {
294 294 // 取出一共有多少个sheet.
295   - double sheetNo = Math.ceil(list.size() / sheetSize);
  295 + double sheetNo = Math.ceil(list.size() / Sheet_Size);
296 296 for (int index = 0; index <= sheetNo; index++)
297 297 {
298 298 createSheet(sheetNo, index);
... ... @@ -353,12 +353,12 @@ public class ExcelUtil&lt;T&gt;
353 353 *
354 354 * @param index 序号
355 355 * @param row 单元格行
356   - * @param cell 类型单元格
  356 + *
357 357 */
358 358 public void fillExcelData(int index, Row row)
359 359 {
360   - int startNo = index * sheetSize;
361   - int endNo = Math.min(startNo + sheetSize, list.size());
  360 + int startNo = index * Sheet_Size;
  361 + int endNo = Math.min(startNo + Sheet_Size, list.size());
362 362 for (int i = startNo; i < endNo; i++)
363 363 {
364 364 row = sheet.createRow(i + 1 - startNo);
... ...
src/main/java/com/huaheng/mobile/download/ApkController.java
... ... @@ -24,10 +24,12 @@ public class ApkController {
24 24 @ApiOperation("获取apk更新信息")
25 25 public AjaxResult getUpdateApkInfo(@RequestBody Map<String, String> param) {
26 26 System.out.println("getUpdateApkInfo pkgName:" + param.get("pkgName"));
27   - if (param.get("pkgName") == null)
  27 + if (param.get("pkgName") == null) {
28 28 throw new JSONException("pkgName不能为空");
29   - if (param.get("versionCode") == null)
  29 + }
  30 + if (param.get("versionCode") == null) {
30 31 throw new JSONException("versionCode不能为空");
  32 + }
31 33 List<ApkInfo> apkinfos = apkMapper.getApkInfoByPkgName(param.get("pkgName"));
32 34 if(apkinfos == null || apkinfos.size() <= 0) {
33 35 return AjaxResult.error("当前已经是最新版本");
... ... @@ -64,16 +66,21 @@ public class ApkController {
64 66 @ApiOperation("插入apk更新信息")
65 67 public ApkInfo insertApkInfo(@RequestBody Map<String, String> param) {
66 68 System.out.println("insertApkInfo pkgName:" + param.get("pkgName"));
67   - if (param.get("pkgName") == null)
  69 + if (param.get("pkgName") == null) {
68 70 throw new JSONException("pkgName不能为空");
69   - if (param.get("versionCode") == null)
  71 + }
  72 + if (param.get("versionCode") == null) {
70 73 throw new JSONException("versionCode不能为空");
71   - if (param.get("versionName") == null)
  74 + }
  75 + if (param.get("versionName") == null) {
72 76 throw new JSONException("versionName");
73   - if (param.get("url") == null)
  77 + }
  78 + if (param.get("url") == null) {
74 79 throw new JSONException("url");
75   - if (param.get("md5") == null)
  80 + }
  81 + if (param.get("md5") == null) {
76 82 throw new JSONException("md5");
  83 + }
77 84 ApkInfo apkInfo = buildApkInfo(param);
78 85 try {
79 86 apkMapper.insertApkInfo(apkInfo.getPkgName(), apkInfo.getVersionCode(), apkInfo.getVersionName(), apkInfo.getUrl(), apkInfo.getMd5());
... ...
src/main/java/com/huaheng/mobile/general/MobileUserController.java
... ... @@ -40,7 +40,7 @@ import java.util.stream.Collectors;
40 40 */
41 41 @RestController
42 42 @RequestMapping("/mobile/")
43   -@Api(tags = {"MobileUserController"}, description = "移动端用户信息")
  43 +@Api(tags = {"移动端用户信息"}, value = "移动端用户信息MobileUserController")
44 44 public class MobileUserController extends BaseController {
45 45  
46 46 @Resource
... ...
src/main/java/com/huaheng/mobile/invenory/InventoryDomain.java 0 → 100644
  1 +package com.huaheng.mobile.invenory;
  2 +
  3 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  4 +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
  5 +
  6 +import java.util.List;
  7 +
  8 +public class InventoryDomain {
  9 +
  10 + private InventoryHeader inventoryHeader;
  11 + private List<InventoryDetail> inventoryDetails;
  12 +
  13 + public InventoryHeader getInventoryHeader() {
  14 + return inventoryHeader;
  15 + }
  16 +
  17 + public void setInventoryHeader(InventoryHeader inventoryHeader) {
  18 + this.inventoryHeader = inventoryHeader;
  19 + }
  20 +
  21 + public List<InventoryDetail> getInventoryDetails() {
  22 + return inventoryDetails;
  23 + }
  24 +
  25 + public void setInventoryDetails(List<InventoryDetail> inventoryDetails) {
  26 + this.inventoryDetails = inventoryDetails;
  27 + }
  28 +}
... ...
src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java
... ... @@ -11,14 +11,19 @@ import com.huaheng.common.utils.security.ShiroUtils;
11 11 import com.huaheng.framework.aspectj.lang.annotation.Log;
12 12 import com.huaheng.framework.aspectj.lang.constant.BusinessType;
13 13 import com.huaheng.framework.web.domain.AjaxResult;
  14 +import com.huaheng.mobile.task.TaskDomain;
14 15 import com.huaheng.pc.config.container.domain.Container;
15 16 import com.huaheng.pc.config.container.service.ContainerService;
16 17 import com.huaheng.pc.config.location.domain.Location;
17 18 import com.huaheng.pc.config.location.service.LocationService;
18 19 import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
  20 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  21 +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
19 22 import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
20 23 import com.huaheng.pc.report.excelReport.mapper.ExcelReportMapper;
21 24 import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
  25 +import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
  26 +import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
22 27 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
23 28 import io.swagger.annotations.Api;
24 29 import io.swagger.annotations.ApiOperation;
... ... @@ -27,6 +32,7 @@ import org.springframework.web.bind.annotation.*;
27 32  
28 33 import javax.annotation.Resource;
29 34 import java.math.BigDecimal;
  35 +import java.text.SimpleDateFormat;
30 36 import java.util.*;
31 37  
32 38 /**
... ... @@ -37,12 +43,14 @@ import java.util.*;
37 43 @CrossOrigin
38 44 @RestController
39 45 @RequestMapping("/mobile/inventory")
40   -@Api(tags = {"MobileInventoryController"}, description = "手机立体库库存相关")
  46 +@Api(tags = {"手机立体库库存相关"}, value = "手机立体库库存相关MobileInventoryController")
41 47 public class MobileInventoryController {
42 48  
43 49 @Resource
44 50 private InventoryHeaderService inventoryService;
45 51 @Resource
  52 + private InventoryDetailService inventoryDetailService;
  53 + @Resource
46 54 private TaskHeaderService taskService;
47 55 @Resource
48 56 private LocationService locationService;
... ... @@ -386,15 +394,6 @@ public class MobileInventoryController {
386 394 public AjaxResult getEmptyContainerInLocation(@RequestBody Map<String, String> param) {
387 395 String warehouCOde = ShiroUtils.getWarehouseCode();
388 396 List<Location> list = containerService.getEmptyContainerInLocation(null,null,ShiroUtils.getWarehouseCode());
389   - List<Location> removeList = new ArrayList<>();
390   - for(Location location : list) {
391   - String containerCode = location.getContainerCode();
392   - Integer taskCount = taskService.UncompleteCount(containerCode);
393   - if (taskCount != null && taskCount.intValue() > 0) {
394   - removeList.add(location);
395   - }
396   - }
397   - list.removeAll(removeList);
398 397 return AjaxResult.success(list);
399 398 }
400 399  
... ... @@ -410,7 +409,7 @@ public class MobileInventoryController {
410 409 for(Location location : locations) {
411 410 for(Container container : containers) {
412 411 if(container.getCode().equals(location.getContainerCode())) {
413   - if(container.getStatus().equals("some")) {
  412 + if("some".equals(container.getStatus())) {
414 413 location.setStatus("some");
415 414 }
416 415 }
... ... @@ -418,4 +417,73 @@ public class MobileInventoryController {
418 417 }
419 418 return AjaxResult.success(locations);
420 419 }
  420 +
  421 + @PostMapping("/searchInventory")
  422 + @ApiOperation("移动端查询库存")
  423 + @Log(title = "移动端查询库存", action = BusinessType.OTHER)
  424 + public AjaxResult searchInventory(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  425 + String companyCode = param.get("companyCode");
  426 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  427 + String now = df.format(new Date());
  428 + Calendar c = Calendar.getInstance();
  429 + c.setTime(new Date());
  430 + c.add(Calendar.DATE, -7);
  431 + Date first = c.getTime();
  432 + String start = df.format(first);//前一天
  433 + LambdaQueryWrapper<InventoryDetail> inventoryQueryWrapper = Wrappers.lambdaQuery();
  434 + inventoryQueryWrapper.eq(InventoryDetail::getCompanyCode, companyCode)
  435 + .eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
  436 + .orderByDesc(InventoryDetail::getCreated);
  437 + List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryQueryWrapper);
  438 + return AjaxResult.success(inventoryDetailList);
  439 + }
  440 +
  441 + @PostMapping("/searchInventoryInLocation")
  442 + @ApiOperation("移动端查询库存")
  443 + @Log(title = "移动端查询库存", action = BusinessType.OTHER)
  444 + public AjaxResult searchInventoryInLocation(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  445 + String companyCode = param.get("companyCode");
  446 + String containerCode = param.get("containerCode");
  447 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  448 + String now = df.format(new Date());
  449 + Calendar c = Calendar.getInstance();
  450 + c.setTime(new Date());
  451 + c.add(Calendar.DATE, -7);
  452 + Date first = c.getTime();
  453 + String start = df.format(first);//前一天
  454 + LambdaQueryWrapper<InventoryDetail> inventoryQueryWrapper = Wrappers.lambdaQuery();
  455 + inventoryQueryWrapper.eq(InventoryDetail::getCompanyCode, companyCode)
  456 + .eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
  457 + .orderByDesc(InventoryDetail::getCreated);
  458 + List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryQueryWrapper);
  459 + return AjaxResult.success(inventoryDetailList);
  460 + }
  461 +
  462 +
  463 + @PostMapping("/findInventory")
  464 + @ApiOperation("移动端查询库存详情")
  465 + @Log(title = "移动端查询库存详情", action = BusinessType.OTHER)
  466 + public AjaxResult findInventory(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  467 + String inventoryDetailId = param.get("inventoryDetailId");
  468 + String companyCode = param.get("companyCode");
  469 + String materialCode = param.get("materialCode");
  470 + String materialName = param.get("materialName");
  471 + String materialSpec = param.get("materialSpec");
  472 + String shipper = param.get("shipper"); //货主
  473 + if (StringUtils.isNull(inventoryDetailId)){
  474 + return AjaxResult.error("任务id为空");
  475 + } else if (StringUtils.isNull(companyCode)){
  476 + return AjaxResult.error("公司编码为空");
  477 + }
  478 +
  479 + /* 查询入库单,如果数据库中不存在,则调用ERP接口拉取单据,成功后再次查询返回结果*/
  480 + LambdaQueryWrapper<InventoryDetail> inventoryQueryWrapper = Wrappers.lambdaQuery();
  481 + inventoryQueryWrapper.eq(InventoryDetail::getId, inventoryDetailId)
  482 + .eq(InventoryDetail::getCompanyCode, companyCode);
  483 + InventoryDetail inventoryDetail = inventoryDetailService.getOne(inventoryQueryWrapper);
  484 + if(inventoryDetail == null) {
  485 + return AjaxResult.error("没有找到库存详情");
  486 + }
  487 + return AjaxResult.success(inventoryDetail);
  488 + }
421 489 }
... ...
src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
... ... @@ -21,6 +21,8 @@ import com.huaheng.pc.config.location.domain.Location;
21 21 import com.huaheng.pc.config.location.service.LocationService;
22 22 import com.huaheng.pc.config.material.domain.Material;
23 23 import com.huaheng.pc.config.material.service.MaterialService;
  24 +import com.huaheng.pc.config.receiptType.domain.ReceiptType;
  25 +import com.huaheng.pc.config.receiptType.service.ReceiptTypeService;
24 26 import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
25 27 import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
26 28 import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
... ... @@ -56,7 +58,7 @@ import java.util.*;
56 58 @CrossOrigin
57 59 @RestController
58 60 @RequestMapping("/mobile/receipt/batch")
59   -@Api(tags = {"MobileBatchReceiptController"}, description = "移动端收货")
  61 +@Api(tags = {"移动端收货"}, value = "移动端收货MobileBatchReceiptController")
60 62 public class MobileBatchReceiptController {
61 63  
62 64 @Resource
... ... @@ -81,6 +83,8 @@ public class MobileBatchReceiptController {
81 83 private CompanyService companyService;
82 84 @Resource
83 85 private IDictDataService dictDataService;
  86 + @Resource
  87 + private ReceiptTypeService receiptTypeService;
84 88  
85 89  
86 90 @PostMapping("/scanContainer")
... ... @@ -101,10 +105,10 @@ public class MobileBatchReceiptController {
101 105 if (container == null) {
102 106 return AjaxResult.error("托盘编码错误");
103 107 }
104   - if (!container.getStatus().equals("empty")) {
  108 + if (!"empty".equals(container.getStatus())) {
105 109 return AjaxResult.error("托盘状态不为空");
106 110 }
107   - if (!container.getLocationCode().equals("")) {
  111 + if (!"".equals(container.getLocationCode())) {
108 112 return AjaxResult.error("");
109 113 }
110 114 return result;
... ... @@ -149,7 +153,7 @@ public class MobileBatchReceiptController {
149 153 return AjaxResult.success(materials);
150 154 }
151 155  
152   - @PostMapping("/getLatestReceipt")
  156 + @PostMapping("/getLatestReceipt")
153 157 @ApiOperation("移动端获取入库单")
154 158 @Log(title = "移动端获取入库单", action = BusinessType.OTHER)
155 159 public AjaxResult getLatestReceipt(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) throws Exception {
... ... @@ -359,7 +363,7 @@ public class MobileBatchReceiptController {
359 363 throw new JSONException("不存在这个托盘");
360 364 }
361 365  
362   - if(!location.getStatus().equals("empty")) {
  366 + if(!"empty".equals(location.getStatus())) {
363 367 throw new JSONException("库位状态不是空闲");
364 368 }
365 369 }
... ... @@ -380,6 +384,9 @@ public class MobileBatchReceiptController {
380 384  
381 385 List<ReceiptContainerView> receiptContainerViewList = new ArrayList<>();
382 386 for(ReceiptBill receiptBill : receiptBills) {
  387 + if(receiptBill.getQty().compareTo(BigDecimal.ZERO) == 0) {
  388 + continue;
  389 + }
383 390 ReceiptContainerView receiptContainerView = new ReceiptContainerView();
384 391 receiptContainerView.setLocationCode(receiptBill.getLocationCode());
385 392 receiptContainerView.setCompanyCode(receiptBill.getCompanyCode());
... ... @@ -458,7 +465,7 @@ public class MobileBatchReceiptController {
458 465 if (loc == null) {
459 466 return AjaxResult.error("目标库位不存在");
460 467 }
461   - if (!loc.getStatus().equals("empty")) {
  468 + if (!"empty".equals(loc.getStatus())) {
462 469 return AjaxResult.error("目标库位非空闲");
463 470 }
464 471 }
... ... @@ -516,7 +523,8 @@ public class MobileBatchReceiptController {
516 523 receiptHeaderQueryWrapper.eq(ReceiptHeader::getCompanyCode, companyCode)
517 524 .eq(ReceiptHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
518 525 .le(ReceiptHeader::getCreated, now)
519   - .gt(ReceiptHeader::getCreated, start);
  526 + .gt(ReceiptHeader::getCreated, start)
  527 + .orderByDesc(ReceiptHeader::getCreated);
520 528 List<ReceiptHeader> receiptHeaderList = receiptHeaderService.list(receiptHeaderQueryWrapper);
521 529 return AjaxResult.success(receiptHeaderList);
522 530 }
... ... @@ -530,5 +538,13 @@ public class MobileBatchReceiptController {
530 538 return AjaxResult.success(dictDataList);
531 539 }
532 540  
  541 + @PostMapping("/getReceiptType")
  542 + @ApiOperation("移动端查询入库类型")
  543 + @Log(title = "移动端查询字典信息", action = BusinessType.OTHER)
  544 + public AjaxResult getReceiptType(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  545 + LambdaQueryWrapper<ReceiptType> receiptTypeLambda = Wrappers.lambdaQuery();
  546 + List<ReceiptType> receiptType = receiptTypeService.list(receiptTypeLambda);
  547 + return AjaxResult.success(receiptType);
  548 + }
533 549  
534 550 }
... ...
src/main/java/com/huaheng/mobile/receipt/MobileOneByOneReceiptController.java
... ... @@ -23,7 +23,7 @@ import java.math.BigDecimal;
23 23 @CrossOrigin
24 24 @RestController
25 25 @RequestMapping("/mobile/receipt/oneByOne")
26   -@Api(tags = {"MobileOneByOneReceiptController"}, description = "移动端逐件收货")
  26 +@Api(tags = {"移动端逐件收货"}, value = "移动端逐件收货MobileOneByOneReceiptController")
27 27 public class MobileOneByOneReceiptController {
28 28  
29 29 @Resource
... ...
src/main/java/com/huaheng/mobile/receipt/MobilePutawayController.java
... ... @@ -30,7 +30,7 @@ import java.util.Map;
30 30 */
31 31 @RestController
32 32 @RequestMapping("/mobile/putaway/execute")
33   -@Api(tags = {"MobilePutawayController"}, description = "手机收货上架")
  33 +@Api(tags = {"手机收货上架"}, value = "手机收货上架MobilePutawayController")
34 34 public class MobilePutawayController {
35 35  
36 36 @Resource
... ... @@ -62,7 +62,7 @@ public class MobilePutawayController {
62 62 .eq(Location::getContainerCode, param.get("containerCode"));
63 63 Location location = locationService.getOne(queryWrapper);
64 64 if(location == null) {
65   - AjaxResult.error("没有该库位");
  65 + return AjaxResult.error("没有该库位");
66 66 }
67 67 return AjaxResult.success("获取成功",location.getCode());
68 68 }
... ...
src/main/java/com/huaheng/mobile/shipment/MobileShipmentController.java
... ... @@ -2,6 +2,8 @@ package com.huaheng.mobile.shipment;
2 2  
3 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.huaheng.api.general.domain.ReceiptDomain;
  6 +import com.huaheng.api.general.domain.ShipmentDomain;
5 7 import com.huaheng.common.exception.BusinessException;
6 8 import com.huaheng.common.utils.StringUtils;
7 9 import com.huaheng.common.utils.security.ShiroUtils;
... ... @@ -12,6 +14,11 @@ import com.huaheng.framework.web.domain.AjaxResult;
12 14 import com.huaheng.mobile.invenory.TaskIds;
13 15 import com.huaheng.pc.config.company.domain.Company;
14 16 import com.huaheng.pc.config.company.service.CompanyService;
  17 +import com.huaheng.pc.config.receiptType.domain.ReceiptType;
  18 +import com.huaheng.pc.config.shipmentType.domain.ShipmentType;
  19 +import com.huaheng.pc.config.shipmentType.service.ShipmentTypeService;
  20 +import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
  21 +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
15 22 import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
16 23 import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
17 24 import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
... ... @@ -19,15 +26,16 @@ import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
19 26 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
20 27 import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel;
21 28 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  29 +import io.swagger.annotations.ApiOperation;
22 30 import io.swagger.annotations.ApiParam;
23 31 import org.springframework.beans.factory.annotation.Autowired;
24 32 import org.springframework.transaction.annotation.Transactional;
25 33 import org.springframework.web.bind.annotation.*;
26 34  
27 35 import javax.annotation.Resource;
28   -import java.util.ArrayList;
29   -import java.util.List;
30   -import java.util.Map;
  36 +import java.text.SimpleDateFormat;
  37 +import java.util.*;
  38 +import java.util.stream.Collectors;
31 39  
32 40 /**
33 41 * @author mahua
... ... @@ -49,6 +57,8 @@ public class MobileShipmentController extends BaseController {
49 57 private CompanyService companyService;
50 58 @Autowired
51 59 private TaskHeaderService taskHeaderService;
  60 + @Autowired
  61 + private ShipmentTypeService shipmentTypeService;
52 62  
53 63 /**
54 64 * 自动组盘
... ... @@ -57,7 +67,8 @@ public class MobileShipmentController extends BaseController {
57 67 */
58 68 @PostMapping("/autoCombination")
59 69 @ResponseBody
60   - public AjaxResult autoCombination(String shipmentCode){
  70 + public AjaxResult autoCombination(@RequestBody Map<String, String> param){
  71 + String shipmentCode = param.get("shipmentCode");
61 72 AjaxResult ajaxResult = shipmentContainerHeaderService.autoCombination(shipmentCode);
62 73 return ajaxResult;
63 74 }
... ... @@ -85,11 +96,6 @@ public class MobileShipmentController extends BaseController {
85 96 ShipmentHeader shipmentHeader = shipmentHeaderService.getOne(lambdaQueryWrapper);
86 97  
87 98 if (shipmentHeader == null) {
88   -// LambdaQueryWrapper<Company> lambdaQueryWrapper1 = Wrappers.lambdaQuery();
89   -// lambdaQueryWrapper1.eq(Company::getCode, param.get("companyCode"));
90   -// Company company = companyService.getOne(lambdaQueryWrapper1);
91   -// shipmentHeaderService.findErpShipment(String.valueOf(company.getId()), param.get("shipmentType"), param.get("referCode"));
92   -// shipmentHeader = shipmentHeaderService.getOne(lambdaQueryWrapper);
93 99 return AjaxResult.error("没有找到出库单");
94 100 }
95 101 LambdaQueryWrapper<ShipmentDetail> detailLambdaQueryWrapper = Wrappers.lambdaQuery();
... ... @@ -101,6 +107,7 @@ public class MobileShipmentController extends BaseController {
101 107 return AjaxResult.success(shipment);
102 108 }
103 109  
  110 +
104 111 /**
105 112 * 根据出库单号生成出库任务
106 113 */
... ... @@ -108,10 +115,15 @@ public class MobileShipmentController extends BaseController {
108 115 @ResponseBody
109 116 @Transactional(rollbackFor = Exception.class)
110 117 public AjaxResult createShipmentTask(@RequestBody List<TaskIds> taskDetails){
  118 + List<Integer> ids = new ArrayList<>();
  119 + for (TaskIds task : taskDetails) {
  120 + ids.add(task.getTaskId());
  121 + }
  122 + List<Integer> listWithoutDuplicates = ids.stream().distinct().collect(Collectors.toList());
111 123 ShipmentTaskCreateModel shipmentTask = new ShipmentTaskCreateModel();
112 124 List<Integer> taskIds = new ArrayList<>();
113   - for (TaskIds task : taskDetails) {
114   - shipmentTask.setShipmentContainerHeaderIds(task.getTaskId());
  125 + for (Integer id : listWithoutDuplicates) {
  126 + shipmentTask.setShipmentContainerHeaderIds(id);
115 127 AjaxResult ajaxResult = taskHeaderService.createTaskFromShipmentContainers(shipmentTask);
116 128 if(ajaxResult.hasErr()){
117 129 return ajaxResult;
... ... @@ -121,4 +133,65 @@ public class MobileShipmentController extends BaseController {
121 133 }
122 134 return AjaxResult.success(taskIds);
123 135 }
  136 +
  137 + @PostMapping("/findShipment")
  138 + @ApiOperation("移动端查询出库单")
  139 + @Log(title = "移动端查询出库单", action = BusinessType.OTHER)
  140 + public AjaxResult findShipment(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  141 + String shipmentCode = param.get("shipmentCode");
  142 + String companyCode = param.get("companyCode");
  143 + if (StringUtils.isNull(shipmentCode)){
  144 + return AjaxResult.error("上游系统关联单号为空");
  145 + } else if (StringUtils.isNull(companyCode)){
  146 + return AjaxResult.error("公司编码为空");
  147 + }
  148 +
  149 + /* 查询入库单,如果数据库中不存在,则调用ERP接口拉取单据,成功后再次查询返回结果*/
  150 + LambdaQueryWrapper<ShipmentHeader> shipmentLambdaQueryWrapper = Wrappers.lambdaQuery();
  151 + shipmentLambdaQueryWrapper.eq(ShipmentHeader::getCode, shipmentCode)
  152 + .eq(ShipmentHeader::getCompanyCode, companyCode);
  153 + ShipmentHeader shipmentHeader = shipmentHeaderService.getOne(shipmentLambdaQueryWrapper);
  154 + if(shipmentHeader == null) {
  155 + return AjaxResult.error("没有找到出库单");
  156 + }
  157 + ShipmentDomain shipment = new ShipmentDomain();
  158 + shipment.setShipmentHeader(shipmentHeader);
  159 +
  160 + LambdaQueryWrapper<ShipmentDetail> shipmentDetailQueryWrapper = Wrappers.lambdaQuery();
  161 + shipmentDetailQueryWrapper.eq(ShipmentDetail::getShipmentId, shipmentHeader.getId());
  162 + List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(shipmentDetailQueryWrapper);
  163 + shipment.setShipmentDetails(shipmentDetailList);
  164 + return AjaxResult.success(shipment);
  165 + }
  166 +
  167 + @PostMapping("/searchShipment")
  168 + @ApiOperation("移动端查询出库单")
  169 + @Log(title = "移动端查询出库单", action = BusinessType.OTHER)
  170 + public AjaxResult searchShipment(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  171 + String companyCode = param.get("companyCode");
  172 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  173 + String now = df.format(new Date());
  174 + Calendar c = Calendar.getInstance();
  175 + c.setTime(new Date());
  176 + c.add(Calendar.DATE, -7);
  177 + Date first = c.getTime();
  178 + String start = df.format(first);//前一天
  179 + LambdaQueryWrapper<ShipmentHeader> shipmentHeaderQueryWrapper = Wrappers.lambdaQuery();
  180 + shipmentHeaderQueryWrapper.eq(ShipmentHeader::getCompanyCode, companyCode)
  181 + .eq(ShipmentHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
  182 + .le(ShipmentHeader::getCreated, now)
  183 + .gt(ShipmentHeader::getCreated, start)
  184 + .orderByDesc(ShipmentHeader::getCreated);
  185 + List<ShipmentHeader> receiptHeaderList = shipmentHeaderService.list(shipmentHeaderQueryWrapper);
  186 + return AjaxResult.success(receiptHeaderList);
  187 + }
  188 +
  189 + @PostMapping("/getShipmentType")
  190 + @ApiOperation("移动端查询入库类型")
  191 + @Log(title = "移动端查询字典信息", action = BusinessType.OTHER)
  192 + public AjaxResult getShipmentType(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  193 + LambdaQueryWrapper<ShipmentType> shipmentTypeLambda = Wrappers.lambdaQuery();
  194 + List<ShipmentType> shipmentTypes = shipmentTypeService.list(shipmentTypeLambda);
  195 + return AjaxResult.success(shipmentTypes);
  196 + }
124 197 }
... ...
src/main/java/com/huaheng/mobile/shipment/MobileTaskForASRSController.java
... ... @@ -24,7 +24,7 @@ import java.util.Map;
24 24 @CrossOrigin
25 25 @RestController
26 26 @RequestMapping("/mobile/task/taskForASRS")
27   -@Api(tags = {"MobileTaskForASRSController"}, description = "手机立体库任务拣货相关")
  27 +@Api(tags = {"手机立体库任务拣货相关"}, value = "手机立体库任务拣货相关MobileTaskForASRSController")
28 28 public class MobileTaskForASRSController {
29 29  
30 30  
... ...
src/main/java/com/huaheng/mobile/task/MobileTaskController.java 0 → 100644
  1 +package com.huaheng.mobile.task;
  2 +
  3 +import com.alibaba.fastjson.JSONException;
  4 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6 +import com.huaheng.api.general.domain.ShipmentDomain;
  7 +import com.huaheng.common.utils.StringUtils;
  8 +import com.huaheng.common.utils.security.ShiroUtils;
  9 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  10 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  11 +import com.huaheng.framework.web.domain.AjaxResult;
  12 +import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction;
  13 +import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService;
  14 +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
  15 +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
  16 +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
  17 +import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
  18 +import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
  19 +import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
  20 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  21 +import io.swagger.annotations.Api;
  22 +import io.swagger.annotations.ApiOperation;
  23 +import io.swagger.annotations.ApiParam;
  24 +import org.springframework.beans.factory.annotation.Autowired;
  25 +import org.springframework.web.bind.annotation.*;
  26 +
  27 +import java.text.SimpleDateFormat;
  28 +import java.util.Calendar;
  29 +import java.util.Date;
  30 +import java.util.List;
  31 +import java.util.Map;
  32 +
  33 +/**
  34 + *
  35 + * @author Enzo Cotter
  36 + * @date 2019/12/15
  37 + */
  38 +@CrossOrigin
  39 +@RestController
  40 +@RequestMapping("/mobile/task")
  41 +@Api(tags = {"手持立体库库存相关"}, value = "手持立体库库存相关")
  42 +public class MobileTaskController {
  43 +
  44 + @Autowired
  45 + private TaskHeaderService taskHeaderService;
  46 + @Autowired
  47 + private TaskDetailService taskDetailService;
  48 + @Autowired
  49 + private InventoryTransactionService inventoryTransactionService;
  50 + @PostMapping("/searchTask")
  51 + @ApiOperation("移动端查询任务")
  52 + @Log(title = "移动端查询任务", action = BusinessType.OTHER)
  53 + public AjaxResult searchTask(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  54 + String companyCode = param.get("companyCode");
  55 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  56 + String now = df.format(new Date());
  57 + Calendar c = Calendar.getInstance();
  58 + c.setTime(new Date());
  59 + c.add(Calendar.DATE, -7);
  60 + Date first = c.getTime();
  61 + String start = df.format(first);//前一天
  62 + LambdaQueryWrapper<TaskHeader> taskHeaderQueryWrapper = Wrappers.lambdaQuery();
  63 + taskHeaderQueryWrapper.eq(TaskHeader::getCompanyCode, companyCode)
  64 + .eq(TaskHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
  65 + .le(TaskHeader::getCreated, now)
  66 + .gt(TaskHeader::getCreated, start)
  67 + .orderByDesc(TaskHeader::getCreated);
  68 + List<TaskHeader> taslHeaderList = taskHeaderService.list(taskHeaderQueryWrapper);
  69 + return AjaxResult.success(taslHeaderList);
  70 + }
  71 +
  72 + @PostMapping("/findTask")
  73 + @ApiOperation("移动端查询任务详情")
  74 + @Log(title = "移动端查询任务详情", action = BusinessType.OTHER)
  75 + public AjaxResult findTask(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  76 + String taskHeadId = param.get("taskHeadId");
  77 + String companyCode = param.get("companyCode");
  78 + if (StringUtils.isNull(taskHeadId)){
  79 + return AjaxResult.error("任务id为空");
  80 + } else if (StringUtils.isNull(companyCode)){
  81 + return AjaxResult.error("公司编码为空");
  82 + }
  83 +
  84 + /* 查询入库单,如果数据库中不存在,则调用ERP接口拉取单据,成功后再次查询返回结果*/
  85 + LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
  86 + taskHeaderLambdaQueryWrapper.eq(TaskHeader::getId, taskHeadId)
  87 + .eq(TaskHeader::getCompanyCode, companyCode);
  88 + TaskHeader taskHeader = taskHeaderService.getOne(taskHeaderLambdaQueryWrapper);
  89 + if(taskHeader == null) {
  90 + return AjaxResult.error("没有找到任务");
  91 + }
  92 + TaskDomain taskDomain = new TaskDomain();
  93 + taskDomain.setTaskHeader(taskHeader);
  94 +
  95 + LambdaQueryWrapper<TaskDetail> taskDetailQueryWrapper = Wrappers.lambdaQuery();
  96 + taskDetailQueryWrapper.eq(TaskDetail::getTaskId, taskHeader.getId());
  97 + List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailQueryWrapper);
  98 + taskDomain.setTaskDetails(taskDetailList);
  99 + return AjaxResult.success(taskDomain);
  100 + }
  101 +
  102 + @PostMapping("/searchTodayInfo")
  103 + @ApiOperation("移动端查询今天信息")
  104 + @Log(title = "移动端查询今天信息", action = BusinessType.OTHER)
  105 + public AjaxResult searchTodayInfo(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  106 + TodayInfo todayInfo = new TodayInfo();
  107 + String companyCode = param.get("companyCode");
  108 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  109 + String now = df.format(new Date());
  110 + now = now + " 23:59:59";
  111 + Calendar c = Calendar.getInstance();
  112 + c.setTime(new Date());
  113 + c.add(Calendar.DATE, 0);
  114 + Date first = c.getTime();
  115 + String start = df.format(first);//前一天
  116 + start = start + " 00:00:00";
  117 + LambdaQueryWrapper<TaskHeader> taskHeaderQueryWrapper = Wrappers.lambdaQuery();
  118 + taskHeaderQueryWrapper.eq(TaskHeader::getCompanyCode, companyCode)
  119 + .eq(TaskHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
  120 + .le(TaskHeader::getCreated, now)
  121 + .gt(TaskHeader::getCreated, start)
  122 + .orderByDesc(TaskHeader::getCreated);
  123 + List<TaskHeader> taslHeaderList = taskHeaderService.list(taskHeaderQueryWrapper);
  124 + todayInfo.setTodayTAask(taslHeaderList.size());
  125 +
  126 + LambdaQueryWrapper<InventoryTransaction> inventoryTransactionLambdaQueryWrapperQuery = Wrappers.lambdaQuery();
  127 + inventoryTransactionLambdaQueryWrapperQuery.eq(InventoryTransaction::getCompanyCode, companyCode)
  128 + .eq(InventoryTransaction::getWarehouseCode, ShiroUtils.getWarehouseCode())
  129 + .le(InventoryTransaction::getCreated, now)
  130 + .gt(InventoryTransaction::getCreated, start)
  131 + .orderByDesc(InventoryTransaction::getCreated);
  132 + int todayReceipt = 0, todayShipment = 0;
  133 + List<InventoryTransaction> inventoryTransactionList = inventoryTransactionService.list(inventoryTransactionLambdaQueryWrapperQuery);
  134 + if(inventoryTransactionList != null) {
  135 + for (InventoryTransaction inventoryTransaction : inventoryTransactionList) {
  136 + if(inventoryTransaction.getTransactionType() == 10) {
  137 + todayReceipt = todayReceipt + inventoryTransaction.getTaskQty().intValue();
  138 + } else if(inventoryTransaction.getTransactionType() == 20) {
  139 + todayShipment = todayShipment + inventoryTransaction.getTaskQty().intValue();
  140 + }
  141 + }
  142 + }
  143 + todayInfo.setTodayReceipt(todayReceipt);
  144 + todayInfo.setTodayShipment(todayShipment);
  145 + return AjaxResult.success(todayInfo);
  146 + }
  147 +
  148 +}
... ...
src/main/java/com/huaheng/mobile/task/TaskDomain.java 0 → 100644
  1 +package com.huaheng.mobile.task;
  2 +
  3 +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
  4 +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
  5 +import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
  6 +import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
  7 +import lombok.Data;
  8 +
  9 +import java.util.List;
  10 +
  11 +@Data
  12 +public class TaskDomain {
  13 +
  14 + private TaskHeader taskHeader;
  15 +
  16 + private List<TaskDetail> taskDetails;
  17 +}
... ...
src/main/java/com/huaheng/mobile/task/TodayInfo.java 0 → 100644
  1 +package com.huaheng.mobile.task;
  2 +
  3 +public class TodayInfo {
  4 +
  5 + private Integer todayTAask;
  6 + private Integer todayReceipt;
  7 + private Integer todayShipment;
  8 +
  9 + public Integer getTodayTAask() {
  10 + return todayTAask;
  11 + }
  12 +
  13 + public void setTodayTAask(Integer todayTAask) {
  14 + this.todayTAask = todayTAask;
  15 + }
  16 +
  17 + public Integer getTodayReceipt() {
  18 + return todayReceipt;
  19 + }
  20 +
  21 + public void setTodayReceipt(Integer todayReceipt) {
  22 + this.todayReceipt = todayReceipt;
  23 + }
  24 +
  25 + public Integer getTodayShipment() {
  26 + return todayShipment;
  27 + }
  28 +
  29 + public void setTodayShipment(Integer todayShipment) {
  30 + this.todayShipment = todayShipment;
  31 + }
  32 +}
... ...
src/main/java/com/huaheng/pc/config/company/service/CompanyServiceImpl.java
... ... @@ -48,7 +48,7 @@ public class CompanyServiceImpl extends ServiceImpl&lt;CompanyMapper, Company&gt; impl
48 48 {
49 49 for (UserCompany userCompanyItem : userCompanys)
50 50 {
51   - if (companyItem.getId() == userCompanyItem.getCompanyId())
  51 + if (companyItem.getId().equals(userCompanyItem.getCompanyId()))
52 52 {
53 53 companyItem.setFlag(true);
54 54 break;
... ...
src/main/java/com/huaheng/pc/config/configValue/controller/ConfigValueController.java
... ... @@ -101,7 +101,7 @@ public class ConfigValueController extends BaseController {
101 101 @ResponseBody
102 102 public AjaxResult addSave(ConfigValue configValue) {
103 103 //检测盘点首选项是否停用
104   - if(configValue.getRecordType().equals("cycleCountPreference")){
  104 + if("cycleCountPreference".equals(configValue.getRecordType())){
105 105 CycleCountPreference cycleCountPreferenceTemp = new CycleCountPreference();
106 106 cycleCountPreferenceTemp.setCode(configValue.getIdentifier());
107 107 cycleCountPreferenceTemp.setWarehouseCode(configValue.getWarehouseCode());
... ...
src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java
... ... @@ -104,7 +104,7 @@ public class ConfigWarningService extends ServiceImpl&lt;ConfigWarningMapper, Confi
104 104  
105 105 /**
106 106 * 物料预警
107   - * @param map 任务明细
  107 + * @param materialCode,materialName 任务明细
108 108 */
109 109 public void materialWarning(String materialCode, String materialName){
110 110 /* 查询预警配置*/
... ...
src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java
... ... @@ -149,7 +149,7 @@ public class ContainerController extends BaseController {
149 149  
150 150 for (Integer id : Convert.toIntArray(ids)) {
151 151 Container container = containerService.getById(id);
152   - if (container.getStatus().equals("empty") && StringUtils.isEmpty(container.getLocationCode())) {
  152 + if ("empty".equals(container.getStatus()) && StringUtils.isEmpty(container.getLocationCode())) {
153 153 container.setEnable(false);
154 154 container.setLastUpdatedBy(ShiroUtils.getLoginName());
155 155 containerService.updateById(container);
... ...
src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java
... ... @@ -20,8 +20,6 @@ import com.huaheng.pc.config.container.domain.Container;
20 20 import com.huaheng.pc.config.container.mapper.ContainerMapper;
21 21 import org.springframework.transaction.annotation.Transactional;
22 22  
23   -import static com.huaheng.framework.web.domain.AjaxResult.error;
24   -
25 23 @Service
26 24 public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container> implements ContainerService{
27 25  
... ... @@ -32,14 +30,9 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
32 30  
33 31 @Override
34 32 public AjaxResult<List<Container>> insertContainer(String type, Integer quantity) {
35   - List<Container> containerList = new ArrayList<>();// 新增托盘总数
36   - List<Container> containers =new ArrayList<>();// 每次插入的托盘数
37   - int result=0;//插入的结果
  33 + List<Container> containerList = new ArrayList<>();
  34 + List<Container> containers =new ArrayList<>();
38 35 Integer number = getNumber(type);
39   - if(quantity>99999)
40   - {
41   - return AjaxResult.error("托盘编码对应的流水码不能大于99999",containerList);
42   - }
43 36 for(int i=0; i<quantity; i++) {
44 37 number++;
45 38 Container container = new Container();
... ... @@ -53,31 +46,19 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
53 46 container.setEnable(true);
54 47 container.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0));
55 48 container.setWarehouseCode(ShiroUtils.getWarehouseCode());
56   - containers.add(container);// 每1000个 新增一次
57   - if( i>0 && i%1000==1 ){
58   - result= containerMapper.addList(containers);
59   - if(result<=0){
60   - return AjaxResult.error("插入数据出错,请核对",containerList);
61   - }
62   - containerList.addAll(containers);
  49 + containers.add(container);
  50 + if( i>0 && (i%1000==0 || i == quantity-1)){
  51 + containerMapper.addList(containers);
63 52 containers = new ArrayList<>();
64 53 }
65 54 }
66   - if(!containers.isEmpty()){
67   - result= containerMapper.addList(containers);// 不够1000的
68   - if(result<=0){
69   - return AjaxResult.error("插入数据出错,请核对",containerList);
70   - }
71   - containerList.addAll(containers);
72   - }
73   - return AjaxResult.success(containerList);
  55 + return AjaxResult.success(containers);
74 56 }
75   -/**
76   - 根据托盘类型获取托盘的最大编码值 如果没有则返回0 流水码最大为5位 99999
77   - **/
  57 +
78 58 private Integer getNumber(String type) {
79   - if (!containerTypeService.checkConfig(type))
  59 + if (!containerTypeService.checkConfig(type)) {
80 60 throw new ServiceException("容器类型编码不存在");
  61 + }
81 62 LambdaQueryWrapper<Container> lambda = Wrappers.lambdaQuery();
82 63 lambda.select(Container::getCode).eq(Container::getContainerType, type)
83 64 .orderByDesc(Container::getId).last("Limit 1");
... ... @@ -92,14 +73,8 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
92 73 }
93 74 }
94 75  
95   - /**
96   - * 托盘导入
97   - * @param containerList
98   - * @param updateSupport TODO:这个参数没有使用 ??
99   - * @param operName
100   - * @return
101   - */
102   - public String importContainer(List<Container> containerList, Boolean updateSupport, String operName){
  76 + @Override
  77 + public String importMaterial(List<Container> containerList, Boolean updateSupport, String operName){
103 78 if (StringUtils.isNull(containerList) || containerList.size() == 0) {
104 79 throw new BusinessException("导入数据不能为空!");
105 80 }
... ... @@ -113,10 +88,11 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
113 88 lambdaQueryWrapper.eq(Container::getCode, container.getCode());
114 89 // 验证是否存在这个容器
115 90 Container m = this.getOne(lambdaQueryWrapper);
  91 +
116 92 if (StringUtils.isNull(m)) {
117   - System.out.println(operName);
118   - container.setCreatedBy(operName);
119   - container.setLastUpdatedBy(operName);
  93 + System.out.println(ShiroUtils.getLoginName());
  94 + container.setCreatedBy(ShiroUtils.getUser().getLoginName());
  95 + container.setLastUpdatedBy(ShiroUtils.getLoginName());
120 96 this.save(container);
121 97 successNum++;
122 98 successMsg.append("<br/>" + successNum + "、编码 " + container.getCode() + " 导入成功");
... ... @@ -150,12 +126,13 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
150 126 }
151 127  
152 128 /**
153   - * 修改容器表container的对应的库位和状态
  129 + * 修改容器库位和状态
154 130 * */
155 131 @Override
156 132 public void updateLocationCodeAndStatus(String containerCode, String locationCode, String status) {
157   - if (StringUtils.isNotEmpty(containerCode) || StringUtils.isNotEmpty(locationCode))
  133 + if (StringUtils.isNotEmpty(containerCode) || StringUtils.isNotEmpty(locationCode)) {
158 134 containerMapper.updateLocationCodeAndStatus(ShiroUtils.getWarehouseCode(), containerCode, locationCode, status);
  135 + }
159 136 }
160 137  
161 138 /**
... ... @@ -164,6 +141,7 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
164 141 * @param containerCode 容器编码
165 142 * @return
166 143 */
  144 + @Override
167 145 @Transactional
168 146 public void removeContainer(String containerType, String containerCode) {
169 147 if ("LS".equals(containerType)) {
... ...
src/main/java/com/huaheng/pc/config/containerCapacity/controller/ContainerCapacityController.java
... ... @@ -142,8 +142,9 @@ public class ContainerCapacityController extends BaseController {
142 142 @ResponseBody
143 143 public AjaxResult remove(String ids)
144 144 {
145   - if (StringUtils.isEmpty(ids))
  145 + if (StringUtils.isEmpty(ids)) {
146 146 return AjaxResult.error("id不能为空");
  147 + }
147 148 for (Integer id : Convert.toIntArray(ids))
148 149 {
149 150  
... ...
src/main/java/com/huaheng/pc/config/containerType/controller/ContainerTypeController.java
... ... @@ -137,8 +137,9 @@ public class ContainerTypeController extends BaseController
137 137 @ResponseBody
138 138 public AjaxResult remove(String ids)
139 139 {
140   - if (StringUtils.isEmpty(ids))
141   - return AjaxResult.error("id不能为空");
  140 + if (StringUtils.isEmpty(ids)) {
  141 + return AjaxResult.error("id不能为空");
  142 + }
142 143 for (Integer id : Convert.toIntArray(ids))
143 144 {
144 145 containerTypeService.removeById(id);
... ...
src/main/java/com/huaheng/pc/config/excelTemplate/service/ExcelTemplateServiceImpl.java
... ... @@ -14,6 +14,7 @@ import java.util.Map;
14 14 @Service("excelService")
15 15 public class ExcelTemplateServiceImpl extends ServiceImpl<ExcelTemplateMapper, ExcelTemplate> implements ExcelTemplateService{
16 16  
  17 + @Override
17 18 public List<Map<String, Object>> getList(){
18 19 LambdaQueryWrapper<ExcelTemplate> lambdaQueryWrapper = Wrappers.lambdaQuery();
19 20 lambdaQueryWrapper.eq(ExcelTemplate::getWarehouseCode, ShiroUtils.getWarehouseCode())
... ...
src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
... ... @@ -258,7 +258,7 @@ public class LocationController extends BaseController {
258 258 List<String> batchList = inventoryDetails.stream().map(InventoryDetail::getBatch).collect(Collectors.toList());
259 259 List<String> materialCodeList = inventoryDetails.stream().map(InventoryDetail::getMaterialCode).collect(Collectors.toList());
260 260 List<BigDecimal> qtyList = inventoryDetails.stream().map(InventoryDetail::getQty).collect(Collectors.toList());
261   - if (status.equals("empty")) {
  261 + if ("empty".equals(status)) {
262 262 if(StringUtils.isEmpty(containerCode)) {
263 263 userDef3 = LocationStatus.IDLE_EMPTY_LOCATION;
264 264 } else {
... ... @@ -272,7 +272,7 @@ public class LocationController extends BaseController {
272 272 userDef3 = LocationStatus.IDLE_FULL_CONTAINER;
273 273 }
274 274 }
275   - } else if(status.equals("lock")) {
  275 + } else if("lock".equals(status)) {
276 276 if(StringUtils.isEmpty(containerCode)) {
277 277 userDef3 = LocationStatus.LOCK_EMPTY_LOCATION;
278 278 } else {
... ...
src/main/java/com/huaheng/pc/config/locationType/controller/LocationTypeController.java
... ... @@ -153,8 +153,9 @@ public class LocationTypeController extends BaseController
153 153 @ResponseBody
154 154 public AjaxResult remove(String ids)
155 155 {
156   - if (StringUtils.isEmpty(ids))
157   - return AjaxResult.error("id不能为空");
  156 + if (StringUtils.isEmpty(ids)) {
  157 + return AjaxResult.error("id不能为空");
  158 + }
158 159 for (Integer id : Convert.toIntArray(ids))
159 160 {
160 161 locationTypeService.removeById(id);
... ...
src/main/java/com/huaheng/pc/config/shipmentType/service/ShipmentTypeService.java
... ... @@ -17,4 +17,6 @@ public interface ShipmentTypeService extends IService&lt;ShipmentType&gt;{
17 17 boolean ShipmentTypeCopy(String warehouseCode, String newWarehouseCode);
18 18  
19 19 List<Map<String, Object>> getType();
  20 +
  21 + Boolean checkCode(String code);
20 22 }
... ...
src/main/java/com/huaheng/pc/config/shipmentType/service/ShipmentTypeServiceImpl.java
... ... @@ -9,6 +9,7 @@ import com.huaheng.pc.config.receiptType.domain.ReceiptType;
9 9 import com.huaheng.pc.config.shipmentPreference.domain.ShipmentPreference;
10 10 import com.huaheng.pc.config.shipmentType.domain.ShipmentType;
11 11 import com.huaheng.pc.config.shipmentType.mapper.ShipmentTypeMapper;
  12 +import com.huaheng.pc.system.dict.domain.DictData;
12 13 import org.springframework.stereotype.Service;
13 14 import org.springframework.transaction.annotation.Transactional;
14 15  
... ... @@ -53,10 +54,26 @@ public class ShipmentTypeServiceImpl extends ServiceImpl&lt;ShipmentTypeMapper, Shi
53 54 }
54 55 }
55 56  
  57 + @Override
56 58 public List<Map<String, Object>> getType(){
57 59 LambdaQueryWrapper<ShipmentType> lambdaQueryWrapper = Wrappers.lambdaQuery();
58 60 lambdaQueryWrapper.eq(StringUtils.isNotEmpty(ShiroUtils.getWarehouseCode()),ShipmentType::getWarehouseCode, ShiroUtils.getWarehouseCode())
59 61 .in(StringUtils.isNotEmpty(ShiroUtils.getCompanyCodeList()),ShipmentType::getCompanyCode, ShiroUtils.getCompanyCodeList());
60 62 return this.listMaps(lambdaQueryWrapper);
61 63 }
  64 +
  65 + @Override
  66 + public Boolean checkCode(String code) {
  67 + LambdaQueryWrapper<ShipmentType> lambdaQueryWrapper = Wrappers.lambdaQuery();
  68 + lambdaQueryWrapper.eq(StringUtils.isNotEmpty(ShiroUtils.getWarehouseCode()),ShipmentType::getWarehouseCode, ShiroUtils.getWarehouseCode())
  69 + .in(StringUtils.isNotEmpty(ShiroUtils.getCompanyCodeList()),ShipmentType::getCompanyCode, ShiroUtils.getCompanyCodeList());
  70 + List<ShipmentType> shipmentTypeList = this.list(lambdaQueryWrapper);
  71 + for(ShipmentType shipmentType : shipmentTypeList) {
  72 + String shipmentCode = shipmentType.getCode();
  73 + if(shipmentCode.equals(code)) {
  74 + return true;
  75 + }
  76 + }
  77 + return false;
  78 + }
62 79 }
... ...
src/main/java/com/huaheng/pc/config/supplier/controller/SupplierController.java
... ... @@ -139,8 +139,9 @@ public class SupplierController extends BaseController {
139 139 @PostMapping( "/remove")
140 140 @ResponseBody
141 141 public AjaxResult remove(String ids) {
142   - if (StringUtils.isEmpty(ids))
  142 + if (StringUtils.isEmpty(ids)) {
143 143 return AjaxResult.error("id不能为空");
  144 + }
144 145 for (Integer id : Convert.toIntArray(ids)) {
145 146 Supplier supplier = supplierService.getById(id);
146 147  
... ...
src/main/java/com/huaheng/pc/config/supplier/service/SupplierService.java
... ... @@ -2,7 +2,13 @@ package com.huaheng.pc.config.supplier.service;
2 2  
3 3 import com.huaheng.pc.config.supplier.domain.Supplier;
4 4 import com.baomidou.mybatisplus.extension.service.IService;
  5 +
  6 +import java.util.List;
  7 +import java.util.Map;
  8 +
5 9 public interface SupplierService extends IService<Supplier>{
6 10  
  11 + List<Map<String, Object>> getCode();
  12 +
7 13  
8 14 }
... ...
src/main/java/com/huaheng/pc/config/supplier/service/SupplierServiceImpl.java
1 1 package com.huaheng.pc.config.supplier.service;
2 2  
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.huaheng.common.utils.security.ShiroUtils;
3 6 import org.springframework.stereotype.Service;
4 7 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5 8 import com.huaheng.pc.config.supplier.mapper.SupplierMapper;
6 9 import com.huaheng.pc.config.supplier.domain.Supplier;
7 10  
8   -@Service
  11 +import java.util.List;
  12 +import java.util.Map;
  13 +
  14 +@Service("SupplierService")
9 15 public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> implements SupplierService{
10 16  
  17 + @Override
  18 + public List<Map<String, Object>> getCode(){
  19 + LambdaQueryWrapper<Supplier> lambda = Wrappers.lambdaQuery();
  20 + lambda.select(Supplier::getCode, Supplier::getId, Supplier::getName)
  21 + .eq(Supplier::getWarehouseCode, ShiroUtils.getWarehouseCode());
  22 + return this.listMaps(lambda);
  23 + }
11 24 }
... ...
src/main/java/com/huaheng/pc/config/warehouse/controller/WareHouseController.java
... ... @@ -136,8 +136,9 @@ public class WareHouseController extends BaseController {
136 136 @PostMapping( "/remove")
137 137 @ResponseBody
138 138 public AjaxResult remove(String codes) {
139   - if (StringUtils.isEmpty(codes))
  139 + if (StringUtils.isEmpty(codes)) {
140 140 return AjaxResult.error("id不能为空");
  141 + }
141 142 for (String code : Convert.toStrArray(codes)) {
142 143 Warehouse warehouse = new Warehouse();
143 144 InventoryHeader inventory = new InventoryHeader();
... ...
src/main/java/com/huaheng/pc/config/zone/controller/ZoneController.java
... ... @@ -138,8 +138,9 @@ public class ZoneController extends BaseController {
138 138 @ResponseBody
139 139 public AjaxResult remove(String ids)
140 140 {
141   - if (StringUtils.isEmpty(ids))
  141 + if (StringUtils.isEmpty(ids)) {
142 142 return AjaxResult.error("id不能为空");
  143 + }
143 144 for (Integer id : Convert.toIntArray(ids))
144 145 {
145 146 Zone record = new Zone();
... ...
src/main/java/com/huaheng/pc/config/zoneCapacity/controller/ZoneCapacityController.java
... ... @@ -137,8 +137,9 @@ public class ZoneCapacityController extends BaseController
137 137 @ResponseBody
138 138 public AjaxResult remove(String ids)
139 139 {
140   - if (StringUtils.isEmpty(ids))
141   - return AjaxResult.error("id不能为空");
  140 + if (StringUtils.isEmpty(ids)) {
  141 + return AjaxResult.error("id不能为空");
  142 + }
142 143 for (Integer id : Convert.toIntArray(ids))
143 144 {
144 145 zoneCapacityService.removeById(id);
... ...
src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java
... ... @@ -182,7 +182,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
182 182 location.setWarehouseCode(inventoryDetail.getWarehouseCode());
183 183 LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery(location);
184 184 location = locationService.getOne(lambdaQueryWrapper);
185   - if (!location.getStatus().equals("empty")) {
  185 + if (!"empty".equals(location.getStatus())) {
186 186 return AjaxResult.error (inventoryDetail.getId() + "库存非空闲,请等待其他任务完成再进行调整!");
187 187 }
188 188 //判断调整库存状态还是数量
... ...
src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java
... ... @@ -120,8 +120,9 @@ public class adjustHeaderController extends BaseController {
120 120 @ResponseBody
121 121 public AjaxResult remove(String ids)
122 122 {
123   - if (StringUtils.isEmpty(ids))
  123 + if (StringUtils.isEmpty(ids)) {
124 124 return AjaxResult.error("id不能为空");
  125 + }
125 126 for (Integer id : Convert.toIntArray(ids))
126 127 {
127 128 AjaxResult result = adjustHeaderService.deleteHeader(id);
... ...
src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderServiceImpl.java
... ... @@ -97,11 +97,14 @@ public class AdjustHeaderServiceImpl extends ServiceImpl&lt;AdjustHeaderMapper, Adj
97 97 throw new SecurityException("选择单据类型为质检调整时,质检单编码不能为空!");
98 98 }
99 99 break;
100   - case "adjust": //盘点调整
  100 + case "cyclecountAdjust": //盘点调整
101 101 if(StringUtils.isEmpty(adjustHeader.getCycleCountCode())){
102 102 throw new SecurityException("选择单据类型为盘点调整时,盘点单编码不能为空!");
103 103 }
104 104 break;
  105 + //除质检和调整需要前置单据,其他不需要
  106 + default:
  107 + break;
105 108 }
106 109  
107 110 adjustHeader.setCreated(new Date());
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountDetail/controller/CycleCountDetailController.java
... ... @@ -169,8 +169,9 @@ public class CycleCountDetailController extends BaseController {
169 169 @ResponseBody
170 170 public AjaxResult remove(String ids){
171 171  
172   - if (StringUtils.isEmpty(ids))
  172 + if (StringUtils.isEmpty(ids)) {
173 173 return AjaxResult.error("删除的明细id不能为空");
  174 + }
174 175 Integer[] detailsIds = Convert.toIntArray(ids);
175 176 CycleCountDetail cyclecountDetail = cycleCountDetailService.getById(detailsIds[0]);
176 177 CycleCountHeader ch = new CycleCountHeader();
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
... ... @@ -240,7 +240,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
240 240 temp.setWarehouseCode(ShiroUtils.getWarehouseCode());
241 241 LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery(temp);
242 242 Location loc = locationService.getOne(lambdaQueryWrapper);
243   - if(!loc.getStatus().equals("empty")){
  243 + if(!"empty".equals(loc.getStatus())){
244 244 return AjaxResult.error(cycleCountDetail.getLocationCode()+"库位不在空闲状态,请先完成其他任务,操作失败!");
245 245 }
246 246 if(StringUtils.isEmpty(loc.getContainerCode())){
... ... @@ -358,12 +358,12 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
358 358 LambdaQueryWrapper<CycleCountHeader> cycleCountHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(cycleCountHeader);
359 359 cycleCountHeader = cycleCountHeaderService.getOne(cycleCountHeaderLambdaQueryWrapper); //主单
360 360 //任务执行后再实盘登记
361   - if(cyclecountDetail.getEnableStatus() < QuantityConstant.CYCLECOUNT_STATUS_EXECUTING){
  361 + /*if(cyclecountDetail.getEnableStatus() < QuantityConstant.CYCLECOUNT_STATUS_EXECUTING){
362 362 return AjaxResult.error("盘点任务未执行不能登记数量!");
363 363 }
364 364 if(cyclecountDetail.getEnableStatus() == QuantityConstant.CYCLECOUNT_STATUS_COMPLETED){
365 365 return AjaxResult.error("盘点任务完成后不能再登记数量!");
366   - }
  366 + }*/
367 367 if(cycleCountHeader == null){
368 368 return AjaxResult.error("主单据不存在");
369 369 }
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java
... ... @@ -157,8 +157,9 @@ public class CycleCountHeaderController extends BaseController {
157 157 @ResponseBody
158 158 public AjaxResult remove(String ids)
159 159 {
160   - if (StringUtils.isEmpty(ids))
  160 + if (StringUtils.isEmpty(ids)) {
161 161 return AjaxResult.error("id不能为空");
  162 + }
162 163 for (Integer id : Convert.toIntArray(ids))
163 164 {
164 165 AjaxResult result = cycleCountHeaderService.delete(id);
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java
... ... @@ -67,7 +67,7 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl&lt;CycleCountHeaderMap
67 67 List<CycleCountDetail> list = cycleCountDetailService.list(lam);
68 68 //当有子单的状态为100时触发主单的完成状态
69 69 //100状态只有全部完成才写入主单
70   - long count100 = list.stream().filter(t->t.getEnableStatus() == QuantityConstant.CYCLECOUNT_STATUS_COMPLETED).count(); //明细已完成的条数
  70 + long count100 = list.stream().filter(t-> t.getEnableStatus().equals(QuantityConstant.CYCLECOUNT_STATUS_COMPLETED)).count(); //明细已完成的条数
71 71 if(count100 == list.size() ){
72 72 cyclecountHeader.setStatusCyc(QuantityConstant.CYCLECOUNT_STATUS_COMPLETED);
73 73 this.saveOrUpdate(cyclecountHeader);
... ... @@ -141,6 +141,7 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl&lt;CycleCountHeaderMap
141 141 /**
142 142 * 新增盘点差异调整单
143 143 * */
  144 + @Override
144 145 @Transactional
145 146 public AjaxResult insertByAdjust(Integer id) {
146 147  
... ...
src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java
... ... @@ -83,7 +83,7 @@ public class InventoryDetailServiceImpl extends ServiceImpl&lt;InventoryDetailMappe
83 83 if(loc == null){
84 84 throw new ServiceException("库存没有库位!");
85 85 }
86   - if(!loc.getStatus().equals("empty")){
  86 + if(!"empty".equals(loc.getStatus())){
87 87 throw new ServiceException(inventoryDetail.getLocationCode()+"状态非空闲,操作失败");
88 88 }
89 89 if(StringUtils.isEmpty(loc.getContainerCode())){
... ... @@ -157,7 +157,7 @@ public class InventoryDetailServiceImpl extends ServiceImpl&lt;InventoryDetailMappe
157 157 }
158 158  
159 159 //查找未质检的
160   - if(inventoryDetail.getQcCheck().equals("2")) {
  160 + if("2".equals(inventoryDetail.getQcCheck())) {
161 161 codeSet.add(inventoryDetail.getReceiptCode());
162 162 }
163 163 }
... ... @@ -167,7 +167,7 @@ public class InventoryDetailServiceImpl extends ServiceImpl&lt;InventoryDetailMappe
167 167 //对库存分类,已入库单划分
168 168 for(Integer id : ids){
169 169 InventoryDetail inventoryDetail=this.getById(id);
170   - if(inventoryDetail.getReceiptCode().equals(code) && inventoryDetail.getQcCheck().equals("2")){
  170 + if(inventoryDetail.getReceiptCode().equals(code) && "2".equals(inventoryDetail.getQcCheck())){
171 171 inventoryDetails.add(inventoryDetail);
172 172 }
173 173 }
... ...
src/main/java/com/huaheng/pc/inventory/inventoryHeader/domain/InventoryHeader.java
... ... @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
7 7 import io.swagger.annotations.ApiModel;
8 8 import io.swagger.annotations.ApiModelProperty;
9 9 import java.io.Serializable;
  10 +import java.math.BigDecimal;
10 11 import java.util.Date;
11 12 import lombok.Data;
12 13  
... ... @@ -75,7 +76,7 @@ public class InventoryHeader implements Serializable {
75 76 */
76 77 @TableField(value = "totalQty")
77 78 @ApiModelProperty(value="总数量")
78   - private Integer totalQty;
  79 + private BigDecimal totalQty;
79 80  
80 81 /**
81 82 * 总行量
... ...
src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
... ... @@ -119,7 +119,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe
119 119 if (StringUtils.isNotEmpty(loc.getContainerCode())) {
120 120 return AjaxResult.error("目标库位已存在托盘");
121 121 }
122   - if (!loc.getStatus().equals("empty")) {
  122 + if (!"empty".equals(loc.getStatus())) {
123 123 return AjaxResult.error("目标库位非空闲");
124 124 }
125 125 }
... ... @@ -212,7 +212,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe
212 212 if(StringUtils.isEmpty(loc.getContainerCode())){
213 213 return AjaxResult.error("源货位没有托盘");
214 214 }
215   - if(!loc.getStatus().equals("empty")){
  215 + if(!"empty".equals(loc.getStatus())){
216 216 return AjaxResult.error("源货位非空闲");
217 217 }
218 218 //判断托盘是否已经存在任务
... ... @@ -291,7 +291,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe
291 291 if(StringUtils.isEmpty(loc.getContainerCode())){
292 292 return AjaxResult.error("源货位没有托盘");
293 293 }
294   - if(!loc.getStatus().equals("empty")){
  294 + if(!"empty".equals(loc.getStatus())){
295 295 return AjaxResult.error("源货位非空闲");
296 296 }
297 297 //创建任务
... ...
src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java
... ... @@ -10,11 +10,13 @@ import com.huaheng.common.utils.security.ShiroUtils;
10 10 import com.huaheng.framework.web.domain.AjaxResult;
11 11 import com.huaheng.mobile.receipt.ReceiptBill;
12 12 import com.huaheng.pc.config.container.domain.Container;
  13 +import com.huaheng.pc.config.container.domain.ContainerStatus;
13 14 import com.huaheng.pc.config.container.service.ContainerService;
14 15 import com.huaheng.pc.config.location.domain.Location;
15 16 import com.huaheng.pc.config.location.service.LocationService;
16 17 import com.huaheng.pc.config.material.domain.Material;
17 18 import com.huaheng.pc.config.material.service.MaterialService;
  19 +import com.huaheng.pc.config.warehouse.domain.Warehouse;
18 20 import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
19 21 import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
20 22 import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
... ... @@ -26,9 +28,12 @@ import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
26 28 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
27 29 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
28 30 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  31 +import io.swagger.models.auth.In;
29 32 import org.springframework.stereotype.Service;
30 33 import org.springframework.transaction.annotation.Transactional;
  34 +
31 35 import javax.annotation.Resource;
  36 +import java.io.PushbackInputStream;
32 37 import java.math.BigDecimal;
33 38 import java.text.MessageFormat;
34 39 import java.util.Calendar;
... ... @@ -64,7 +69,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
64 69 */
65 70 @Override
66 71 @Transactional
67   - public AjaxResult saveContainer(String receiptCode, String containerCode, Integer receiptDetailId,
  72 + public AjaxResult saveCountain(String receiptCode, String containerCode, Integer receiptDetailId,
68 73 String locationCode, Integer qty, String locatingRule) {
69 74 ReceiptDetail detail = receiptDetailService.getById(receiptDetailId);
70 75 //检查容器编码合法性
... ... @@ -77,7 +82,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
77 82 if (taskType == 0){ throw new ServiceException("容器状态未知"); }
78 83 }
79 84 //检查库位编码合法性
80   - if (checkLocationCode(locationCode, containerCode, taskType)) {
  85 + if (checkLocationCode(locationCode, containerCode, taskType) == true) {
81 86 locationService.updateStatus(locationCode, "lock");
82 87 }
83 88  
... ... @@ -235,12 +240,12 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
235 240 throw new ServiceException("收货明细是空!");
236 241 }
237 242 checkContainer(list.get(0));
238   - if (checkLocationCode(list.get(0).getLocationCode(), list.get(0).getLocationCode(), Integer.valueOf(list.get(0).getTaskType()))) {
239   - locationService.updateStatus(list.get(0).getLocationCode(), "lock");
240   - }
  243 +// if (checkLocationCode(list.get(0).getLocationCode(), list.get(0).getLocationCode(), Integer.valueOf(list.get(0).getTaskType())) == true) {
  244 +// locationService.updateStatus(list.get(0).getLocationCode(), "lock");
  245 +// }
241 246 AjaxResult ajaxResult = null;
242 247 for (ReceiptContainerView receiptContainerView : list) {
243   - ajaxResult = saveContainer(receiptContainerView.getReceiptCode(), receiptContainerView.getReceiptContainerCode(),
  248 + ajaxResult = saveCountain(receiptContainerView.getReceiptCode(), receiptContainerView.getReceiptContainerCode(),
244 249 receiptContainerView.getReceiptDetailId(), receiptContainerView.getLocationCode(), receiptContainerView.getQty().intValue(), null);
245 250 }
246 251 return ajaxResult;
... ...
src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java
... ... @@ -178,6 +178,7 @@ public class ReceiptDetailServiceImpl extends ServiceImpl&lt;ReceiptDetailMapper, R
178 178 * @param receiptDetail
179 179 * @return
180 180 */
  181 + @Override
181 182 @Transactional
182 183 public ReceiptDetail queryflow(ReceiptDetail receiptDetail){
183 184 //当单据状态为驳回或作废时不更新状态
... ...
src/main/java/com/huaheng/pc/receipt/receiptHeader/domain/ReceiptHeader.java
... ... @@ -76,6 +76,13 @@ public class ReceiptHeader implements Serializable {
76 76 private Integer referId;
77 77  
78 78 /**
  79 + * 供应商编码
  80 + */
  81 + @TableField(value = "supplierCode")
  82 + @ApiModelProperty(value="供应商编码")
  83 + private String supplierCode;
  84 +
  85 + /**
79 86 * 关联订单类型
80 87 */
81 88 @TableField(value = "referType")
... ...
src/main/java/com/huaheng/pc/report/excelReport/controller/ExcelReportController.java
... ... @@ -101,8 +101,9 @@ public class ExcelReportController extends BaseController {
101 101 @PostMapping( "/remove")
102 102 @ResponseBody
103 103 public AjaxResult remove(String ids) {
104   - if (StringUtils.isEmpty(ids))
  104 + if (StringUtils.isEmpty(ids)) {
105 105 return AjaxResult.error("id不能为空");
  106 + }
106 107 for (Integer id : Convert.toIntArray(ids))
107 108 {
108 109 int i = mapper.delete(id);
... ...
src/main/java/com/huaheng/pc/shipment/shipmentContainerDetail/controller/ShipmentContainerDetailController.java
... ... @@ -108,8 +108,9 @@ public class ShipmentContainerDetailController extends BaseController
108 108 @ResponseBody
109 109 public AjaxResult remove(String ids)
110 110 {
111   - if (StringUtils.isEmpty(ids))
112   - return AjaxResult.error("id不能为空");
  111 + if (StringUtils.isEmpty(ids)) {
  112 + return AjaxResult.error("id不能为空");
  113 + }
113 114 return shipmentContainerHeaderService.cancelCombinationDetail(Arrays.asList((Convert.toIntArray(ids))));
114 115 }
115 116 }
... ...
src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java
... ... @@ -141,8 +141,9 @@ public class ShipmentContainerHeaderController extends BaseController
141 141 @ResponseBody
142 142 public AjaxResult remove(String ids)
143 143 {
144   - if (StringUtils.isEmpty(ids))
145   - return AjaxResult.error("id不能为空");
  144 + if (StringUtils.isEmpty(ids)) {
  145 + return AjaxResult.error("id不能为空");
  146 + }
146 147 List<Integer> IdList = Arrays.asList(Convert.toIntArray(ids));
147 148 return shipmentContainerHeaderService.cancelCombination(IdList);
148 149  
... ... @@ -158,8 +159,9 @@ public class ShipmentContainerHeaderController extends BaseController
158 159 public AjaxResult createTask(String ids)
159 160 {
160 161 AjaxResult ajaxResult=new AjaxResult();
161   - if (StringUtils.isEmpty(ids))
  162 + if (StringUtils.isEmpty(ids)) {
162 163 return AjaxResult.error("id不能为空");
  164 + }
163 165 List<Integer> idList = Arrays.asList(Convert.toIntArray(ids));
164 166 for (Integer id : idList) {
165 167 //获取表头
... ...
src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
... ... @@ -137,7 +137,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;ShipmentCont
137 137 inventoryDetail.setTaskQty(inventoryDetail.getTaskQty().add(shipmentCombinationModel.getShipQty()));
138 138 inventoryDetailService.saveOrUpdate(inventoryDetail);
139 139 //获取库位,然后锁定
140   - if(location.getStatus().equals("empty")) {
  140 + if("empty".equals(location.getStatus())) {
141 141 location.setStatus("lock");
142 142 locationService.saveOrUpdate(location);
143 143 }
... ... @@ -346,7 +346,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;ShipmentCont
346 346 taskDetail.setWaveId(shipmentContainerDetaill.getWaveId());
347 347 taskDetail.setBatch(shipmentContainerDetaill.getBatch());
348 348 taskDetail.setProjectNo(shipmentContainerDetail.getProjectNo());
349   - if (shipmentContainerHeader.getStatus() == QuantityConstant.SHIPMENT_CONTAINER_TASK) {
  349 + if (shipmentContainerHeader.getStatus().equals(QuantityConstant.SHIPMENT_CONTAINER_TASK)) {
350 350 taskDetail.setStatus(QuantityConstant.TASK_STATUS_BUILD);
351 351 } else {
352 352 taskDetail.setStatus(QuantityConstant.TASK_STATUS_RELEASE);
... ... @@ -481,6 +481,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;ShipmentCont
481 481  
482 482  
483 483 //出库自动组盘
  484 + @Override
484 485 public AjaxResult autoCombination(List<ShipmentDetail> shipmentDetailList){
485 486 int num = 0;
486 487 List<Integer> list=new ArrayList<>();
... ...
src/main/java/com/huaheng/pc/shipment/shipmentDetail/controller/ShipmentDetailController.java
... ... @@ -199,8 +199,9 @@ public class ShipmentDetailController extends BaseController
199 199 @ResponseBody
200 200 public AjaxResult remove(String ids)
201 201 {
202   - if (StringUtils.isEmpty(ids))
203   - return AjaxResult.error("id不能为空");
  202 + if (StringUtils.isEmpty(ids)) {
  203 + return AjaxResult.error("id不能为空");
  204 + }
204 205 for (Integer id : Convert.toIntArray(ids))
205 206 {
206 207 ShipmentDetail shipmentDetail=shipmentDetailService.getById(id);
... ...
src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java
... ... @@ -111,8 +111,9 @@ public class ShipmentDetailServiceImpl extends ServiceImpl&lt;ShipmentDetailMapper,
111 111 shipmentHeaderService.saveOrUpdate(shipmentHeader);
112 112 return AjaxResult.success("新增单据明细成功");
113 113 }
114   - else
  114 + else {
115 115 return AjaxResult.error("新增单据明细失败");
  116 + }
116 117 }
117 118  
118 119  
... ... @@ -125,8 +126,9 @@ public class ShipmentDetailServiceImpl extends ServiceImpl&lt;ShipmentDetailMapper,
125 126 @Override
126 127 @Transactional
127 128 public AjaxResult deleteDetail(String id) {
128   - if (StringUtils.isEmpty(id))
  129 + if (StringUtils.isEmpty(id)) {
129 130 return AjaxResult.error("id不能为空");
  131 + }
130 132 String[] ids = id.split(",");
131 133 List<Map<String,Integer>> list = shipmentDetailMapper.SelectFirstStatus(id);
132 134 if (list.size() < 1) {
... ... @@ -155,8 +157,9 @@ public class ShipmentDetailServiceImpl extends ServiceImpl&lt;ShipmentDetailMapper,
155 157 }
156 158 return AjaxResult.success("删除单据明细成功");
157 159 }
158   - else
  160 + else {
159 161 return AjaxResult.error("删除单据明细失败");
  162 + }
160 163 }
161 164  
162 165 @Override
... ...
src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/service/ShipmentDetailHistoryServiceImpl.java
... ... @@ -37,8 +37,9 @@ public class ShipmentDetailHistoryServiceImpl extends ServiceImpl&lt;ShipmentDetail
37 37 @Override
38 38 @Transactional
39 39 public AjaxResult deleteDetail(String id) {
40   - if (StringUtils.isEmpty(id))
  40 + if (StringUtils.isEmpty(id)) {
41 41 return AjaxResult.error("id不能为空");
  42 + }
42 43 String[] ids = id.split(",");
43 44 List<Map<String,Integer>> list = shipmentDetailHistoryMapper.SelectFirstStatus(id);
44 45 if (list.size() < 1) {
... ... @@ -67,7 +68,8 @@ public class ShipmentDetailHistoryServiceImpl extends ServiceImpl&lt;ShipmentDetail
67 68 }
68 69 return AjaxResult.success("删除单据明细成功");
69 70 }
70   - else
  71 + else {
71 72 return AjaxResult.error("删除单据明细失败");
  73 + }
72 74 }
73 75 }
... ...
src/main/java/com/huaheng/pc/shipment/shipmentHeader/mapper/ShipmentHeaderMapper.java
1 1 package com.huaheng.pc.shipment.shipmentHeader.mapper;
2 2  
3 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
4 5 import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
5 6  
6 7 import java.util.List;
... ... @@ -15,4 +16,10 @@ public interface ShipmentHeaderMapper extends BaseMapper&lt;ShipmentHeader&gt; {
15 16  
16 17 List<ShipmentHeader> selectListByCreated();
17 18  
  19 + /**
  20 + * 获得最新出库单
  21 + * @return
  22 + */
  23 + List<ShipmentHeader> getLatestShipment();
  24 +
18 25 }
19 26 \ No newline at end of file
... ...
src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java
... ... @@ -25,4 +25,5 @@ public interface ShipmentHeaderService extends IService&lt;ShipmentHeader&gt;{
25 25  
26 26 List<ShipmentHeader> selectListByCreated();
27 27  
  28 + List<ShipmentHeader> getLatestShipment();
28 29 }
... ...
src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
... ... @@ -13,6 +13,8 @@ import com.huaheng.pc.config.company.service.CompanyService;
13 13 import com.huaheng.pc.config.customer.domain.Customer;
14 14 import com.huaheng.pc.config.customer.service.CustomerServiceImpl;
15 15 import com.huaheng.pc.config.material.service.MaterialService;
  16 +import com.huaheng.pc.config.shipmentType.service.ShipmentTypeService;
  17 +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
16 18 import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
17 19 import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
18 20 import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
... ... @@ -57,11 +59,14 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;ShipmentHeaderMapper,
57 59 private CustomerServiceImpl customerService;
58 60 @Resource
59 61 private MaterialService materialService;
  62 + @Resource
  63 + private ShipmentTypeService shipmentTypeService;
60 64  
61 65 //新增出库主单
62 66 @Override
63 67 public AjaxResult<Boolean> saveHeader(ShipmentHeader shipmentHeader) {
64   - if(dictDataService.checkConfig("shipmentType", shipmentHeader.getShipmentType()) == false)
  68 +
  69 + if(shipmentTypeService.checkCode(shipmentHeader.getShipmentType()) == false)
65 70 {
66 71 return AjaxResult.error("没有对应的出库单类型");
67 72 }
... ... @@ -259,4 +264,10 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;ShipmentHeaderMapper,
259 264 return shipmentHeaderMapper.selectListByCreated();
260 265 }
261 266  
  267 + @Override
  268 + @Transactional(rollbackFor = Exception.class)
  269 + public List<ShipmentHeader> getLatestShipment() {
  270 + return shipmentHeaderMapper.getLatestShipment();
  271 + }
  272 +
262 273 }
... ...
src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java
... ... @@ -101,8 +101,9 @@ public class ShipmentHeaderHistoryController extends BaseController
101 101 @PostMapping( "/remove")
102 102 @ResponseBody
103 103 public AjaxResult remove(String ids) {
104   - if (StringUtils.isEmpty(ids))
105   - return AjaxResult.error("id不能为空");
  104 + if (StringUtils.isEmpty(ids)) {
  105 + return AjaxResult.error("id不能为空");
  106 + }
106 107 for (Integer id : Convert.toIntArray(ids))
107 108 {
108 109 boolean result=shipmentHeaderHistoryService.removeById(id);
... ...
src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java
... ... @@ -2,6 +2,7 @@ package com.huaheng.pc.shipment.shippingCombination.controller;
2 2  
3 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.huaheng.common.constant.QuantityConstant;
5 6 import com.huaheng.common.exception.service.ServiceException;
6 7 import com.huaheng.common.utils.StringUtils;
7 8 import com.huaheng.common.utils.security.ShiroUtils;
... ... @@ -19,6 +20,7 @@ import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailServiceImpl;
19 20 import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
20 21 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
21 22 import com.huaheng.pc.shipment.shippingCombination.service.ShippingCombinationService;
  23 +import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel;
22 24 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
23 25 import org.apache.shiro.authz.annotation.RequiresPermissions;
24 26 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -161,6 +163,12 @@ public class ShippingCombinationController extends BaseController {
161 163 @ResponseBody
162 164 public AjaxResult Addcombination(ShipmentCombinationModel shipmentCombinationModel){
163 165 ShipmentContainerHeader shipmentContainerHeader= shipmentContainerHeaderService.combination(shipmentCombinationModel);
  166 + ShipmentTaskCreateModel shipmentTask = new ShipmentTaskCreateModel();
  167 + shipmentTask.setShipmentContainerHeaderIds(shipmentContainerHeader.getId());
  168 + AjaxResult ajaxResult = taskHeaderService.createTaskFromShipmentContainers(shipmentTask);
  169 + if (ajaxResult.hasErr()){
  170 + throw new ServiceException("任务生成失败");
  171 + }
164 172 return AjaxResult.success(shipmentContainerHeader.getId());
165 173 }
166 174  
... ... @@ -174,6 +182,17 @@ public class ShippingCombinationController extends BaseController {
174 182 @ResponseBody
175 183 public AjaxResult autoCombination(String shipmentCode){
176 184 AjaxResult ajaxResult = shipmentContainerHeaderService.autoCombination(shipmentCode);
  185 + LambdaQueryWrapper<ShipmentContainerHeader> shipmentContainerHeader=Wrappers.lambdaQuery();
  186 + shipmentContainerHeader.eq(ShipmentContainerHeader::getStatus, QuantityConstant.SHIPMENT_CONTAINER_BUILD);
  187 + List<ShipmentContainerHeader> shipmentContainerHeaders=shipmentContainerHeaderService.list(shipmentContainerHeader);
  188 + for(ShipmentContainerHeader item: shipmentContainerHeaders){
  189 + ShipmentTaskCreateModel shipmentTask = new ShipmentTaskCreateModel();
  190 + shipmentTask.setShipmentContainerHeaderIds(item.getId());
  191 + AjaxResult ajaxResults = taskHeaderService.createTaskFromShipmentContainers(shipmentTask);
  192 + if (ajaxResults.hasErr()){
  193 + throw new ServiceException("任务生成失败");
  194 + }
  195 + }
177 196 return ajaxResult;
178 197 }
179 198  
... ...
src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java
... ... @@ -123,8 +123,8 @@ public class WaveService extends ServiceImpl&lt;WaveMapper, Wave&gt; {
123 123 return AjaxResult.error("id为"+id+"的波次不存在");
124 124 }
125 125  
126   - if(wave.getCurrentWaveStep() != QuantityConstant.WAVE_STEP_BUILD &&
127   - wave.getCurrentWaveStep()!=QuantityConstant.WAVE_STEP_ERROR){
  126 + if(!wave.getCurrentWaveStep().equals(QuantityConstant.WAVE_STEP_BUILD) &&
  127 + !wave.getCurrentWaveStep().equals(QuantityConstant.WAVE_STEP_ERROR)){
128 128 return AjaxResult.error("id为"+id+"的波次已执行,无法剔除单据");
129 129 }
130 130  
... ... @@ -169,7 +169,7 @@ public class WaveService extends ServiceImpl&lt;WaveMapper, Wave&gt; {
169 169 return AjaxResult.error("id为"+id+"的波次不存在");
170 170 }
171 171  
172   - if(wave.getCurrentWaveStep() != QuantityConstant.WAVE_STEP_START){
  172 + if(!wave.getCurrentWaveStep().equals(QuantityConstant.WAVE_STEP_START)){
173 173 return AjaxResult.error("id为"+id+"的波次未执行,无法完成");
174 174 }
175 175  
... ... @@ -186,7 +186,7 @@ public class WaveService extends ServiceImpl&lt;WaveMapper, Wave&gt; {
186 186 //找到未生成出库任务的组盘头
187 187 List<Integer> idList =new ArrayList<>();
188 188 for(ShipmentContainerHeader item : shipmentContainerHeaders){
189   - if(item.getStatus() == QuantityConstant.SHIPMENT_CONTAINER_BUILD){
  189 + if(item.getStatus().equals(QuantityConstant.SHIPMENT_CONTAINER_BUILD)){
190 190 idList.add(item.getId());
191 191 }
192 192 }
... ... @@ -231,7 +231,7 @@ public class WaveService extends ServiceImpl&lt;WaveMapper, Wave&gt; {
231 231  
232 232 //1、查看此波次是否可以释放
233 233 Wave wave = this.getById(id);
234   - if(wave == null || wave.getStatus() == QuantityConstant.WAVE_STATUS_START){
  234 + if(wave == null || wave.getStatus().equals(QuantityConstant.WAVE_STATUS_START)){
235 235 return AjaxResult.error(id+"波次不可释放,正在执行中");
236 236 }
237 237  
... ... @@ -285,7 +285,7 @@ public class WaveService extends ServiceImpl&lt;WaveMapper, Wave&gt; {
285 285 }
286 286 }
287 287  
288   - if(wave.getCurrentWaveStep() == QuantityConstant.WAVE_STEP_END) {
  288 + if(wave.getCurrentWaveStep().equals(QuantityConstant.WAVE_STEP_END)) {
289 289 //成功释放——找到此波次的未执行的子任务列表
290 290 LambdaQueryWrapper<TaskHeader> lam = Wrappers.lambdaQuery();
291 291 lam.eq(TaskHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
... ... @@ -299,20 +299,20 @@ public class WaveService extends ServiceImpl&lt;WaveMapper, Wave&gt; {
299 299 for(TaskHeader item :taskHeaders){
300 300 taskIds.add(item.getId());
301 301 }
302   - taskHeaderService.sendTaskToWcs((Integer[])taskIds.toArray());
  302 + taskHeaderService.sendTaskToWcs(taskIds.toArray(new Integer[taskIds.size()]));
303 303 }
304 304  
305 305 //修改波次状态
306   - if(wave.getCurrentWaveStep() == QuantityConstant.WAVE_STEP_END) {
  306 + if(wave.getCurrentWaveStep().equals(QuantityConstant.WAVE_STEP_END)) {
307 307 wave.setStatus(QuantityConstant.WAVE_STATUS_END);
308 308 wave.setCurrentWaveStep(QuantityConstant.WAVE_STEP_FREED);
309 309 wave.setLastWaveStep(QuantityConstant.WAVE_STEP_END);
310 310 }
311   - if(wave.getCurrentWaveStep() == QuantityConstant.WAVE_STATUS_BUILD){
  311 + if(wave.getCurrentWaveStep().equals(QuantityConstant.WAVE_STATUS_BUILD)){
312 312 wave.setCurrentWaveStep(QuantityConstant.WAVE_STEP_FREED);
313 313 wave.setLastWaveStep(QuantityConstant.WAVE_STEP_BUILD);
314 314 }
315   - if(wave.getCurrentWaveStep() == QuantityConstant.WAVE_STATUS_ERROR){
  315 + if(wave.getCurrentWaveStep().equals(QuantityConstant.WAVE_STATUS_ERROR)){
316 316 wave.setCurrentWaveStep(QuantityConstant.WAVE_STEP_FREED);
317 317 wave.setLastWaveStep(QuantityConstant.WAVE_STEP_ERROR);
318 318 }
... ...
src/main/java/com/huaheng/pc/system/dict/service/DictDataServiceImpl.java
... ... @@ -31,8 +31,9 @@ public class DictDataServiceImpl implements IDictDataService
31 31 @Override
32 32 public List<DictData> selectDictDataList(DictData dictData)
33 33 {
34   - if (dictData.getWarehouseCode() == null)
  34 + if (dictData.getWarehouseCode() == null) {
35 35 dictData.setWarehouseCode(ShiroUtils.getWarehouseCode());
  36 + }
36 37 return dictDataMapper.selectDictDataList(dictData);
37 38 }
38 39  
... ... @@ -106,8 +107,9 @@ public class DictDataServiceImpl implements IDictDataService
106 107 @Override
107 108 public int insertDictData(DictData dictData)
108 109 {
109   - if (dictData.getWarehouseCode() == null)
  110 + if (dictData.getWarehouseCode() == null) {
110 111 dictData.setWarehouseCode(ShiroUtils.getWarehouseCode());
  112 + }
111 113 dictData.setCreateBy(ShiroUtils.getLoginName());
112 114 return dictDataMapper.insertDictData(dictData);
113 115 }
... ... @@ -139,10 +141,11 @@ public class DictDataServiceImpl implements IDictDataService
139 141 dictData.setDictType(type);
140 142 dictData.setDictValue(dictValue);
141 143 Integer id = dictDataMapper.checkConfig(dictData);
142   - if (id == null)
  144 + if (id == null) {
143 145 return false;
144   - else
  146 + } else {
145 147 return true;
  148 + }
146 149 }
147 150  
148 151  
... ... @@ -151,6 +154,7 @@ public class DictDataServiceImpl implements IDictDataService
151 154 * @param warehouseCode
152 155 * @return
153 156 */
  157 + @Override
154 158 public int deleteDictDataByWarehouseCode(String warehouseCode){
155 159 return dictDataMapper.deleteDictDataByWarehouseCode(warehouseCode);
156 160 }
... ... @@ -160,8 +164,9 @@ public class DictDataServiceImpl implements IDictDataService
160 164 {
161 165 List<DictData> dictDataList=new ArrayList<>();
162 166 for(DictData dictData: dictDatas) {
163   - if (dictData.getWarehouseCode() == null)
  167 + if (dictData.getWarehouseCode() == null) {
164 168 dictData.setWarehouseCode(ShiroUtils.getWarehouseCode());
  169 + }
165 170 dictData.setCreateBy(ShiroUtils.getLoginName());
166 171 dictDataList.add(dictData);
167 172 }
... ...
src/main/java/com/huaheng/pc/system/dict/service/DictTypeServiceImpl.java
... ... @@ -39,8 +39,9 @@ public class DictTypeServiceImpl implements IDictTypeService
39 39 @Override
40 40 public List<DictType> selectDictTypeList(DictType dictType)
41 41 {
42   - if (dictType.getWarehouseCode() == null)
  42 + if (dictType.getWarehouseCode() == null) {
43 43 dictType.setWarehouseCode(ShiroUtils.getWarehouseCode());
  44 + }
44 45 return dictTypeMapper.selectDictTypeList(dictType);
45 46 }
46 47  
... ... @@ -103,8 +104,9 @@ public class DictTypeServiceImpl implements IDictTypeService
103 104 @Override
104 105 public int insertDictType(DictType dictType)
105 106 {
106   - if (dictType.getWarehouseCode() == null)
  107 + if (dictType.getWarehouseCode() == null) {
107 108 dictType.setWarehouseCode(ShiroUtils.getWarehouseCode());
  109 + }
108 110 dictType.setCreateBy(ShiroUtils.getLoginName());
109 111 return dictTypeMapper.insertDictType(dictType);
110 112 }
... ... @@ -170,8 +172,9 @@ public class DictTypeServiceImpl implements IDictTypeService
170 172 {
171 173 List<DictType> dictTypeList=new ArrayList<>();
172 174 for(DictType dictType:dictTypes){
173   - if (dictType.getWarehouseCode() == null)
  175 + if (dictType.getWarehouseCode() == null) {
174 176 dictType.setWarehouseCode(ShiroUtils.getWarehouseCode());
  177 + }
175 178 dictType.setCreateBy(ShiroUtils.getLoginName());
176 179 dictTypeList.add(dictType);
177 180 }
... ...
src/main/java/com/huaheng/pc/system/user/controller/HomeController.java
... ... @@ -102,7 +102,7 @@ public class HomeController extends BaseController {
102 102 @ResponseBody
103 103 public AjaxResult getInventoryStatus(String type){
104 104 List<Map<String, Object>> list=new ArrayList<>();
105   - if(type.equals("1")) {
  105 + if("1".equals(type)) {
106 106 Warehouse warehouse=new Warehouse();
107 107 List<Warehouse> warehouseList=warehouseService.selectListEntityByEqual(warehouse);
108 108 for(Warehouse item:warehouseList) {
... ... @@ -171,15 +171,15 @@ public class HomeController extends BaseController {
171 171 List<TaskDetail> receiptDetails=new ArrayList<>();
172 172 List<TaskDetail> shipmentDetails=new ArrayList<>();
173 173 Map map=new ModelMap();
174   - if(type.equals("1")) {
  174 + if("1".equals(type)) {
175 175 receiptDetails = receiptDetailService.getReceiptQtyLast7Days();
176 176 shipmentDetails = shipmentDetailService.getShipmentQtyLast7Days();
177 177 }
178   - if(type.equals("2")){
  178 + if("2".equals(type)){
179 179 receiptDetails =receiptDetailService.getWarehouseReceipt();
180 180 shipmentDetails=shipmentDetailService.getWarehouseShipment();
181 181 }
182   - if(type.equals("3")){
  182 + if("3".equals(type)){
183 183 receiptDetails =receiptDetailService.getCompanyReceipt();
184 184 shipmentDetails=shipmentDetailService.getCompanyShipment();
185 185 }
... ... @@ -193,7 +193,7 @@ public class HomeController extends BaseController {
193 193 @ResponseBody
194 194 public AjaxResult getInventoryProp(String type){
195 195 List<Map<String, Object>> list=new ArrayList<>();
196   - if(type.equals("1")) {
  196 + if("1".equals(type)) {
197 197 Warehouse warehouse=new Warehouse();
198 198 List<Warehouse> warehouseList=warehouseService.selectListEntityByEqual(warehouse);
199 199 for(Warehouse item:warehouseList) {
... ...
src/main/java/com/huaheng/pc/system/user/controller/IndexController.java
... ... @@ -78,7 +78,7 @@ public class IndexController extends BaseController
78 78 for(LinkedHashMap<String, Object> item : results){
79 79 ChartData chartData = new ChartData();
80 80 for(Map.Entry<String, Object> entries : item.entrySet()){
81   - if(entries.getKey().equals("状态")){
  81 + if("状态".equals(entries.getKey())){
82 82 option.legend().getData().add(entries.getValue());
83 83 chartData.setName(entries.getValue().toString());
84 84 }else{
... ...
src/main/java/com/huaheng/pc/system/user/controller/UserController.java
... ... @@ -160,8 +160,9 @@ public class UserController extends BaseController
160 160 }
161 161 AjaxResult ajaxResult = toAjax(userService.updateUser(user));
162 162  
163   - if (ShiroUtils.getLoginName().equals(user.getUserName()))
  163 + if (ShiroUtils.getLoginName().equals(user.getUserName())) {
164 164 ShiroUtils.logout();
  165 + }
165 166  
166 167 return ajaxResult;
167 168 }
... ...
src/main/java/com/huaheng/pc/system/user/domain/User.java
... ... @@ -167,7 +167,7 @@ public class User implements Serializable
167 167  
168 168 public static boolean isAdmin(String loginName)
169 169 {
170   - return loginName.equals("superAdmin");
  170 + return "superAdmin".equals(loginName);
171 171 }
172 172  
173 173 @Override
... ...
src/main/java/com/huaheng/pc/system/user/service/UserServiceImpl.java
... ... @@ -417,7 +417,7 @@ public class UserServiceImpl implements IUserService
417 417 {
418 418 Integer userId = StringUtils.isNull(user.getId()) ? -1 : user.getId();
419 419 User info = userMapper.checkPhoneUnique(user.getPhoneNumber());
420   - if (StringUtils.isNotNull(info) && info.getId() != userId)
  420 + if (StringUtils.isNotNull(info) && !info.getId().equals(userId))
421 421 {
422 422 return UserConstants.USER_PHONE_NOT_UNIQUE;
423 423 }
... ... @@ -435,7 +435,7 @@ public class UserServiceImpl implements IUserService
435 435 {
436 436 Integer userId = StringUtils.isNull(user.getId()) ? -1 : user.getId();
437 437 User info = userMapper.checkEmailUnique(user.getEmail());
438   - if (StringUtils.isNotNull(info) && info.getId() != userId)
  438 + if (StringUtils.isNotNull(info) && !info.getId().equals(userId))
439 439 {
440 440 return UserConstants.USER_EMAIL_NOT_UNIQUE;
441 441 }
... ... @@ -502,8 +502,9 @@ public class UserServiceImpl implements IUserService
502 502 else
503 503 {
504 504 list = userMapper.getWarehouseByUserName(loginName);
505   - if (list.size()==1)
  505 + if (list.size()==1) {
506 506 list=userMapper.getWarehouseByUserCode(loginName);
  507 + }
507 508  
508 509  
509 510 }
... ...
src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
... ... @@ -108,8 +108,9 @@ public class TaskHeaderController extends BaseController {
108 108 @ResponseBody
109 109 public AjaxResult execute(String taskId)
110 110 {
111   - if (StringUtils.isEmpty(taskId))
  111 + if (StringUtils.isEmpty(taskId)){
112 112 return AjaxResult.error("taskId不能为空");
  113 + }
113 114 AjaxResult ajaxResult = taskHeaderService.sendTaskToWcs(Convert.toIntArray(taskId));
114 115 return ajaxResult;
115 116 }
... ... @@ -122,8 +123,9 @@ public class TaskHeaderController extends BaseController {
122 123 @PostMapping( "/completeTaskByWMS")
123 124 @ResponseBody
124 125 public AjaxResult completeTaskByWMS(String taskId){
125   - if (StringUtils.isEmpty(taskId))
  126 + if (StringUtils.isEmpty(taskId)){
126 127 return AjaxResult.error("taskId不能为空");
  128 + }
127 129 return taskHeaderService.completeTaskByWMS(Convert.toIntArray(taskId), null);
128 130 }
129 131  
... ... @@ -152,10 +154,12 @@ public class TaskHeaderController extends BaseController {
152 154 @PostMapping("/setLocationCode")
153 155 @ResponseBody
154 156 public AjaxResult setLocationCode( Integer taskId, Integer high){
155   - if (taskId == null)
  157 + if (taskId == null){
156 158 return AjaxResult.error("任务id不能为空");
157   - if (high == null)
  159 + }
  160 + if (high == null){
158 161 return AjaxResult.error("高库位标识不能为空");
  162 + }
159 163 return taskHeaderService.setLocationCode(taskId, high);
160 164 }
161 165  
... ...
src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
... ... @@ -92,7 +92,7 @@ public interface TaskHeaderService extends IService&lt;TaskHeader&gt;{
92 92  
93 93 AjaxResult createAutoEmptyOut(String warehouseCode);
94 94  
95   - AjaxResult<String> getLocationCode(Integer taskId,String warehouseCode,String weight);
  95 + String getLocationCode(Integer taskId,String warehouseCode,String weight);
96 96  
97 97 AjaxResult setLocationCode(Integer taskId, Integer high);
98 98  
... ...
src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
... ... @@ -124,7 +124,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
124 124 * @param taskHeaderList
125 125 * @return
126 126 */
127   - @Transactional
128 127 @Override
129 128 public List<TaskHeader> preferenceRealize(List<TaskHeader> taskHeaderList) {
130 129 //盘点任务头,默认不显示库位,容器。
... ... @@ -151,7 +150,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
151 150 * @throws Exception
152 151 */
153 152 @Override
154   - public AjaxResult completeTask(String locationCode) throws Exception {
  153 + @Transactional(rollbackFor = Exception.class)
  154 + public AjaxResult completeTask(String locationCode) {
155 155 LambdaQueryWrapper<TaskHeader> taskQueryWrapper = Wrappers.lambdaQuery();
156 156 taskQueryWrapper.eq(TaskHeader::getToLocation, locationCode);
157 157 List<TaskHeader> list = this.list(taskQueryWrapper);
... ... @@ -170,6 +170,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
170 170 }
171 171  
172 172 @Override
  173 + @Transactional(rollbackFor = Exception.class)
173 174 public AjaxResult createReplenishTask(String containerCode, Short taskStatus) {
174 175 LambdaQueryWrapper<ReceiptContainerHeader> headerQueryWrapper = Wrappers.lambdaQuery();
175 176 headerQueryWrapper.eq(ReceiptContainerHeader::getContainerCode, containerCode)
... ... @@ -200,8 +201,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
200 201 }
201 202 List<Integer> ids = new ArrayList<>();
202 203 ids.add(containerHeader.getId());
203   - createReceiptTask(ids);
204   - return null;
  204 + this.createReceiptTask(ids);
  205 + return AjaxResult.success("成功!");
205 206 }
206 207  
207 208 /**
... ... @@ -210,6 +211,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
210 211 * @return
211 212 */
212 213 @Override
  214 + @Transactional(rollbackFor = Exception.class)
213 215 public List<MobileTask> mobileFindTransferTask(String containerCode) {
214 216 /* 查询该容器未完成的盘点任务明细*/
215 217 LambdaQueryWrapper<TaskDetail> detailLambdaQueryWrapper = Wrappers.lambdaQuery();
... ... @@ -249,7 +251,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
249 251 * 取消任务
250 252 */
251 253 @Override
252   - @Transactional
  254 + @Transactional(rollbackFor = Exception.class)
253 255 public AjaxResult cancelTask(Integer[] taskIds) {
254 256 for (int taskId : taskIds) {
255 257 TaskHeader taskHeader = taskHeaderService.getById(taskId);
... ... @@ -289,7 +291,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
289 291 shipmentContainerHeaderService.updateById(shipmentContainerHeader);
290 292 }
291 293 //盘点取消任务,恢复明细状态为1
292   - if (taskHeader.getInternalTaskType() == QuantityConstant.TASK_INTENERTYPE_CYCLECOUNT) {
  294 + if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_CYCLECOUNT)) {
293 295  
294 296 CycleCountDetail cycleCountDetail = new CycleCountDetail();
295 297 cycleCountDetail.setCompanyCode(taskDetail.getCompanyCode());
... ... @@ -310,7 +312,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
310 312 }
311 313  
312 314 }
313   - if (taskHeader.getInternalTaskType() == QuantityConstant.TASK_INTENERTYPE_SHELF || taskHeader.getInternalTaskType() == QuantityConstant.TASK_INTENERTYPE_PICKING) {
  315 + if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) || taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING)) {
314 316 if (taskHeader.getToLocation() != null) {
315 317 //更新托盘、库位状态
316 318 locationService.updateStatus(taskHeader.getToLocation(), "empty");
... ... @@ -344,6 +346,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
344 346 * @return
345 347 */
346 348 @Override
  349 + @Transactional(rollbackFor = Exception.class)
347 350 public AjaxResult createQuickTask(String containerCode) {
348 351 LambdaQueryWrapper<ReceiptContainerHeader> queryWrapper = Wrappers.lambdaQuery();
349 352 queryWrapper.eq(ReceiptContainerHeader::getContainerCode, containerCode)
... ... @@ -408,7 +411,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
408 411 * @return
409 412 */
410 413 @Override
411   - @Transactional
  414 + @Transactional(rollbackFor = Exception.class)
412 415 public AjaxResult createTaskFromShipmentContainers(ShipmentTaskCreateModel shipmentTaskCreateModel) {
413 416 Boolean flag = true;
414 417 Integer shipmentContainerHeaderId = shipmentTaskCreateModel.getShipmentContainerHeaderIds();
... ... @@ -512,7 +515,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
512 515 if (flag == false) {
513 516 throw new ServiceException("新建任务明细失败,sql报错");
514 517 }
515   -
516 518 shipmentContainerDetail.setStatus(QuantityConstant.SHIPMENT_CONTAINER_TASK);
517 519 }
518 520 //更新货位状态
... ... @@ -527,7 +529,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
527 529 throw new ServiceException("修改组盘明细状态明细失败,sql报错");
528 530 }
529 531 return AjaxResult.success(task.getId());
530   -
531 532 }
532 533  
533 534 /**
... ... @@ -535,7 +536,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
535 536 * 执行任务
536 537 */
537 538 @Override
538   - @Transactional
  539 + @Transactional(rollbackFor = Exception.class)
539 540 public AjaxResult<TaskHeader> sendTaskToWcs(Integer[] taskIds) {
540 541 TaskHeader task = null;
541 542 for (Integer taskId : taskIds) {
... ... @@ -618,43 +619,41 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
618 619 }
619 620  
620 621 @Override
621   - @Transactional
622   - public AjaxResult completeTaskByWMS(Integer[] taskIds, String[] weight) {
  622 + @Transactional(rollbackFor = Exception.class)
  623 + public AjaxResult completeTaskByWMS(Integer[] taskIds, String[] weightConvert) {
623 624 for (int i = 0;i<taskIds.length;i++) {
624 625 TaskHeader task = taskHeaderService.getById(taskIds[i]);
  626 +
625 627 if (task == null) {
626 628 throw new ServiceException("任务" + taskIds[i] + "未找到,执行中止");
627 629 }
628   -
  630 + //任务写入重量
  631 + String weight = "";
  632 + if (StringUtils.isNotNull(weightConvert)) {
  633 + weight = weightConvert[i];
  634 + }
  635 + task.setWeight(weight);
629 636 //如果已完成则不管
630 637 if (task.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) {
631 638 return AjaxResult.success("任务(" + taskIds[i] + ")任务已经是完成的!");
632 639  
633 640 }
634   -
635 641 //整盘入库,空托入库库位自动分配
636 642 //整盘入库手动完成分配库位,已分配则略过
637 643 if(task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYRECEIPT)){
638 644 if(StringUtils.isEmpty(task.getToLocation())){
639 645 //自动分配库位
640   - AjaxResult ajaxResult = this.getLocationCode(task.getId(),ShiroUtils.getWarehouseCode(),null);
641   - String locationCode = (String )ajaxResult.getData();
642   - task.setToLocation(locationCode);
  646 + String result = this.getLocationCode(task.getId(),ShiroUtils.getWarehouseCode(),weight);
  647 + task.setToLocation(result);
643 648 }
644 649 }
645   -
646 650 //如果没有库位不能完成
647 651 if (StringUtils.isEmpty(task.getFromLocation()) && StringUtils.isEmpty(task.getToLocation())) {
648 652 throw new ServiceException("任务" + task.getId() + "没有库位,执行中止");
649 653 }
650 654  
651   - if (StringUtils.isNotNull(weight)) {
652   - task.setWeight(weight[i]);
653   - }
654   -
655 655 this.completeTask(task);
656 656 }
657   -
658 657 return AjaxResult.success("完成任务成功!");
659 658 }
660 659  
... ... @@ -663,6 +662,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
663 662 *
664 663 * @param task
665 664 */
  665 + @Transactional(rollbackFor = Exception.class)
666 666 public void completeTask(TaskHeader task) {
667 667 //区分任务类型
668 668 if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) {
... ... @@ -701,7 +701,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
701 701 * 完成入库任务
702 702 */
703 703 @Override
704   - @Transactional
  704 + @Transactional(rollbackFor = Exception.class)
705 705 public AjaxResult completeReceiptTask(TaskHeader task) {
706 706 List<Map<String, Object>> taskReceiptContainerDetail = taskHeaderMapper.getReceiptTask(task.getId());
707 707 if (taskReceiptContainerDetail.size() < 1) {
... ... @@ -724,7 +724,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
724 724 header.setContainerCode(DataUtils.getString(map.get("containerCode")));//容器号
725 725 header.setContainerStatus("some");
726 726 header.setLocationCode(task.getToLocation());
727   - header.setTotalQty(DataUtils.getInteger(map.get("totalQty")));//总数量
  727 + header.setTotalQty(DataUtils.getBigDecimal(map.get("totalQty")));//总数量
728 728 header.setLocking(1);
729 729 header.setEnable(1);
730 730 header.setTotalWeight(task.getWeight());
... ... @@ -755,6 +755,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
755 755 // detail.setManufactureDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("manufactureDate").toString()));//生产日期
756 756 // detail.setExpirationDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("expirationDate").toString()));//失效日期
757 757 detail.setQty(DataUtils.getBigDecimal(map.get("qty")));//数量
  758 + detail.setLockedQty(DataUtils.getBigDecimal(0));
758 759 detail.setTaskQty(DataUtils.getBigDecimal(0));
759 760 detail.setCreatedBy(ShiroUtils.getLoginName());//创建人
760 761 detail.setLastUpdatedBy(ShiroUtils.getLoginName());//创建时间
... ... @@ -766,9 +767,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
766 767 detail.setLastUpdatedBy(ShiroUtils.getLoginName());
767 768 LambdaUpdateWrapper<InventoryDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
768 769 lambdaUpdateWrapper.eq(InventoryDetail::getId, DataUtils.getInteger(map.get("receiptDetailId")));
769   - if (!inventoryDetailService.update(detail, lambdaUpdateWrapper))
  770 + if (!inventoryDetailService.update(detail, lambdaUpdateWrapper)){
770 771 throw new ServiceException("更新入库单明细失败");
771   -
  772 + }
772 773 }
773 774 //记录库存交易记录
774 775 InventoryTransaction inventoryTransaction = new InventoryTransaction();
... ... @@ -811,18 +812,18 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
811 812 task.setLastUpdated(new Date());
812 813 LambdaUpdateWrapper<TaskHeader> taskHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate();
813 814 taskHeaderLambdaUpdateWrapper.eq(TaskHeader::getId, task.getId());
814   - if (!taskHeaderService.update(task, taskHeaderLambdaUpdateWrapper))
  815 + if (!taskHeaderService.update(task, taskHeaderLambdaUpdateWrapper)){
815 816 throw new ServiceException("更新任务主表失败");
816   -
  817 + }
817 818 //修改库位状态和对应的容器
818 819 Location location = new Location();
819 820 location.setContainerCode(task.getContainerCode());
820 821 location.setStatus("empty");
821 822 LambdaUpdateWrapper<Location> locationLambdaUpdateWrapper = Wrappers.lambdaUpdate();
822 823 locationLambdaUpdateWrapper.eq(Location::getCode, task.getToLocation());
823   - if (!locationService.update(location, locationLambdaUpdateWrapper))
  824 + if (!locationService.update(location, locationLambdaUpdateWrapper)){
824 825 throw new ServiceException("更新库位失败");
825   -
  826 + }
826 827 //修改容器状态和对应的库位
827 828 Container container = new Container();
828 829 container.setLocationCode(task.getToLocation());
... ... @@ -840,9 +841,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
840 841 receiptContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
841 842 LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate();
842 843 receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getReceiptId, DataUtils.getInteger(map.get("receiptId")));
843   - if (!receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper))
  844 + if (!receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper)){
844 845 throw new ServiceException("更新组盘状态失败");
845   -
  846 + }
846 847  
847 848 //修改入库组盘头表状态
848 849  
... ... @@ -880,6 +881,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
880 881 * @return
881 882 */
882 883 @Override
  884 + @Transactional(rollbackFor = Exception.class)
883 885 public AjaxResult mobileCreateReceiptTask(String containerCode, String sourceLocation) {
884 886 LambdaQueryWrapper<ReceiptContainerHeader> queryWrapper = Wrappers.lambdaQuery();
885 887 queryWrapper.eq(ReceiptContainerHeader::getContainerCode, containerCode)
... ... @@ -907,8 +909,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
907 909 * 生成
908 910 * 立库移库
909 911 */
910   - @Transactional
911 912 @Override
  913 + @Transactional(rollbackFor = Exception.class)
912 914 public AjaxResult createTransferTask(String sourceLocation, String destinationLocation) {
913 915  
914 916 //源库位校验
... ... @@ -921,7 +923,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
921 923 if (loc1 == null) {
922 924 return AjaxResult.error("源库位:" + sourceLocation + "未找到");
923 925 }
924   - if (!loc1.getStatus().equals("empty")) {
  926 + if (!"empty".equals(loc1.getStatus())) {
925 927 return AjaxResult.error("源库位:" + sourceLocation + "状态非空闲");
926 928 }
927 929 if (StringUtils.isEmpty(loc1.getContainerCode())) {
... ... @@ -946,7 +948,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
946 948 if (loc2 == null) {
947 949 return AjaxResult.error("目标库位:" + destinationLocation + "未找到");
948 950 }
949   - if (!loc2.getStatus().equals("empty")) {
  951 + if (!"empty".equals(loc2.getStatus())) {
950 952 return AjaxResult.error("目标库位:" + destinationLocation + "状态非空闲");
951 953 }
952 954 if (StringUtils.isNotEmpty(loc2.getContainerCode())) {
... ... @@ -1127,7 +1129,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1127 1129 * 任务
1128 1130 */
1129 1131 @Override
1130   - @Transactional
  1132 + @Transactional(rollbackFor = Exception.class)
1131 1133 public AjaxResult createCheckOutTask(String[] ids) {
1132 1134  
1133 1135 for (String id : ids) {
... ... @@ -1142,7 +1144,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1142 1144 if (loc == null) {
1143 1145 throw new ServiceException("库存没有库位!");
1144 1146 }
1145   - if (!loc.getStatus().equals("empty")) {
  1147 + if (!"empty".equals(loc.getStatus())) {
1146 1148 throw new ServiceException(inventoryHeader.getLocationCode() + "状态非空闲,操作失败");
1147 1149 }
1148 1150 if (StringUtils.isEmpty(loc.getContainerCode())) {
... ... @@ -1207,8 +1209,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1207 1209 * 出库查看
1208 1210 * 更新状态,解锁库存
1209 1211 */
1210   - @Transactional
1211 1212 @Override
  1213 + @Transactional(rollbackFor = Exception.class)
1212 1214 public AjaxResult completeSeeOutTask(TaskHeader taskHeader) {
1213 1215 taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
1214 1216 taskHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); //更新用户
... ... @@ -1252,8 +1254,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1252 1254 * @param taskHeader
1253 1255 * @return
1254 1256 */
1255   - @Transactional
1256 1257 @Override
  1258 + @Transactional(rollbackFor = Exception.class)
1257 1259 public AjaxResult completeCycleCountTask(TaskHeader taskHeader) {
1258 1260 /*盘点完成,传入任务主单,查出任务明细,通过任务明细查找盘点的明细单,
1259 1261 完成任务同时,修改盘点细单和主单的状态,完成后库存锁复位*/
... ... @@ -1305,7 +1307,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1305 1307 *
1306 1308 * @param taskHeader
1307 1309 */
1308   - @Transactional
  1310 + @Transactional(rollbackFor = Exception.class)
1309 1311 public void completeEmptyIn(TaskHeader taskHeader) {
1310 1312  
1311 1313 //完成任务,修改主单和明细状态
... ... @@ -1343,7 +1345,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1343 1345 inventoryHeader.setCompanyCode(taskHeader.getCompanyCode());
1344 1346 inventoryHeader.setMaterialSkuQty("0");
1345 1347 inventoryHeader.setTotalWeight("0");
1346   - inventoryHeader.setTotalQty(0);
  1348 + inventoryHeader.setTotalQty(new BigDecimal(0));
1347 1349 inventoryHeader.setTotalLines(0);
1348 1350 inventoryHeader.setProjectNos("");
1349 1351 inventoryHeader.setBatchs("");
... ... @@ -1365,8 +1367,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1365 1367 *
1366 1368 * @param taskHeader
1367 1369 */
1368   - @Transactional
1369 1370 @Override
  1371 + @Transactional(rollbackFor = Exception.class)
1370 1372 public AjaxResult completeEmptyOut(TaskHeader taskHeader) {
1371 1373  
1372 1374 taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
... ... @@ -1412,7 +1414,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1412 1414 * @return
1413 1415 */
1414 1416 @Override
1415   - @Transactional
  1417 + @Transactional(rollbackFor = Exception.class)
1416 1418 public AjaxResult createReceiptTask(List<Integer> ids) {
1417 1419 for (Integer id : ids) {
1418 1420 ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(id);
... ... @@ -1557,7 +1559,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1557 1559 BigDecimal orignalQty = inventoryDetail.getQty();
1558 1560 //减扣库存单
1559 1561 InventoryHeader inventoryHeader = inventoryHeaderService.getById(inventoryDetail.getInventoryHeaderId());
1560   - inventoryHeader.setTotalQty(inventoryDetail.getQty().subtract(taskDetail.getQty()).intValue());
  1562 + inventoryHeader.setTotalQty(inventoryDetail.getQty().subtract(taskDetail.getQty()));
1561 1563 //扣减库存明细
1562 1564 inventoryDetail.setTaskQty(inventoryDetail.getTaskQty().subtract(taskDetail.getQty()));
1563 1565 inventoryDetail.setQty(inventoryDetail.getQty().subtract(taskDetail.getQty()));
... ... @@ -1606,9 +1608,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1606 1608 // shipmentHeaderService.updateShipmentStatus(shipmentHeader.getId());
1607 1609 }
1608 1610 /* 物料预警*/
1609   - configWarningService.materialWarning(taskDetail.getMaterialCode(), taskDetail.getMaterialName());
1610   - /* 空库位剩余数量预警*/
1611   - configWarningService.emptyLocationWarning();
  1611 +// configWarningService.materialWarning(taskDetail.getMaterialCode(), taskDetail.getMaterialName());
  1612 +// /* 空库位剩余数量预警*/
  1613 +// configWarningService.emptyLocationWarning();
1612 1614 }
1613 1615 //设置主任务为已执行
1614 1616 task.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
... ... @@ -1637,7 +1639,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1637 1639 throw new ServiceException("系统无此容器");
1638 1640 }
1639 1641 if (task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT)) {
1640   - if (ctn.getContainerType().equals("LS")) {
  1642 + if ("LS".equals(ctn.getContainerType())) {
1641 1643 Boolean flag = containerService.removeById(ctn.getId());
1642 1644 if (flag == false) {
1643 1645 throw new ServiceException("删除临时容器失败");
... ... @@ -1710,10 +1712,10 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1710 1712 Map<String, Integer> status = shipmentDetailService.selectStatus(shipmentHeader.getId());
1711 1713 Integer maxStatus = status.get("maxStatus");
1712 1714 Integer minStatus = status.get("minStatus");
1713   - if (maxStatus == QuantityConstant.SHIPMENT_HEADER_COMPLETED) {
  1715 + if (maxStatus.equals(QuantityConstant.SHIPMENT_HEADER_COMPLETED)) {
1714 1716 shipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_COMPLETED);
1715 1717 }
1716   - if (minStatus == QuantityConstant.SHIPMENT_HEADER_COMPLETED) {
  1718 + if (minStatus.equals(QuantityConstant.SHIPMENT_HEADER_COMPLETED)) {
1717 1719 shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_COMPLETED);
1718 1720 }
1719 1721 shipmentHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
... ... @@ -1727,6 +1729,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1727 1729 * 自动空托出库
1728 1730 * */
1729 1731 @Override
  1732 + @Transactional(rollbackFor = Exception.class)
1730 1733 public AjaxResult createAutoEmptyOut(String warehouseCode){
1731 1734 /*先查询容器表,选中空托盘,再查询库存核实*/
1732 1735 //该容器中有库位信息,并且状态是空
... ... @@ -1751,20 +1754,19 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1751 1754 }
1752 1755  
1753 1756 /**
1754   - * 自动分配库位
  1757 + * 任务自动分配库位
1755 1758 *
1756 1759 * */
1757 1760 @Override
1758 1761 @Transactional(rollbackFor = Exception.class)
1759   - public synchronized AjaxResult<String> getLocationCode(Integer taskId,String warehouseCode,String weight){
1760   -
  1762 + public String getLocationCode(Integer taskId,String warehouseCode,String weight){
1761 1763  
1762 1764 TaskHeader task = this.getById(taskId);
1763 1765 if (task == null) {
1764 1766 throw new ServiceException("找不到id为"+ taskId +"的任务");
1765 1767 }
1766 1768 if (StringUtils.isNotEmpty(task.getToLocation())) {
1767   - return AjaxResult.error("任务已经有目的库位");
  1769 + throw new ServiceException("任务已经有目的库位");
1768 1770 }
1769 1771 if(!warehouseCode.equals(task.getWarehouseCode())){
1770 1772 throw new ServiceException("仓库错误!");
... ... @@ -1849,7 +1851,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1849 1851 //task.setFromLocation(location.getCode());
1850 1852 //LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(task);
1851 1853 this.saveOrUpdate(task);
1852   - return AjaxResult.success("分配库位成功", location.getCode());
  1854 + return location.getCode();
1853 1855 }
1854 1856  
1855 1857  
... ... @@ -1877,7 +1879,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1877 1879 // location.setZoneCode(taskHeader.getz());
1878 1880 location.setStatus("empty");
1879 1881 location.setDeleted(false);
1880   - if(taskHeader.getContainerCode().substring(0,1).equals("M")){
  1882 + if("M".equals(taskHeader.getContainerCode().substring(0,1))){
1881 1883 if (high.intValue() == 1) {
1882 1884 location.setILayer(5);
1883 1885 }
... ...
src/main/resources/mybatis/config/ContainerMapper.xml
... ... @@ -35,17 +35,15 @@
35 35 </sql>
36 36  
37 37 <select id="getEmptyContainerInLocation" resultType="com.huaheng.pc.config.location.domain.Location">
38   - SELECT t.id, t.code, t.warehouseCode, t.zoneCode, t.locationType, t.containerCode, t.iRow, t.iColumn, t.iLayer,
39   - t.iGrid, t.roadway, t.status, t.`name`, t.lastCycleCountDate, t.created, t.createdBy, t.lastUpdated, t.lastUpdatedBy,
40   - t.version, t.userDef1, t.userDef2, t.userDef3, t.userDef4, t.userDef5, t.userDef6, t.userDef7, t.userDef8,
41   - t.systemCreated
  38 + SELECT *
42 39 FROM location t
43 40 <where>
44   - t.locationType = 'LK'
  41 + t.locationType = 'L'
45 42 AND t.warehouseCode = #{warehouseCode}
46 43 AND t.status='empty'
47 44 AND t.containerCode !=''
48 45 AND t.containerCode is not NULL
  46 + AND t.containerCode NOT in (SELECT h.containerCode from task_header h WHERE status &lt; 100 AND warehouseCode=#{warehouseCode})
49 47 AND t.`code` NOT in (SELECT b.locationCode FROM inventory_detail b WHERE b.warehouseCode = #{warehouseCode} )
50 48 <if test="containerCode != null and containerCode !=''">
51 49 and t.containerCode = #{containerCode}
... ...
src/main/resources/mybatis/config/LocationMapper.xml
... ... @@ -97,10 +97,7 @@
97 97 </select>
98 98  
99 99 <select id="pickLocation" resultType="com.huaheng.pc.config.location.domain.Location">
100   - select id, code, warehouseCode, zoneCode, locationType, containerCode, iRow, iColumn, iLayer,
101   - iGrid, roadway, status, `name`, lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy,
102   - version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8,
103   - systemCreated from location
  100 + select * from location
104 101 where containerCode != '' and status = 'empty'
105 102 </select>
106 103  
... ...
src/main/resources/mybatis/shipment/ShipmentHeaderMapper.xml
... ... @@ -75,4 +75,8 @@
75 75 inner join task_detail t on t.billCode=s.code and
76 76 t.status>700 and DATEDIFF(NOW(), t.lastUpdated)=0 GROUP BY s.code
77 77 </select>
  78 +
  79 + <select id="getLatestShipment" resultType="com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader">
  80 + select * from shipment_header order by id desc limit 10
  81 + </select>
78 82 </mapper>
79 83 \ No newline at end of file
... ...
src/main/resources/templates/config/waveMaster/add.html
... ... @@ -65,30 +65,30 @@
65 65 <input id="shipmentGroupSize" name="shipmentGroupSize" class="form-control" type="text">
66 66 </div>
67 67 </div>
68   - <div class="form-group">
69   - <label class="col-sm-3 control-label">是否补货:</label>
70   - <div class="col-sm-8">
71   - <div class="onoffswitch">
72   - <input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="needReplenishment" name="needReplenishment">
73   - <label class="onoffswitch-label" for="needReplenishment">
74   - <span class="onoffswitch-inner"></span>
75   - <span class="onoffswitch-switch"></span>
76   - </label>
77   - </div>
78   - </div>
79   - </div>
80   - <div class="form-group">
81   - <label class="col-sm-3 control-label">取消波次时保留补货任务:</label>
82   - <div class="col-sm-8">
83   - <div class="onoffswitch">
84   - <input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="holdRplnTask" name="holdRplnTask">
85   - <label class="onoffswitch-label" for="holdRplnTask">
86   - <span class="onoffswitch-inner"></span>
87   - <span class="onoffswitch-switch"></span>
88   - </label>
89   - </div>
90   - </div>
91   - </div>
  68 + <!--<div class="form-group">-->
  69 + <!--<label class="col-sm-3 control-label">是否补货:</label>-->
  70 + <!--<div class="col-sm-8">-->
  71 + <!--<div class="onoffswitch">-->
  72 + <!--<input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="needReplenishment" name="needReplenishment">-->
  73 + <!--<label class="onoffswitch-label" for="needReplenishment">-->
  74 + <!--<span class="onoffswitch-inner"></span>-->
  75 + <!--<span class="onoffswitch-switch"></span>-->
  76 + <!--</label>-->
  77 + <!--</div>-->
  78 + <!--</div>-->
  79 + <!--</div>-->
  80 + <!--<div class="form-group">-->
  81 + <!--<label class="col-sm-3 control-label">取消波次时保留补货任务:</label>-->
  82 + <!--<div class="col-sm-8">-->
  83 + <!--<div class="onoffswitch">-->
  84 + <!--<input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="holdRplnTask" name="holdRplnTask">-->
  85 + <!--<label class="onoffswitch-label" for="holdRplnTask">-->
  86 + <!--<span class="onoffswitch-inner"></span>-->
  87 + <!--<span class="onoffswitch-switch"></span>-->
  88 + <!--</label>-->
  89 + <!--</div>-->
  90 + <!--</div>-->
  91 + <!--</div>-->
92 92 <!--<div class="form-group">
93 93 <label class="col-sm-3 control-label">数据版本:</label>
94 94 <div class="col-sm-8">
... ... @@ -211,12 +211,12 @@
211 211 shipmentGroupSize: {
212 212 required: true,
213 213 },
214   - holdRplnTask: {
215   - required: true,
216   - },
217   - needReplenishment: {
218   - required: true,
219   - }
  214 + // holdRplnTask: {
  215 + // required: true,
  216 + // },
  217 + // needReplenishment: {
  218 + // required: true,
  219 + // }
220 220 },
221 221 submitHandler: function(form) {
222 222 var tableValue = $.common.getTableValue("#form-waveMaster-add");
... ...
src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
... ... @@ -322,7 +322,7 @@
322 322 align: 'center',
323 323 formatter: function (value, row, index) {
324 324 var actions = [];
325   - if(row.enableStatus >= 10 && row.enableStatus < 100){
  325 + if(row.enableStatus >= 1 && row.enableStatus < 110){
326 326 actions.push('<a class="btn btn-success btn-xs ' + confirmFlag + '" href="#" onclick="confirmGapQty(\'' + row.id + '\')"><i class="fa fa-comment"></i>实盘登记</a> ');
327 327 }
328 328 if(row.enableStatus === 1 ){
... ...
src/main/resources/templates/inventory/inventoryDetail/inventoryDetail.html
... ... @@ -102,6 +102,7 @@
102 102 var prefix = ctx + "inventory/inventoryDetail";
103 103 var inventoryStatus = [[${@dict.getType('inventorySts')}]];
104 104 var inventoryLock = [[${@dict.getType('inventoryLock')}]];
  105 + var company =[[${@companyService.getCode()}]];
105 106 $(function () {
106 107 update();
107 108 });
... ... @@ -180,7 +181,18 @@
180 181 },
181 182 {
182 183 field: 'companyCode',
183   - title: '货主编码'
  184 + title: '货主',
  185 + align: 'center',
  186 + formatter: function(value, row, index) {
  187 + var actions = [];
  188 + $.each(company, function(index, dict) {
  189 + if (dict.code == value) {
  190 + actions.push("<span class='badge badge-info'>" + dict.name + "</span>");
  191 + return false;
  192 + }
  193 + });
  194 + return actions.join('');
  195 + }
184 196 },
185 197 {
186 198 field: 'receiptCode',
... ...
src/main/resources/templates/monitor/locationstatus/locationstatus.html
... ... @@ -51,7 +51,7 @@
51 51 <ul id="select_info">
52 52 <li>
53 53 <select id="locationType" name="locationType" style="width: 100px">
54   - <option value="LK" selected>立库库位</option>
  54 + <option value="L" selected>立库库位</option>
55 55 <option value="Q">钱柜库位</option>
56 56 <option value="DM">地面库位</option>
57 57 </select>
... ...
src/main/resources/templates/receipt/receiptDetail/add.html
... ... @@ -25,6 +25,12 @@
25 25 </div>
26 26 </div>
27 27 <div class="form-group">
  28 + <label class="col-sm-3 control-label">总数量:</label>
  29 + <div class="col-sm-8">
  30 + <input id="totalQty" name="totalQty" class="form-control" type="text">
  31 + </div>
  32 + </div>
  33 + <div class="form-group">
28 34 <label class="col-sm-3 control-label">供应商编码:</label>
29 35 <div class="col-sm-8">
30 36 <input id="supplierCode" name="supplierCode" class="form-control" type="text">
... ... @@ -79,12 +85,6 @@
79 85 </div>
80 86 </div>
81 87 <div class="form-group">
82   - <label class="col-sm-3 control-label">总数量:</label>
83   - <div class="col-sm-8">
84   - <input id="totalQty" name="totalQty" class="form-control" type="text">
85   - </div>
86   - </div>
87   - <div class="form-group">
88 88 <label class="col-sm-3 control-label">定位规则:</label>
89 89 <div class="col-sm-8">
90 90 <select id="locatingRule" name="locatingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('locationRule')}">
... ...
src/main/resources/templates/receipt/receiptHeader/add.html
... ... @@ -22,6 +22,12 @@
22 22 </div>
23 23 </div>
24 24 <div class="form-group">
  25 + <label class="col-sm-3 control-label">供应商:</label>
  26 + <div class="col-sm-8">
  27 + <input id="supplierCode" name="supplierCode" class="form-control" type="text">
  28 + </div>
  29 + </div>
  30 + <div class="form-group">
25 31 <label class="col-sm-3 control-label">入库单备注:</label>
26 32 <div class="col-sm-8">
27 33 <input id="receiptNote" name="receiptNote" class="form-control" type="text">
... ... @@ -62,6 +68,7 @@
62 68 data : {
63 69 "receiptType": $("#receiptType option:selected").val(),
64 70 "companyCode": $("#companyCode option:selected").val(),
  71 + "supplierCode": $("input[name='supplierCode']").val(),
65 72 "receiptNote": $("input[name='receiptNote']").val(),
66 73 "scheduledArriveDate": $("input[name='scheduledArriveDate']").val(),
67 74 },
... ...
src/main/resources/templates/receipt/receiptHeader/receiptHeader.html
... ... @@ -103,7 +103,7 @@
103 103 <form id = "receiptDetail" >
104 104 <ul id="tabHead" class="nav nav-tabs">
105 105 <li class="active"><a href="#tabBase" data-toggle="tab">基础数据</a></li>
106   - <li role="presentation" ><a href="#tabCustomer" data-toggle="tab">客户信息</a></li>
  106 + <li role="presentation" ><a href="#tabSupplierCode" data-toggle="tab">供应商信息</a></li>
107 107 <li><a href="#tabExcute" data-toggle="tab">执行信息</a></li>
108 108 <li><a href="#tabOther" data-toggle="tab">其他信息</a></li>
109 109 <li><a href="#tabSystem" data-toggle="tab">系统信息</a></li>
... ... @@ -205,6 +205,8 @@
205 205 var receiptTypes = [[${@receiptTypeService.getType()}]];
206 206 var receiptHeaderStatus = [[${@dict.getType('receiptHeaderStatus')}]];
207 207 var uploadStatus = [[${@dict.getType('uploadStatus')}]];
  208 + var company =[[${@companyService.getCode()}]];
  209 + var supplier =[[${@SupplierService.getCode()}]];
208 210 var detailCreateUrl = detailPrefix+"/add";
209 211 var detailUpdateUrl = detailPrefix + "/edit/{id}";
210 212 var detailRemoveUrl = detailPrefix+"/remove";
... ... @@ -236,23 +238,33 @@
236 238 title : '创建用户',
237 239 sortable:true
238 240 },
239   - {
240   - field : 'referCode',
241   - title : '关联单号',
242   - sortable:true
243   - },
244   - {
245   - field : 'referType',
246   - title : '关联订单类型'
247   - },
  241 + // {
  242 + // field : 'referType',
  243 + // title : '关联订单类型'
  244 + // },
248 245 {
249 246 field : 'code',
250 247 title : '入库单号',
251 248 },
252 249 {
253   - field : 'companyCode',
254   - title : '货主编码',
255   - visible: [[${@table.getVisible('p')}]]
  250 + field: 'companyCode',
  251 + title: '货主',
  252 + align: 'center',
  253 + formatter: function(value, row, index) {
  254 + var actions = [];
  255 + $.each(company, function(index, dict) {
  256 + if (dict.code == value) {
  257 + actions.push("<span class='badge badge-info'>" + dict.name + "</span>");
  258 + return false;
  259 + }
  260 + });
  261 + return actions.join('');
  262 + }
  263 + },
  264 + {
  265 + field : 'referCode',
  266 + title : '上游单号',
  267 + sortable:true
256 268 },
257 269 {
258 270 field : 'warehouseCode',
... ... @@ -275,6 +287,21 @@
275 287 }
276 288 },
277 289 {
  290 + field : 'supplierCode',
  291 + title : '供应商',
  292 + align: 'center',
  293 + formatter: function(value, row, index) {
  294 + var actions = [];
  295 + $.each(supplier, function(index, dict) {
  296 + if (dict.code == value) {
  297 + actions.push("<span class='badge badge-info'>" + dict.name + "</span>");
  298 + return false;
  299 + }
  300 + });
  301 + return actions.join('');
  302 + }
  303 + },
  304 + {
278 305 field : 'scheduledArriveDate',
279 306 title : '预计到达日期',
280 307 sortable:true,
... ...
src/main/resources/templates/receipt/receiving/add.html
... ... @@ -7,7 +7,7 @@
7 7 <form class="form-horizontal m" id="form-receiving-add">
8 8 <input id="receiptId" name="receiptId" type="hidden" readonly="readonly">
9 9 <input id="receiptDetailId" name="receiptDetailId" type="hidden" readonly="readonly">
10   - <div class="form-group">
  10 + <div class="form-group">
11 11 <label class="col-sm-3 control-label">收货单编码:</label>
12 12 <div class="col-sm-8">
13 13 <input id="receiptCode" name="receiptCode" class="form-control" type="text" readonly="readonly">
... ... @@ -31,7 +31,7 @@
31 31 <input id="inventorySts" name="inventorySts" class="form-control" type="text" readonly="readonly">
32 32 </div>
33 33 </div>
34   - <div class="form-group">
  34 + <div class="form-group">
35 35 <label class="col-sm-3 control-label">单据数量:</label>
36 36 <div class="col-sm-8">
37 37 <input id="totalQty" name="totalQty" class="form-control" type="text" readonly="readonly">
... ...
src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
... ... @@ -248,7 +248,13 @@
248 248 },
249 249 {
250 250 field: 'id',
251   - title: '出库单id'
  251 + title: '出库单id',
  252 + sortable:true
  253 + },
  254 + {
  255 + field: 'createdBy',
  256 + title: '创建用户',
  257 + sortable:true
252 258 },
253 259 {
254 260 field: 'code',
... ... @@ -259,6 +265,7 @@
259 265 field: 'companyCode',
260 266 title: '货主',
261 267 align: 'center',
  268 + sortable:true,
262 269 formatter: function(value, row, index) {
263 270 var actions = [];
264 271 $.each(company, function(index, dict) {
... ... @@ -283,8 +290,9 @@
283 290 },
284 291 {
285 292 field: 'shipmentType',
286   - title: '类型',
  293 + title: '出库类型',
287 294 align: 'center',
  295 + sortable:true,
288 296 formatter: function(value, row, index) {
289 297 var actions = [];
290 298 $.each(shipmentTypes, function(index, dict) {
... ... @@ -313,11 +321,13 @@
313 321 },
314 322 {
315 323 field: 'priority',
316   - title: '优先级'
  324 + title: '优先级',
  325 + visible:false
317 326 },
318 327 {
319 328 field: 'route',
320 329 title: '路线',
  330 + visible:false,
321 331 sortable:true
322 332 },
323 333 {
... ... @@ -354,10 +364,6 @@
354 364 sortable: true
355 365 },
356 366 {
357   - field: 'createdBy',
358   - title: '创建用户'
359   - },
360   - {
361 367 field: 'lastUpdated',
362 368 title: '最后修改时间',
363 369 visible:false
... ...
src/main/resources/templates/task/task/task.html
... ... @@ -152,6 +152,28 @@
152 152 checkbox: true
153 153 },
154 154 {
  155 + title: '操作',
  156 + align: 'center',
  157 + formatter: function(value, row, index) {
  158 + var actions = [];
  159 + // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
  160 + actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\')"><i class="fa fa-list-ul"></i>明细</a> ');
  161 + if (row.lastStatus < 10) {
  162 + if(row.zoneCode != "AGV"){
  163 + actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> ');
  164 + }
  165 + actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> ');
  166 + if(row.zoneCode != "AGV"){
  167 + actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
  168 + }
  169 + }
  170 + if(row.lastStatus < 10 && row.zoneCode == "AGV"){
  171 + actions.push('<a style="background-color: #f59e00;border: #f59e00" class="btn btn-primary btn-xs ' + agvFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>AGV完成</a>');
  172 + }
  173 + return actions.join('');
  174 + }
  175 + },
  176 + {
155 177 field : 'id',
156 178 title : '任务id' ,
157 179 sortable: true
... ... @@ -271,29 +293,7 @@
271 293 field : 'userDef3',
272 294 title : '自定义字段3' ,
273 295 visible:false
274   - },
275   - {
276   - title: '操作',
277   - align: 'center',
278   - formatter: function(value, row, index) {
279   - var actions = [];
280   - // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
281   - actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\')"><i class="fa fa-list-ul"></i>明细</a> ');
282   - if (row.lastStatus < 10) {
283   - if(row.zoneCode != "AGV"){
284   - actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> ');
285   - }
286   - actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> ');
287   - if(row.zoneCode != "AGV"){
288   - actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
289   - }
290   - }
291   - if(row.lastStatus < 10 && row.zoneCode == "AGV"){
292   - actions.push('<a style="background-color: #f59e00;border: #f59e00" class="btn btn-primary btn-xs ' + agvFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>AGV完成</a>');
293   - }
294   - return actions.join('');
295   - }
296   - }
  296 + }
297 297 ]
298 298 };
299 299 $.table.init(options);
... ...
src/main/resources/templates/task/taskHeader/taskHeader.html
... ... @@ -155,7 +155,24 @@
155 155 checkbox: true
156 156 },
157 157 {
158   - field : 'id',
  158 + title: '操作',
  159 + align: 'center',
  160 + formatter: function(value, row, index) {
  161 + var actions = [];
  162 + actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\')"><i class="fa fa-list-ul"></i>明细</a> ');
  163 + if (row.status < 10) {
  164 + actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> ');
  165 + actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> ');
  166 + actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
  167 + }
  168 + if (row.status >= 10 && row.status < 100) {
  169 + actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
  170 + }
  171 + return actions.join('');
  172 + }
  173 + },
  174 + {
  175 + field : 'id',
159 176 title : '任务id' ,
160 177 sortable: true
161 178 },
... ... @@ -241,24 +258,7 @@
241 258 field : 'userDef3',
242 259 title : '自定义字段3' ,
243 260 visible:false
244   - },
245   - {
246   - title: '操作',
247   - align: 'center',
248   - formatter: function(value, row, index) {
249   - var actions = [];
250   - actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\')"><i class="fa fa-list-ul"></i>明细</a> ');
251   - if (row.status < 10) {
252   - actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> ');
253   - actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> ');
254   - actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
255   - }
256   - if (row.status >= 10 && row.status < 100) {
257   - actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
258   - }
259   - return actions.join('');
260   - }
261   - }
  261 + }
262 262 ]
263 263 };
264 264 $.table.init(options);
... ... @@ -453,7 +453,7 @@
453 453 $.modal.confirm("确认要执行选中的" + rows.length + "条数据吗?", function() {
454 454 var url = ctx + 'task/taskHeader/execute';
455 455 var ids = "";
456   - for(var i=rows.length-1; i < 0; i--) {
  456 + for(var i=rows.length-1; i >= 0; i--) {
457 457 ids = ids + rows[i].id + ","
458 458 }
459 459 var data = { "taskId": ids.substring(0, ids.length-1) };
... ...