From 7a7ccfd74dbdff086d2aabe5117ec1dc6f804d91 Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期三, 31 五月 2023 18:48:41 +0800
Subject: [PATCH] 出入库优化-称重

---
 igds-inout/src/main/java/com/ld/igds/inout/manager/InoutManager.java | 1876 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 977 insertions(+), 899 deletions(-)

diff --git a/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutManager.java b/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutManager.java
index 1fd9aa9..0a0dac8 100644
--- a/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutManager.java
+++ b/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutManager.java
@@ -11,9 +11,7 @@
 import com.ld.igds.file.CoreFileService;
 import com.ld.igds.file.dto.FileData;
 import com.ld.igds.inout.InoutConstant;
-import com.ld.igds.inout.dto.InoutData;
-import com.ld.igds.inout.dto.InoutGateDto;
-import com.ld.igds.inout.dto.InoutParam;
+import com.ld.igds.inout.dto.*;
 import com.ld.igds.inout.service.InoutService;
 import com.ld.igds.m.service.InoutCommonService;
 import com.ld.igds.models.Depot;
@@ -22,10 +20,10 @@
 import com.ld.igds.util.ContextUtil;
 import com.ld.igds.util.DateUtil;
 import com.ld.igds.util.NumberUtil;
-import com.ld.igds.util.RespUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -44,1019 +42,1099 @@
 @Component
 public class InoutManager {
 
-	@Autowired
-	private InoutService inoutService;
-	@Autowired
-	private CoreFileService fileService;
-	@Autowired
-	private CoreCommonService commonService;
-	@Autowired
-	private InoutCommonService inoutManagerService;
-	@Autowired
-	private CheckStandardManager checkStandardManager;
-	@Resource
-	private InoutDeviceManager inoutDeviceManager;
+    @Autowired
+    private InoutService inoutService;
+    @Autowired
+    private CoreFileService fileService;
+    @Autowired
+    private CoreCommonService commonService;
+    @Autowired
+    private InoutCommonService inoutManagerService;
+    @Autowired
+    private CheckStandardManager checkStandardManager;
+    @Resource
+    private InoutDeviceManager inoutDeviceManager;
 
-	/**
-	 * 褰撳墠鍏堜粠褰撴棩缂撳瓨涓幏鍙栨暟鎹紝濡傛灉缂撳瓨涓病鏈夊啀浠庢暟鎹簱鑾峰彇
-	 *
-	 * @param param
-	 * @return
-	 */
-	public PageResponse<InoutData> inoutQuery(InoutParam param) {
-		if (StringUtils.isEmpty(param.getPlateNum())
-				&& StringUtils.isEmpty(param.getIntelCard())
-				&& StringUtils.isEmpty(param.getUserId())) {
+    /**
+     * 棣栧厛浠庣紦瀛樹腑鑾峰彇锛岀紦瀛樹腑锛屼粠鏁版嵁搴撲腑鑾峰彇
+     *
+     * @param param
+     * @return
+     */
+    public PageResponse<InoutData> inoutQuery(InoutParam param) {
+        if (StringUtils.isEmpty(param.getPlateNum())
+                && StringUtils.isEmpty(param.getIntelCard())
+                && StringUtils.isEmpty(param.getUserId())) {
 
-			return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(),
-					"鍙傛暟涓嶅畬鏁达紝鏃犳硶鑾峰彇淇℃伅锛�");
-		}
-
-		if (StringUtils.isEmpty(param.getCompanyId())) {
-			param.setCompanyId(ContextUtil.getCompanyId());
-		}
-
-		InoutData result;
-		String progress = param.getProgress();
-		try {
-			param.setProgress(null);
-
-			result = inoutService.inoutProgressQuery(param);
-			if (null == result) {
-				return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-						"鏈壘鍒版祦绋嬩腑鐨勮溅杈嗭紒", null);
-			}
-
-			// 濡傛灉娌℃湁娴佺▼鏉′欢璇存槑涓嶉渶瑕佸仛鍒ゆ柇锛岀洿鎺ヨ繑鍥�
-			if (StringUtils.isEmpty(progress)) {
-				return new PageResponse<>(RespCodeEnum.CODE_0000, result);
-			}
-
-			if (!result.getType().equals(param.getType())) {
-				if (InoutConstant.TYPE_IN.equals(result.getType())) {
-					return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-							"绯荤粺锛氬綋鍓嶈溅杈嗕笟鍔′负銆愬叆搴撱��", result);
-				} else {
-					return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-							"绯荤粺锛氬綋鍓嶈溅杈嗕笟鍔′负銆愬嚭搴撱��", result);
-				}
-			}
-
-			// 褰撳墠鏍囩鏍囩ず鏃㈠彲浠ユ槸绌鸿溅绉伴噸涔熷彲浠ユ槸婊¤溅
-			if (progress.equals(InoutConstant.PROGRESS_WEIGHT_TAG)) {
-				if (result.getProgress().equals(
-						InoutConstant.PROGRESS_WEIGHT_EMPTY)
-						|| result.getProgress().equals(
-								InoutConstant.PROGRESS_WEIGHT_FULL)) {
-					// 琛ㄧず褰撳墠娴佺▼姝e父
-				} else {
-					return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-							"闈炲綋鍓嶆祦绋嬶紝璇峰埌"
-									+ InoutConstant.getProcessName(
-											param.getType(),
-											result.getProgress()), result);
-				}
-			} else {
-				if (!result.getProgress().equals(progress)) {
-					return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-							"闈炲綋鍓嶆祦绋嬶紝璇峰埌"
-									+ InoutConstant.getProcessName(
-											param.getType(),
-											result.getProgress()), result);
-				}
-			}
-
-			// 鏍规嵁褰撳墠鏁版嵁鍒ゆ柇鏄惁鎺ㄩ��
-			inoutService.notifyWeb(result);
-
-			//涓哄綋鍓嶆暟鎹坊鍔犲寲楠岄」鐩拰姘村垎鍜屾潅璐ㄧ殑鍖栭獙缁撴灉,鐢ㄤ簬鍑哄叆搴撳鎵i噸璁$畻
-			if (InoutConstant.TYPE_IN.equals(result.getType())) {
-				List<CheckItemData> checkItemDataList = inoutService.getCheckCache(result.getCompanyId(), result.getCheckId());
-				result.setCheckItems(checkItemDataList);
-				if (null != checkItemDataList && checkItemDataList.size() > 0) {
-					for (CheckItemData checkItem : checkItemDataList) {
-						if (StringUtils.isEmpty(checkItem.getValue())) {
-							continue;
-						}
-
-						if (InoutConstant.CHECK_ITEM_C01.equals(checkItem.getStandardId())) {
-							result.setWet(Double.valueOf(checkItem.getValue()));
-						}
-						if (InoutConstant.CHECK_ITEM_C02.equals(checkItem.getStandardId())) {
-							result.setImpurity(Double.valueOf(checkItem.getValue()));
-						}
-					}
-				}
-			}
-
-			return new PageResponse<>(RespCodeEnum.CODE_0000, result);
-
-		} catch (Exception e) {
-			return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-					e.getMessage());
-		}
-	}
-
-	public PageResponse<InoutData> outNextStep(InoutData data) throws Exception {
-		String msg;
-		IUser user = ContextUtil.getLoginUser();
-		if (StringUtils.isEmpty(data.getCompanyId())) {
-			data.setCompanyId(user.getCompanyId());
-		}
-		if (StringUtils.isEmpty(data.getDeptId())) {
-			data.setDeptId(ContextUtil.subDeptId(user));
-		}
-		if (StringUtils.isEmpty(data.getIntelCard())) {
-			data.setIntelCard(data.getUserId());
-		}
-
-		String curProgress = data.getProgress();
-		List<FileData> files = data.getFiles();
-
-		// 鏇存柊涓嬩竴涓姸鎬佸拰鍩烘湰淇℃伅
-		InoutSysConf inoutSysConf = inoutManagerService.getCacheInoutSysConf(
-				data.getCompanyId(), data.getDeptId());
-		if (null == inoutSysConf
-				|| StringUtils.isEmpty(inoutSysConf.getProgressIn())) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-					"褰撳墠搴撳尯鏈厤缃嚭搴撴祦绋嬩俊鎭紝璇疯仈绯荤鐞嗗憳閰嶇疆銆�", data);
-		}
-		data = updateOutBasicInfo(data, inoutSysConf);
-
-		// 濡傛灉褰撳墠鑺傜偣鏄敞鍐岋紝鍒欓渶瑕侀獙璇佷笅锛屾槸鍚︽湁涓哄畬鎴愮殑娴佺▼鍦ㄦ墽琛屼腑
-		if (InoutConstant.PROGRESS_REGISTER.equals(curProgress)) {
-			InoutData progressData = this.inoutProgressQuery(data);
-			if (null != progressData) {
-				return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-						"褰撳墠鍗$墖/杞︾墝鍙锋湁娴佺▼鏈粨鏉熴��", progressData);
-			}
-		}
-
-        if(null != data.getPrice() && null != data.getRecordWeight()){
-            data.setSettleMoney(NumberUtil.keepPrecision(data.getPrice()*data.getRecordWeight(),2));
+            return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(),
+                    "鏌ヨ鍙傛暟涓嶅畬鏁达紝鏌ヨ澶辫触锛�");
         }
 
-		// 娴佺▼瀹屾垚锛岀洿鎺ヨ皟鐢ㄦ祦绋嬪畬鎴愭帴鍙�
-		if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-			inoutService.updateData(data);
-			// 鎵ц闄勪欢淇℃伅
-			if (null != files) {
-				fileService.saveInoutFiles(files, data.getCompanyId(),
-						data.getId(), curProgress);
-			}
+        InoutData result;
+        String progress = param.getProgress();
+        try {
+            param.setProgress(null);
+            result = inoutService.inoutProgressQuery(param);
+            if (null == result) {
+                return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+                        "绯荤粺涓烘煡璇㈠埌鎵ц涓殑杞﹁締淇℃伅", null);
+            }
 
-			// 閫氱煡绉伴噸涓绘帶娴佺▼缁撴潫
-			inoutDeviceManager.noticeProgressComplete(data);
+            // 濡傛灉娌℃湁娴佺▼鏉′欢璇存槑涓嶉渶瑕佸仛鍒ゆ柇锛岀洿鎺ヨ繑鍥�
+            if (StringUtils.isEmpty(progress)) {
+                return new PageResponse<>(RespCodeEnum.CODE_0000, result);
+            }
 
-			return inoutComplete(data);
-		}
 
-		// 璋冪敤淇濆瓨鏂规硶鎵ц
-		if (StringUtils.isEmpty(data.getId())) {
-			msg = inoutService.insertData(data);
-		} else {
-			msg = inoutService.updateData(data);
-		}
+            //娴佺▼绫诲瀷楠岃瘉
+            if (!result.getType().equals(param.getType())) {
+                String msg = "娴佺▼閿欒锛氬綋鍓嶈溅杈嗘祦绋嬩负銆愬叆搴撱��";
+                if (InoutConstant.TYPE_OUT.equals(result.getType())) msg = "娴佺▼閿欒锛氬綋鍓嶈溅杈嗘祦绋嬩负銆愬嚭搴撱��";
+                return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), msg, result);
+            }
 
-		// 鎵ц闄勪欢淇℃伅
-		if (null != files) {
-			fileService.saveInoutFiles(files, data.getCompanyId(),
-					data.getId(), curProgress);
-		}
 
-		if (null != msg) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg,
-					data);
-		}
-		return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛",
-				data);
-	}
+            //娴佺▼鐜妭楠岃瘉
+            if (progress.equals(InoutConstant.PROGRESS_WEIGHT_TAG)) {
+                if (result.getProgress().equals(
+                        InoutConstant.PROGRESS_WEIGHT_EMPTY)
+                        || result.getProgress().equals(
+                        InoutConstant.PROGRESS_WEIGHT_FULL)) {
+                    // 琛ㄧず褰撳墠娴佺▼姝e父
+                } else {
+                    return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+                            "鎻愮ず锛氶潪褰撳墠鐜妭锛岃鍒�"
+                                    + InoutConstant.getProcessName(
+                                    param.getType(),
+                                    result.getProgress()), result);
+                }
+            } else {
+                if (!result.getProgress().equals(progress)) {
+                    return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+                            "鎻愮ず锛氶潪褰撳墠鐜妭锛岃鍒�"
+                                    + InoutConstant.getProcessName(
+                                    param.getType(),
+                                    result.getProgress()), result);
+                }
+            }
 
-	public PageResponse<InoutData> inNextStep(InoutData data) throws Exception {
-		String msg;
-		IUser user = ContextUtil.getLoginUser();
-		if (StringUtils.isEmpty(data.getCompanyId())) {
-			data.setCompanyId(user.getCompanyId());
-		}
-		if (StringUtils.isEmpty(data.getDeptId())) {
-			data.setDeptId(ContextUtil.subDeptId(user));
-		}
-		String curProgress = data.getProgress();
-		List<FileData> files = data.getFiles();
+            return new PageResponse<>(RespCodeEnum.CODE_0000, result);
 
-		if (StringUtils.isEmpty(data.getIntelCard())) {
-			data.setIntelCard(data.getUserId());
-		}
+        } catch (Exception e) {
+            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+                    e.getMessage());
+        }
+    }
 
-		// 鏇存柊涓嬩竴涓姸鎬佸拰鍩烘湰淇℃伅
-		InoutSysConf inoutSysConf = inoutManagerService.getCacheInoutSysConf(data.getCompanyId(), data.getDeptId());
-
-		if (null == inoutSysConf
-				|| StringUtils.isEmpty(inoutSysConf.getProgressIn())) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-					"褰撳墠搴撳尯鏈厤缃叆搴撴祦绋嬩俊鎭紝璇疯仈绯荤鐞嗗憳閰嶇疆銆�", data);
-		}
-
-		data = updateInBasicInfo(data, inoutSysConf);
-
-		// 濡傛灉褰撳墠鑺傜偣鏄敞鍐岋紝鍒欓渶瑕侀獙璇佷笅锛屾槸鍚︽湁涓哄畬鎴愮殑娴佺▼鍦ㄦ墽琛屼腑
-		if (InoutConstant.PROGRESS_REGISTER.equals(curProgress)) {
-			InoutData progressData = this.inoutProgressQuery(data);
-			if (null != progressData) {
-				return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-						"褰撳墠鍗$墖/杞︾墝鍙锋湁娴佺▼鏈粨鏉熴��", progressData);
-			}
-		}
-
-		if(null != data.getPrice() && null != data.getRecordWeight()){
-		    data.setSettleMoney(NumberUtil.keepPrecision(data.getPrice()*data.getRecordWeight(),2));
+    public PageResponse<InoutData> outNextStep(InoutData data) throws Exception {
+        String msg;
+        IUser user = ContextUtil.getLoginUser();
+        if (StringUtils.isEmpty(data.getCompanyId())) {
+            data.setCompanyId(user.getCompanyId());
+        }
+        if (StringUtils.isEmpty(data.getDeptId())) {
+            data.setDeptId(ContextUtil.subDeptId(user));
+        }
+        if (StringUtils.isEmpty(data.getIntelCard())) {
+            data.setIntelCard(data.getUserId());
         }
 
-		// 娴佺▼瀹屾垚锛岀洿鎺ヨ皟鐢ㄦ祦绋嬪畬鎴愭帴鍙�
-		if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-			if (StringUtils.isEmpty(data.getCompanyId())) {
-				data.setCompanyId(ContextUtil.getCompanyId());
-			}
+        String curProgress = data.getProgress();
+        List<FileData> files = data.getFiles();
 
-			inoutService.updateData(data);
-			// 鎵ц闄勪欢淇℃伅
-			if (null != files) {
-				fileService.saveInoutFiles(files, data.getCompanyId(),
-						data.getId(), curProgress);
-			}
+        // 鏇存柊涓嬩竴涓姸鎬佸拰鍩烘湰淇℃伅
+        InoutSysConf inoutSysConf = inoutManagerService.getCacheInoutSysConf(
+                data.getCompanyId(), data.getDeptId());
+        if (null == inoutSysConf
+                || StringUtils.isEmpty(inoutSysConf.getProgressIn())) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "褰撳墠搴撳尯鏈厤缃嚭搴撴祦绋嬩俊鎭紝璇疯仈绯荤鐞嗗憳閰嶇疆銆�", data);
+        }
+        data = updateOutBasicInfo(data, inoutSysConf);
 
-			// 閫氱煡绉伴噸涓绘帶娴佺▼缁撴潫
-			inoutDeviceManager.noticeProgressComplete(data);
+        // 濡傛灉褰撳墠鑺傜偣鏄敞鍐岋紝鍒欓渶瑕侀獙璇佷笅锛屾槸鍚︽湁涓哄畬鎴愮殑娴佺▼鍦ㄦ墽琛屼腑
+        if (InoutConstant.PROGRESS_REGISTER.equals(curProgress)) {
+            InoutData progressData = this.inoutProgressQuery(data);
+            if (null != progressData) {
+                return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                        "褰撳墠鍗$墖/杞︾墝鍙锋湁娴佺▼鏈粨鏉熴��", progressData);
+            }
+        }
 
-			return inoutComplete(data);
-		}
+        if (null != data.getPrice() && null != data.getRecordWeight()) {
+            data.setSettleMoney(NumberUtil.keepPrecision(data.getPrice() * data.getRecordWeight(), 2));
+        }
 
-		// 璋冪敤淇濆瓨鏂规硶鎵ц
-		if (StringUtils.isEmpty(data.getId())) {
-			msg = inoutService.insertData(data);
-		} else {
-			msg = inoutService.updateData(data);
-		}
+        // 娴佺▼瀹屾垚锛岀洿鎺ヨ皟鐢ㄦ祦绋嬪畬鎴愭帴鍙�
+        if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+            inoutService.updateData(data);
+            // 鎵ц闄勪欢淇℃伅
+            if (null != files) {
+                fileService.saveInoutFiles(files, data.getCompanyId(),
+                        data.getId(), curProgress);
+            }
 
-		// 鎵ц闄勪欢淇℃伅
-		if (null != files) {
-			fileService.saveInoutFiles(files, data.getCompanyId(),
-					data.getId(), curProgress);
-		}
+            // 閫氱煡绉伴噸涓绘帶娴佺▼缁撴潫
+            inoutDeviceManager.noticeProgressComplete(data);
 
-		if (null != msg) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg);
-		}
+            return inoutComplete(data);
+        }
 
-		return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛",
-				data);
-	}
+        // 璋冪敤淇濆瓨鏂规硶鎵ц
+        if (StringUtils.isEmpty(data.getId())) {
+            msg = inoutService.insertData(data);
+        } else {
+            msg = inoutService.updateData(data);
+        }
 
-	public InoutData inoutProgressQuery(InoutData data) throws Exception {
-		InoutParam param = new InoutParam();
-		param.setCompanyId(data.getCompanyId());
-		param.setPlateNum(data.getPlateNum());
-		param.setIntelCard(data.getIntelCard());
-		param.setType(data.getType());
+        // 鎵ц闄勪欢淇℃伅
+        if (null != files) {
+            fileService.saveInoutFiles(files, data.getCompanyId(),
+                    data.getId(), curProgress);
+        }
 
-		return inoutService.inoutProgressQuery(param);
-	}
+        if (null != msg) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg,
+                    data);
+        }
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛",
+                data);
+    }
 
-	@Transactional(rollbackFor = Exception.class)
-	public PageResponse<InoutData> updateCheck(InoutData data) throws Exception {
+    public PageResponse<InoutData> inNextStep(InoutData data) throws Exception {
+        String msg;
 
-		if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-					"褰撳墠娴佺▼宸茬粡缁撴潫锛屼笉鏀寔淇敼", data);
-		}
+        String curProgress = data.getProgress();
+        List<FileData> files = data.getFiles();
+        if (StringUtils.isEmpty(data.getIntelCard())) {
+            data.setIntelCard(data.getUserId());
+        }
 
-		CheckUpdateResult checkResult = this.updateCheckItems(data);
-		String tag = checkResult.getMsg();
+        // 鏇存柊涓嬩竴涓姸鎬佸拰鍩烘湰淇℃伅
+        InoutSysConf inoutSysConf = inoutManagerService.getCacheInoutSysConf(data.getCompanyId(), data.getDeptId());
 
-		if (null != tag) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-					"鍚庡彴鎵ц寮傚父锛�" + tag, data);
-		}
+        if (null == inoutSysConf
+                || StringUtils.isEmpty(inoutSysConf.getProgressIn())) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "褰撳墠搴撳尯鏈厤缃叆搴撴祦绋嬩俊鎭紝璇疯仈绯荤鐞嗗憳閰嶇疆銆�", data);
+        }
 
-		// 鑾峰彇涓氬姟鏁版嵁淇℃伅
-		InoutParam param = new InoutParam();
-		param.setCompanyId(data.getCompanyId());
-		param.setId(data.getId());
-		InoutData progressData = inoutService.inoutProgressQuery(param);
-		if (null == progressData) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-					"娌℃湁鑾峰彇鍒板嚭鍏ュ簱涓氬姟鏁版嵁淇℃伅锛屾洿鏂板け璐�", data);
-		}
-		if (InoutConstant.PROGRESS_RECORD.equals(progressData.getProgress())) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-					"褰撳墠娴佺▼宸茬粡缁撴潫锛屼笉鏀寔淇敼");
-		}
-		progressData.setCheckStatus(data.getCheckStatus());
+        data = updateInBasicInfo(data, inoutSysConf);
 
-		// 鏇存柊涓嬩竴涓姸鎬佸拰鍩烘湰淇℃伅
-		if (InoutConstant.PROGRESS_CHECK.equals(progressData.getProgress())) {
-			progressData = updateInBasicInfo(progressData, null);
-			// 鑻ュ寲楠岀粨鏋滀笉鍚堟牸锛屽垽鏂厤缃悗缁祦绋�
-			if (InoutConstant.STATUS_UNPASS.equals(progressData
-					.getCheckStatus())) {
-				progressData = checkNoPass(progressData);
-			}
-		}
-		progressData.setCheckUser(ContextUtil.getLoginUserCName());
-		if (StringUtils.isNotEmpty(data.getCustomerName())) {
-			progressData.setCustomerId(data.getCustomerId());
-			progressData.setCustomerName(data.getCustomerName());
-		}
-		if (StringUtils.isNotEmpty(data.getDepotId())) {
-			progressData.setDepotId(data.getDepotId());
-		}
-		if (StringUtils.isNotEmpty(data.getFoodVariety())) {
-			progressData.setFoodVariety(data.getFoodVariety());
-		}
-		if (StringUtils.isNotEmpty(data.getFoodLevel())) {
-			progressData.setFoodLevel(data.getFoodLevel());
-		}
-		if (StringUtils.isNotEmpty(data.getFoodLocation())) {
-			progressData.setFoodLocation(data.getFoodLocation());
-		}
-		if (StringUtils.isNotEmpty(data.getFoodYear())) {
-			progressData.setFoodYear(data.getFoodYear());
-		}
-		if (null != data.getPrice()) {
-			progressData.setPrice(data.getPrice());
-		}
-		if (StringUtils.isNotEmpty(data.getRemarks())) {
-			progressData.setRemarks(data.getRemarks());
-		}
-		if (StringUtils.isNotEmpty(data.getNoticeId())) {
-			progressData.setNoticeId(data.getNoticeId());
-		}
+        // 濡傛灉褰撳墠鑺傜偣鏄敞鍐岋紝鍒欓渶瑕侀獙璇佷笅锛屾槸鍚︽湁涓哄畬鎴愮殑娴佺▼鍦ㄦ墽琛屼腑
+        if (InoutConstant.PROGRESS_REGISTER.equals(curProgress)) {
+            InoutData progressData = this.inoutProgressQuery(data);
+            if (null != progressData) {
+                return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                        "褰撳墠鍗$墖/杞︾墝鍙锋湁娴佺▼鏈粨鏉熴��", progressData);
+            }
+        }
 
-		// 鍥炲~姘村垎鍜屾潅璐�
-		if (checkResult.getWet() > 0) {
-			progressData.setWet(checkResult.getWet());
-		}
+        if (null != data.getPrice() && null != data.getRecordWeight()) {
+            data.setSettleMoney(NumberUtil.keepPrecision(data.getPrice() * data.getRecordWeight(), 2));
+        }
 
-		if (checkResult.getImpurity() > 0) {
-			progressData.setImpurity(checkResult.getImpurity());
-		}
+        // 娴佺▼瀹屾垚锛岀洿鎺ヨ皟鐢ㄦ祦绋嬪畬鎴愭帴鍙�
+        if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+            if (StringUtils.isEmpty(data.getCompanyId())) {
+                data.setCompanyId(ContextUtil.getCompanyId());
+            }
 
-		String msg = inoutService.updateData(progressData);
+            inoutService.updateData(data);
+            // 鎵ц闄勪欢淇℃伅
+            if (null != files) {
+                fileService.saveInoutFiles(files, data.getCompanyId(),
+                        data.getId(), curProgress);
+            }
 
-		if (null != msg) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg);
-		}
-		if (InoutConstant.PROGRESS_RECORD.equals(progressData.getProgress())) {
+            // 閫氱煡绉伴噸涓绘帶娴佺▼缁撴潫
+            inoutDeviceManager.noticeProgressComplete(data);
 
-			inoutComplete(progressData);
-		}
-		return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛");
-	}
+            return inoutComplete(data);
+        }
 
-	/**
-	 * 鍖栭獙缁撴灉涓嶉�氳繃鏃舵牎楠岄厤缃俊鎭�
-	 *
-	 * @param data
-	 * @return
-	 */
-	private InoutData checkNoPass(InoutData data) {
-		InoutSysConf inoutSysConf = inoutManagerService.getCacheInoutSysConf(
-				data.getCompanyId(), data.getDeptId());
+        // 璋冪敤淇濆瓨鏂规硶鎵ц
+        if (StringUtils.isEmpty(data.getId())) {
+            msg = inoutService.insertData(data);
+        } else {
+            msg = inoutService.updateData(data);
+        }
 
-		if (inoutSysConf.getNoPassNext().equals(InoutConstant.CHECK_NOPASS_RECORD)) {
-			// 娴佺▼缁撴潫
-			data.setProgress(InoutConstant.PROGRESS_RECORD);
-			data.setCompleteTime(new Date());
-		}
-		if (inoutSysConf.getNoPassNext().equals(InoutConstant.CHECK_NOPASS_BACK)) {
-			// 绂诲簱鏀跺崱
-			data.setProgress(InoutConstant.PROGRESS_CARD_BACK);
-		}
-		return data;
-	}
+        // 鎵ц闄勪欢淇℃伅
+        if (null != files) {
+            fileService.saveInoutFiles(files, data.getCompanyId(),
+                    data.getId(), curProgress);
+        }
 
-	private CheckUpdateResult updateCheckItems(InoutData data) {
-		CheckUpdateResult result = new CheckUpdateResult();
-		if (null == data.getCheckItems())
-			return result;
-		try {
-			// 鏇存柊妫�楠岄」鏁版嵁
-			result = checkStandardManager.updateCheckItems(data.getCheckId(),
-					data.getCompanyId(), data.getCheckItems());
+        if (null != msg) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg);
+        }
 
-			// 灏嗗寲楠屾暟鎹瓨鍏ョ紦瀛樹腑
-			inoutService.setCheckCache(data);
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛",
+                data);
+    }
 
-			return result;
+    public InoutData inoutProgressQuery(InoutData data) throws Exception {
+        InoutParam param = new InoutParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setPlateNum(data.getPlateNum());
+        param.setIntelCard(data.getIntelCard());
+        param.setType(data.getType());
 
-		} catch (Exception e) {
-			log.error("鍚庡彴寮傚父锛歿}", e);
-			result.setMsg("鎵ц寮傚父锛�" + e.getMessage());
-		}
-		return result;
-	}
+        return inoutService.inoutProgressQuery(param);
+    }
 
-	/**
-	 * 浠庣紦瀛樹腑鑾峰彇涓嬩竴娴佺▼
-	 *
-	 * @return
-	 */
-	private String getNextProgress(String curProgress, String type,
-			InoutSysConf sysConf) {
-		String nextProgress = null;
-		List<String> list = null;
-		if (InoutConstant.TYPE_IN.equals(type)) {
-			list = Arrays.asList(sysConf.getProgressIn().split("-"));
-		}
-		if (InoutConstant.TYPE_OUT.equals(type)) {
-			list = Arrays.asList(sysConf.getProgressOut().split("-"));
-		}
-		if (list != null) {
-			for (int i = 0; i < list.size() - 1; i++) {
-				if (curProgress.equals(list.get(i))) {
-					nextProgress = list.get(i + 1);
-					break;
-				}
-			}
-		}
-		return nextProgress;
-	}
+    @Transactional(rollbackFor = Exception.class)
+    public PageResponse<InoutData> updateCheck(InoutData data) throws Exception {
 
-	/**
-	 * 鏍规嵁闇�瑕佷繚瀛樼殑鏁版嵁锛岃皟鏁翠笅涓�涓祦绋嬬姸鎬� 涓嶅悓鐨勪粨搴撶粍缁囨祦绋嬪彲鑳戒笉涓�鏍凤紝闇�瑕佹牴鎹疄闄呰皟鏁�
-	 *
-	 * @param data
-	 * @return
-	 */
-	private InoutData updateInBasicInfo(InoutData data, InoutSysConf sysConf) {
-		if (null == sysConf) {
-			sysConf = inoutManagerService.getCacheInoutSysConf(
-					data.getCompanyId(), data.getDeptId());
-		}
+        if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "褰撳墠娴佺▼宸茬粡缁撴潫锛屼笉鏀寔淇敼", data);
+        }
 
-		if (InoutConstant.PROGRESS_REGISTER.equals(data.getProgress())) {
-			data.setRegisterTime(new Date());
-			data.setRegisterUser(ContextUtil.getLoginUserCName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
+        CheckUpdateResult checkResult = this.updateCheckItems(data);
+        String tag = checkResult.getMsg();
 
-			return data;
-		}
+        if (null != tag) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "鍚庡彴鎵ц寮傚父锛�" + tag, data);
+        }
 
-		if (InoutConstant.PROGRESS_WEIGHT_FULL.equals(data.getProgress())) {
-			data.setFullWeightTime(new Date());
-			data.setFullWeightUser(ContextUtil.getLoginUserCName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
-			return data;
-		}
-		if (InoutConstant.PROGRESS_CHECK.equals(data.getProgress())) {
-			data.setCheckUser(ContextUtil.getLoginUserCName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
-			return data;
-		}
+        // 鑾峰彇涓氬姟鏁版嵁淇℃伅
+        InoutParam param = new InoutParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setId(data.getId());
+        InoutData progressData = inoutService.inoutProgressQuery(param);
+        if (null == progressData) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "娌℃湁鑾峰彇鍒板嚭鍏ュ簱涓氬姟鏁版嵁淇℃伅锛屾洿鏂板け璐�", data);
+        }
+        if (InoutConstant.PROGRESS_RECORD.equals(progressData.getProgress())) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "褰撳墠娴佺▼宸茬粡缁撴潫锛屼笉鏀寔淇敼");
+        }
+        progressData.setCheckStatus(data.getCheckStatus());
 
-		if (InoutConstant.PROGRESS_WEIGHT_EMPTY.equals(data.getProgress())) {
-			data.setEmptyWeightTime(new Date());
-			data.setEmptyWeightUser(ContextUtil.getLoginUserCName());
+        // 鏇存柊涓嬩竴涓姸鎬佸拰鍩烘湰淇℃伅
+        if (InoutConstant.PROGRESS_CHECK.equals(progressData.getProgress())) {
+            progressData = updateInBasicInfo(progressData, null);
+            // 鑻ュ寲楠岀粨鏋滀笉鍚堟牸锛屽垽鏂厤缃悗缁祦绋�
+            if (InoutConstant.STATUS_UNPASS.equals(progressData
+                    .getCheckStatus())) {
+                progressData = checkNoPass(progressData);
+            }
+        }
+        progressData.setCheckUser(ContextUtil.getLoginUserCName());
+//		if (StringUtils.isNotEmpty(data.getCustomerName())) {
+//			progressData.setCustomerId(data.getCustomerId());
+//			progressData.setCustomerName(data.getCustomerName());
+//		}
+        if (StringUtils.isNotEmpty(data.getDepotId())) {
+            progressData.setDepotId(data.getDepotId());
+        }
+        if (StringUtils.isNotEmpty(data.getFoodVariety())) {
+            progressData.setFoodVariety(data.getFoodVariety());
+        }
+        if (StringUtils.isNotEmpty(data.getFoodLevel())) {
+            progressData.setFoodLevel(data.getFoodLevel());
+        }
+        if (StringUtils.isNotEmpty(data.getFoodLocation())) {
+            progressData.setFoodLocation(data.getFoodLocation());
+        }
+        if (StringUtils.isNotEmpty(data.getFoodYear())) {
+            progressData.setFoodYear(data.getFoodYear());
+        }
+        if (null != data.getPrice()) {
+            progressData.setPrice(data.getPrice());
+        }
+        if (StringUtils.isNotEmpty(data.getRemarks())) {
+            progressData.setRemarks(data.getRemarks());
+        }
+        if (StringUtils.isNotEmpty(data.getNoticeId())) {
+            progressData.setNoticeId(data.getNoticeId());
+        }
 
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
+//		// 鍥炲~姘村垎鍜屾潅璐�
+//		if (checkResult.getWet() > 0) {
+//			progressData.setWet(checkResult.getWet());
+//		}
+//
+//		if (checkResult.getImpurity() > 0) {
+//			progressData.setImpurity(checkResult.getImpurity());
+//		}
 
-			if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-				data.setCompleteTime(DateUtils.addMinutes(new Date(), 2));
-				data.setCompleteUser(ContextUtil.getLoginUserCName());
-			}
-			return data;
-		}
+        String msg = inoutService.updateData(progressData);
 
-		if (InoutConstant.PROGRESS_HANDLE.equals(data.getProgress())) {
+        if (null != msg) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg);
+        }
+        if (InoutConstant.PROGRESS_RECORD.equals(progressData.getProgress())) {
 
-			// 鏌ヨ缂撳瓨涓粨搴撲俊鎭紝鏍规嵁浠撳簱id璁剧疆鍊间粨浜轰负浠撳簱淇濈鍛�
-			Depot depot = commonService.getCacheDepot(data.getCompanyId(),
-					data.getDepotId());
-			data.setHandleUser(depot == null ? "" : depot.getStoreKeeperName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
-			return data;
-		}
+            inoutComplete(progressData);
+        }
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛");
+    }
 
-		if (InoutConstant.PROGRESS_CARD_BACK.equals(data.getProgress())) {
-			data.setCompleteTime(new Date());
-			data.setCompleteUser(ContextUtil.getLoginUserCName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
-			return data;
-		}
-		return data;
-	}
+    /**
+     * 鍖栭獙缁撴灉涓嶉�氳繃鏃舵牎楠岄厤缃俊鎭�
+     *
+     * @param data
+     * @return
+     */
+    private InoutData checkNoPass(InoutData data) {
+        InoutSysConf inoutSysConf = inoutManagerService.getCacheInoutSysConf(
+                data.getCompanyId(), data.getDeptId());
 
-	/**
-	 * 鏍规嵁闇�瑕佷繚瀛樼殑鏁版嵁锛岃皟鏁翠笅涓�涓祦绋嬬姸鎬� 涓嶅悓鐨勪粨搴撶粍缁囨祦绋嬪彲鑳戒笉涓�鏍凤紝闇�瑕佹牴鎹疄闄呰皟鏁�
-	 *
-	 * @param data
-	 * @return
-	 */
-	private InoutData updateOutBasicInfo(InoutData data, InoutSysConf sysConf) {
-		if (InoutConstant.PROGRESS_REGISTER.equals(data.getProgress())) {
-			data.setRegisterTime(new Date());
-			data.setRegisterUser(ContextUtil.getLoginUserCName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
+        if (inoutSysConf.getNoPassNext().equals(InoutConstant.CHECK_NOPASS_RECORD)) {
+            // 娴佺▼缁撴潫
+            data.setProgress(InoutConstant.PROGRESS_RECORD);
+            data.setCompleteTime(new Date());
+        }
+        if (inoutSysConf.getNoPassNext().equals(InoutConstant.CHECK_NOPASS_BACK)) {
+            // 绂诲簱鏀跺崱
+            data.setProgress(InoutConstant.PROGRESS_CARD_BACK);
+        }
+        return data;
+    }
 
-			return data;
-		}
-		if (InoutConstant.PROGRESS_WEIGHT_EMPTY.equals(data.getProgress())) {
-			data.setEmptyWeightTime(new Date());
-			data.setEmptyWeightUser(ContextUtil.getLoginUserCName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
+    private CheckUpdateResult updateCheckItems(InoutData data) {
+        CheckUpdateResult result = new CheckUpdateResult();
+        if (null == data.getCheckItems())
+            return result;
+        try {
+            // 鏇存柊妫�楠岄」鏁版嵁
+            result = checkStandardManager.updateCheckItems(data.getCheckId(),
+                    data.getCompanyId(), data.getCheckItems());
 
-			return data;
-		}
+            // 灏嗗寲楠屾暟鎹瓨鍏ョ紦瀛樹腑
+            inoutService.setCheckCache(data);
+
+            return result;
+
+        } catch (Exception e) {
+            log.error("鍚庡彴寮傚父锛歿}", e);
+            result.setMsg("鎵ц寮傚父锛�" + e.getMessage());
+        }
+        return result;
+    }
+
+    /**
+     * 浠庣紦瀛樹腑鑾峰彇涓嬩竴娴佺▼
+     *
+     * @return
+     */
+    private String getNextProgress(String curProgress, String type, InoutSysConf sysConf) {
+        String nextProgress = null;
+        List<String> list = null;
+        if (InoutConstant.TYPE_IN.equals(type)) {
+            list = Arrays.asList(sysConf.getProgressIn().split("-"));
+        }
+        if (InoutConstant.TYPE_OUT.equals(type)) {
+            list = Arrays.asList(sysConf.getProgressOut().split("-"));
+        }
+        if (list != null) {
+            for (int i = 0; i < list.size() - 1; i++) {
+                if (curProgress.equals(list.get(i))) {
+                    nextProgress = list.get(i + 1);
+                    break;
+                }
+            }
+        }
+        return nextProgress;
+    }
+
+    /**
+     * 鏍规嵁闇�瑕佷繚瀛樼殑鏁版嵁锛岃皟鏁翠笅涓�涓祦绋嬬姸鎬� 涓嶅悓鐨勪粨搴撶粍缁囨祦绋嬪彲鑳戒笉涓�鏍凤紝闇�瑕佹牴鎹疄闄呰皟鏁�
+     *
+     * @param data
+     * @return
+     */
+    private InoutData updateInBasicInfo(InoutData data, InoutSysConf sysConf) {
+        if (null == sysConf) {
+            sysConf = inoutManagerService.getCacheInoutSysConf(
+                    data.getCompanyId(), data.getDeptId());
+        }
+
+        if (InoutConstant.PROGRESS_REGISTER.equals(data.getProgress())) {
+            data.setRegisterTime(new Date());
+            data.setRegisterUser(ContextUtil.getLoginUserCName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+
+            return data;
+        }
+
+        if (InoutConstant.PROGRESS_WEIGHT_FULL.equals(data.getProgress())) {
+            data.setFullWeightTime(new Date());
+            data.setFullWeightUser(ContextUtil.getLoginUserCName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+            return data;
+        }
+        if (InoutConstant.PROGRESS_CHECK.equals(data.getProgress())) {
+            data.setCheckUser(ContextUtil.getLoginUserCName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+            return data;
+        }
+
+        if (InoutConstant.PROGRESS_WEIGHT_EMPTY.equals(data.getProgress())) {
+            data.setEmptyWeightTime(new Date());
+            data.setEmptyWeightUser(ContextUtil.getLoginUserCName());
+
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+
+            if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+                data.setCompleteTime(DateUtils.addMinutes(new Date(), 2));
+                data.setCompleteUser(ContextUtil.getLoginUserCName());
+            }
+            return data;
+        }
+
+        if (InoutConstant.PROGRESS_HANDLE.equals(data.getProgress())) {
+
+            // 鏌ヨ缂撳瓨涓粨搴撲俊鎭紝鏍规嵁浠撳簱id璁剧疆鍊间粨浜轰负浠撳簱淇濈鍛�
+            Depot depot = commonService.getCacheDepot(data.getCompanyId(),
+                    data.getDepotId());
+            data.setHandleUser(depot == null ? "" : depot.getStoreKeeperName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+            return data;
+        }
+
+        if (InoutConstant.PROGRESS_CARD_BACK.equals(data.getProgress())) {
+            data.setCompleteTime(new Date());
+            data.setCompleteUser(ContextUtil.getLoginUserCName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+            return data;
+        }
+        return data;
+    }
+
+    /**
+     * 鏍规嵁闇�瑕佷繚瀛樼殑鏁版嵁锛岃皟鏁翠笅涓�涓祦绋嬬姸鎬� 涓嶅悓鐨勪粨搴撶粍缁囨祦绋嬪彲鑳戒笉涓�鏍凤紝闇�瑕佹牴鎹疄闄呰皟鏁�
+     *
+     * @param data
+     * @return
+     */
+    private InoutData updateOutBasicInfo(InoutData data, InoutSysConf sysConf) {
+        if (InoutConstant.PROGRESS_REGISTER.equals(data.getProgress())) {
+            data.setRegisterTime(new Date());
+            data.setRegisterUser(ContextUtil.getLoginUserCName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+
+            return data;
+        }
+        if (InoutConstant.PROGRESS_WEIGHT_EMPTY.equals(data.getProgress())) {
+            data.setEmptyWeightTime(new Date());
+            data.setEmptyWeightUser(ContextUtil.getLoginUserCName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+
+            return data;
+        }
+
+        if (InoutConstant.PROGRESS_HANDLE.equals(data.getProgress())) {
+            // 鏌ヨ缂撳瓨涓粨搴撲俊鎭紝鏍规嵁浠撳簱id璁剧疆鍊间粨浜轰负浠撳簱淇濈鍛�
+            Depot depot = commonService.getCacheDepot(data.getCompanyId(),
+                    data.getDepotId());
+            data.setHandleUser(depot == null ? "" : depot.getStoreKeeperName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+
+            return data;
+        }
+
+        if (InoutConstant.PROGRESS_WEIGHT_FULL.equals(data.getProgress())) {
+            data.setFullWeightTime(new Date());
+            data.setFullWeightUser(ContextUtil.getLoginUserCName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+            if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+                data.setCompleteTime(DateUtils.addMinutes(new Date(), 2));
+                data.setCompleteUser(ContextUtil.getLoginUserCName());
+            }
+            return data;
+        }
+
+        if (InoutConstant.PROGRESS_CARD_BACK.equals(data.getProgress())) {
+            data.setCompleteTime(new Date());
+            data.setCompleteUser(ContextUtil.getLoginUserCName());
+            data.setProgress(getNextProgress(data.getProgress(),
+                    data.getType(), sysConf));
+
+            return data;
+        }
+
+        return data;
+    }
+
+    public PageResponse<Page<InoutData>> pageRecordData(InoutParam param) {
+
+        log.debug("鍒嗛〉淇℃伅--page={},limit={},cuur={}", param.getPage(),
+                param.getLimit(), param.getCurr());
+
+        Page<InoutData> result = inoutService.pageRecordData(param);
+
+        if (null == result.getRecords() || result.getRecords().isEmpty()) {
+            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+                    "鑾峰彇鍒版暟鎹俊鎭负绌�");
+        }
+
+        return new PageResponse<>(RespCodeEnum.CODE_0000, result);
+    }
+
+    /**
+     * @param param
+     * @return
+     */
+    public PageResponse<Page<InoutData>> pageCheckData(InoutParam param) {
+        // 濡傛灉鏄凡鍖栭獙锛屽垯灏嗘祦绋嬬姸鎬佺疆绌猴紝濡傛灉鏄湭鍖栭獙锛屽垯娴佺▼鐘舵�佷笉澶勭悊锛屼粛鏄疌HECK鐘舵��
+        if (!"NONE".equals(param.getCheckStatus())) {
+            param.setProgress(null);
+        }
+        // 璁剧疆鍒嗗簱Id
+        String deptId = ContextUtil.subDeptId(null);
+        param.setDeptId(deptId);
+        return pageRecordData(param);
+    }
+
+
+    public PageResponse<InoutData> inoutComplete(InoutData data) throws Exception {
+
+        if (StringUtils.isEmpty(data.getId())
+                || StringUtils.isEmpty(data.getType())) {
+
+            return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(),
+                    "娌℃湁鑾峰彇鍒拌溅杈嗕俊鎭��", data);
+        }
+
+        InoutParam param = new InoutParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setId(data.getId());
+        param.setType(data.getType());
+        param.setDeptId(data.getDeptId());
+        param.setIntelCard(data.getIntelCard());
+        param.setUserId(ContextUtil.getLoginUserCName());
+        param.setDepotId(data.getDepotId());
+        param.setCompleteTime(data.getCompleteTime());
+        if (null == param.getCompleteTime()) {
+            param.setCompleteTime(new Date());
+        }
+        // 璁剧疆娴佺▼鑺傜偣鐩存帴瀹屾垚
+        param.setProgress(InoutConstant.PROGRESS_RECORD);
+
+        if (null == data.getCompleteTime()) {
+            data.setCompleteTime(DateUtil.getNewByMinute(new Date(), 2));
+        }
+        String msg = inoutService.toComplete(param);
+
+        if (null != msg) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg);
+        }
+
+        // 搴撳瓨璋冩暣
+        commonService.initInoutDepotStore(data);
+
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), null, data);
+    }
+
+    /**
+     * 鎵︽牱鍖栭獙椤甸潰鑾峰彇妫�楠岄」鏉$洰淇℃伅
+     *
+     * @param data
+     * @return
+     */
+    public PageResponse<List<CheckItemData>> getCheckItem(InoutData data) {
+
+        List<CheckItemData> result = checkStandardManager.listCheckItem(
+                data.getCheckId(), data.getCompanyId(), data.getDeptId(),
+                data.getFoodVariety());
+
+        return new PageResponse<>(RespCodeEnum.CODE_0000, result);
+    }
+
+    /**
+     * 鍒犻櫎骞跺畬鎴�
+     *
+     * @param data
+     * @return
+     */
+    public PageResponse<InoutData> deleteInoutData(InoutData data, String msg) {
+        try {
+            data.setRemarks(msg);
+            String result = this.delInoutData(data, false);
+            if (null != result) {
+                return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                        result, data);
+            }
+        } catch (Exception e) {
+            log.error("鍚庡彴寮傚父:{}", e);
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "鍚庡彴寮傚父锛�"
+                    + e.getMessage(), data);
+        }
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц瀹屾垚",
+                data);
+    }
+
+    /**
+     * 鍗″洖鏀堕�昏緫澶勭悊
+     *
+     * @param data
+     * @return
+     */
+    public PageResponse<InoutData> inoutBack(InoutData data) {
+        try {
+            // 浠庣紦瀛樹腑鑾峰彇鏈�鏂扮殑鏁版嵁锛屽鏋滄病鏈夊垯琛ㄧず娴佺▼宸茬粡缁撴潫銆�
+            InoutParam param = new InoutParam();
+            param.setCompanyId(data.getCompanyId());
+            param.setId(data.getId());
+            InoutData curData = inoutService.inoutProgressQuery(param);
+            if (InoutConstant.PROGRESS_RECORD.equals(curData.getProgress())) {
+                return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+                        "褰撳墠鍗℃祦绋嬪凡缁忓畬鎴愶紝鏃犻渶鎵ц鍗″洖鏀�", data);
+            }
+            if (InoutConstant.RECORD_STATUS_DEL.equals(curData
+                    .getRecordStatus())) {
+                return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+                        "褰撳墠鍗′俊鎭凡琚垹闄わ紝涓嶈兘鎵ц鍗″洖鏀�", data);
+            }
+
+            // 濡傛灉褰撳墠娴佺▼鐘舵�佹槸鍗″洖鏀剁姸鎬侊紝灏辨槸瀹屾垚娴佺▼銆�
+            if (InoutConstant.PROGRESS_CARD_BACK.equals(curData.getProgress())) {
+                return inoutComplete(curData);
+            }
 
-		if (InoutConstant.PROGRESS_HANDLE.equals(data.getProgress())) {
-			// 鏌ヨ缂撳瓨涓粨搴撲俊鎭紝鏍规嵁浠撳簱id璁剧疆鍊间粨浜轰负浠撳簱淇濈鍛�
-			Depot depot = commonService.getCacheDepot(data.getCompanyId(),
-					data.getDepotId());
-			data.setHandleUser(depot == null ? "" : depot.getStoreKeeperName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
+            // 濡傛灉鏄叾浠栫姸鎬侊紝鍒欐墽琛屽垹闄ら�昏緫
+            return deleteInoutData(curData, "鍗″洖鏀跺垹闄�");
 
-			return data;
-		}
+        } catch (Exception e) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "鍚庣鎵ц寮傚父锛�" + e.getMessage());
+        }
+    }
 
-		if (InoutConstant.PROGRESS_WEIGHT_FULL.equals(data.getProgress())) {
-			data.setFullWeightTime(new Date());
-			data.setFullWeightUser(ContextUtil.getLoginUserCName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
-			if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-				data.setCompleteTime(DateUtils.addMinutes(new Date(), 2));
-				data.setCompleteUser(ContextUtil.getLoginUserCName());
-			}
-			return data;
-		}
+    /* ============================== 璇﹀崟椤甸潰鐩稿叧鎿嶄綔 ================================= */
 
-		if (InoutConstant.PROGRESS_CARD_BACK.equals(data.getProgress())) {
-			data.setCompleteTime(new Date());
-			data.setCompleteUser(ContextUtil.getLoginUserCName());
-			data.setProgress(getNextProgress(data.getProgress(),
-					data.getType(), sysConf));
+    /**
+     * 琛ュ崟鎿嶄綔 琛ュ崟鍥犱负瀹屾垚鏃堕棿涓嶇‘瀹氾紝鎵�浠ラ渶瑕佺郴缁熸牴鎹綋鍓嶆暟鎹繘琛岃嚜鍔ㄦ娴嬶紝璋冩暣鍘熸潵娴佹按淇℃伅鍜屽簱瀛�
+     *
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    @Transactional
+    public String addInoutData(InoutData data) throws Exception {
 
-			return data;
-		}
+        if (data.getSettleWeight() <= 0.0) {
+            return "琛ュ崟鏁版嵁瑕佹眰缁撶畻閲嶉噺蹇呴』澶т簬0";
+        }
 
-		return data;
-	}
+        // 琛ュ崟鏁版嵁鐩存帴鍒扮粨鏋滅姸鎬�
+        data.setRecordStatus(InoutConstant.RECORD_STATUS_ADD);
+        data.setProgress(InoutConstant.PROGRESS_RECORD);
+        if (InoutConstant.STATUS_NONE.equals(data.getCheckStatus())) {
+            data.setCheckStatus(InoutConstant.STATUS_PASS);
+        }
 
-	public PageResponse<Page<InoutData>> pageRecordData(InoutParam param) {
+        String loginUser = ContextUtil.getLoginUserCName();
+        data.setRegisterUser(loginUser);
+        data.setFullWeightUser(loginUser);
+        data.setEmptyWeightUser(loginUser);
+        data.setHandleUser(loginUser);
+        data.setCompleteUser(loginUser);
+        if (null == data.getCompleteTime()) {
+            data.setCompleteTime(new Date());
+        }
+        // 娉ㄥ唽鏃堕棿姣斿畬鎴愭椂闂存棭涓�涓皬鏃�
+        data.setRegisterTime(DateUtil.getNewByMinute(new Date(), -60));
 
-		log.debug("鍒嗛〉淇℃伅--page={},limit={},cuur={}", param.getPage(),
-				param.getLimit(), param.getCurr());
+        if (StringUtils.isEmpty(data.getUserId())) {
+            data.setUserId(InoutConstant.DEFAULT_ID_CARD);
+        }
+        if (null == data.getIntelCard()) {
+            data.setIntelCard(data.getUserId());
+        }
+        if (null != data.getCheckItems()) {
+            data.setCheckUser(loginUser);
+        }
 
-		Page<InoutData> result = inoutService.pageRecordData(param);
+        // 淇濆瓨妫�娴嬮」鐩�
+        if (InoutConstant.TYPE_IN.equals(data.getType())) {
 
-		if (null == result.getRecords() || result.getRecords().isEmpty()) {
-			return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-					"鑾峰彇鍒版暟鎹俊鎭负绌�");
-		}
+            if (null == data.getFullWeightTime()) {
+                data.setFullWeightTime(DateUtil.getNewByMinute(new Date(), -50));
+            }
+            if (null == data.getHandleEnd()) {
+                data.setHandleEnd(DateUtil.getNewByMinute(new Date(), -40));
+            }
+            if (null == data.getEmptyWeightTime()) {
+                data.setEmptyWeightTime(DateUtil.getNewByMinute(new Date(), -10));
+            }
 
-		return new PageResponse<>(RespCodeEnum.CODE_0000, result);
-	}
+            // 鍏堟墽琛屽寲楠屼俊鎭繚瀛�
+            CheckUpdateResult checkResult = checkStandardManager.updateCheckItems(data.getCheckId(), data.getCompanyId(), data.getCheckItems());
+            if (null != checkResult) {
+//				if (null == data.getWet())data.setWet(checkResult.getWet());
+//				if (null == data.getImpurity())data.setImpurity(checkResult.getImpurity());
+            }
+        } else {
+            if (null == data.getEmptyWeightTime()) {
+                data.setEmptyWeightTime(DateUtil.getNewByMinute(new Date(), -50));
+            }
+            if (null == data.getHandleEnd()) {
+                data.setHandleEnd(DateUtil.getNewByMinute(new Date(), -40));
+            }
+            if (null == data.getFullWeightTime()) {
+                data.setFullWeightTime(DateUtil.getNewByMinute(new Date(), -10));
+            }
+        }
 
-	/**
-	 * @param param
-	 * @return
-	 */
-	public PageResponse<Page<InoutData>> pageCheckData(InoutParam param) {
-		// 濡傛灉鏄凡鍖栭獙锛屽垯灏嗘祦绋嬬姸鎬佺疆绌猴紝濡傛灉鏄湭鍖栭獙锛屽垯娴佺▼鐘舵�佷笉澶勭悊锛屼粛鏄疌HECK鐘舵��
-		if (!"NONE".equals(param.getCheckStatus())) {
-			param.setProgress(null);
-		}
-		// 璁剧疆鍒嗗簱Id
-		String deptId = ContextUtil.subDeptId(null);
-		param.setDeptId(deptId);
-		return pageRecordData(param);
-	}
+        // 娣诲姞琛ュ崟鏁版嵁
+        String msg = inoutService.insertData(data);
 
+        // 鍒濆鍖栭獙璇佸嚭鍏ュ簱搴撳瓨
+        commonService.initInoutDepotStore(data);
+        return msg;
+    }
 
-	public PageResponse<InoutData> inoutComplete(InoutData data) throws Exception {
+    /**
+     * 淇敼鎿嶄綔 淇敼閫昏緫璇存槑锛氫慨鏀规暟鎹渶瑕佽幏鍙栧師鏁版嵁搴撲腑鐨勬暟鎹繘琛屽姣斻��
+     *
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    @javax.transaction.Transactional(rollbackOn = Exception.class)
+    public String updateInoutData(InoutData data) throws Exception {
 
-		if (StringUtils.isEmpty(data.getId())
-				|| StringUtils.isEmpty(data.getType())) {
+        if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
+            return "绯荤粺锛氬凡缁忓垹闄ょ殑鏁版嵁涓嶆敮鎸佷慨鏀癸紒";
+        }
+        if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) {
+            return "绯荤粺锛氬紓甯哥粓姝㈢殑鏁版嵁涓嶆敮鎸佷慨鏀癸紒";
+        }
 
-			return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(),
-					"娌℃湁鑾峰彇鍒拌溅杈嗕俊鎭��", data);
-		}
+        // 濡傛灉娴佺▼鏈粨鏉燂紝鍙洿鏂版暟鎹�
+        if (!InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+            return inoutService.updateData(data);
+        }
 
-		InoutParam param = new InoutParam();
-		param.setCompanyId(data.getCompanyId());
-		param.setId(data.getId());
-		param.setType(data.getType());
-		param.setDeptId(data.getDeptId());
-		param.setIntelCard(data.getIntelCard());
-		param.setUserId(ContextUtil.getLoginUserCName());
-		param.setDepotId(data.getDepotId());
-		param.setCompleteTime(data.getCompleteTime());
-		if (null == param.getCompleteTime()) {
-			param.setCompleteTime(new Date());
-		}
-		// 璁剧疆娴佺▼鑺傜偣鐩存帴瀹屾垚
-		param.setProgress(InoutConstant.PROGRESS_RECORD);
+        // 濡傛灉鏄凡缁忓畬鎴愮殑鏁版嵁锛屽厛鑾峰彇鍒颁慨鏀圭洿鎺ョ殑鏁版嵁鏍规嵁鏁版嵁杩涜瀵规瘮
+        InoutParam param = new InoutParam();
+        param.setId(data.getId());
+        param.setCompanyId(data.getCompanyId());
+        param.setType(data.getType());
+        InoutData record = inoutService.inoutQueryById(param);
 
-		if (null == data.getCompleteTime()) {
-			data.setCompleteTime(DateUtil.getNewByMinute(new Date(), 2));
-		}
-		String msg = inoutService.toComplete(param);
+        if (null == record) {
+            return "褰撳墠淇敼鏁版嵁宸茬粡涓嶅瓨鍦紒";
+        }
 
-		if (null != msg) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg);
-		}
+        // 閬垮厤鏁版嵁搴撲腑鐨勬暟鎹凡缁忚鍏朵粬浜轰慨鏀�
+        if (InoutConstant.RECORD_STATUS_DEL.equals(record.getRecordStatus())) {
+            return "绯荤粺锛氬凡缁忓垹闄ょ殑鏁版嵁涓嶆敮鎸佷慨鏀癸紒";
+        }
+        if (InoutConstant.RECORD_STATUS_ERROR.equals(record.getRecordStatus())) {
+            return "绯荤粺锛氬紓甯哥粓姝㈢殑鏁版嵁涓嶆敮鎸佷慨鏀癸紒";
+        }
 
-		// 搴撳瓨璋冩暣
-		commonService.initInoutDepotStore(data);
+        // 淇濆瓨妫�娴嬮」鐩�
+        if (InoutConstant.TYPE_IN.equals(data.getType())) {
+            // 鍏堟墽琛屽寲楠屼俊鎭繚瀛�
+            CheckUpdateResult checkResult = checkStandardManager
+                    .updateCheckItems(data.getCheckId(), data.getCompanyId(),
+                            data.getCheckItems());
+            if (null != checkResult) {
+//				if (null == data.getWet())
+//					data.setWet(checkResult.getWet());
+//				if (null == data.getImpurity())
+//					data.setImpurity(checkResult.getImpurity());
+            }
+        }
 
-		return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), null, data);
-	}
+        // 鏇存柊鏁版嵁
+        inoutService.updateData(data);
+        // this.autoCheckByUpdate(data, record);
+        return null;
+    }
 
-	/**
-	 * 鎵︽牱鍖栭獙椤甸潰鑾峰彇妫�楠岄」鏉$洰淇℃伅
-	 *
-	 * @param data
-	 * @return
-	 */
-	public PageResponse<List<CheckItemData>> getCheckItem(InoutData data) {
+    /**
+     * 鍒犻櫎鎿嶄綔 鍒犻櫎鏁版嵁涓鸿蒋鍒犻櫎锛屽垹闄ゆ暟鎹悗闇�瑕佹牴鎹垹闄ゆ儏鍐佃仈鍔ㄥ簱瀛樼瓑淇℃伅
+     *
+     * @param data
+     * @param selected 鏄惁宸茬粡鏌ヨ杩囨暟鎹�
+     * @return
+     * @throws Exception
+     */
+    @Transactional
+    public String delInoutData(InoutData data, boolean selected)
+            throws Exception {
 
-		List<CheckItemData> result = checkStandardManager.listCheckItem(
-				data.getCheckId(), data.getCompanyId(), data.getDeptId(),
-				data.getFoodVariety());
+        // 閬垮厤椤甸潰缂撳瓨棣栧厛鑾峰彇鏁版嵁搴撲腑鏈�鏂扮殑褰撳墠鏁版嵁淇℃伅
+        InoutParam param = new InoutParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setId(data.getId());
+        param.setMsg(" [" + ContextUtil.getLoginUserCName() + "]鎵ц鍒犻櫎锛屽師鍥狅細"
+                + data.getRemarks());
 
-		return new PageResponse<>(RespCodeEnum.CODE_0000, result);
-	}
+        if (!selected) {
+            data = inoutService.inoutQueryById(param);
 
-	/**
-	 * 鍒犻櫎骞跺畬鎴�
-	 *
-	 * @param data
-	 * @return
-	 */
-	public PageResponse<InoutData> deleteInoutData(InoutData data, String msg) {
-		try {
-			data.setRemarks(msg);
-			String result = this.delInoutData(data, false);
-			if (null != result) {
-				return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-						result, data);
-			}
-		} catch (Exception e) {
-			log.error("鍚庡彴寮傚父:{}", e);
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "鍚庡彴寮傚父锛�"
-					+ e.getMessage(), data);
-		}
-		return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц瀹屾垚",
-				data);
-	}
+            if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
+                return "宸茬粡鍒犻櫎鐨勬暟鎹紝涓嶆敮鎸侀噸澶嶅垹闄わ紒";
+            }
+            if (InoutConstant.RECORD_STATUS_ERROR
+                    .equals(data.getRecordStatus())) {
+                return "褰撳墠鏁版嵁宸茬粡琚爣璁颁负寮傚父锛屼笉鏀寔鍒犻櫎锛�";
+            }
+        }
 
-	/**
-	 * 鍗″洖鏀堕�昏緫澶勭悊
-	 *
-	 * @param data
-	 * @return
-	 */
-	public PageResponse<InoutData> inoutBack(InoutData data) {
-		try {
-			// 浠庣紦瀛樹腑鑾峰彇鏈�鏂扮殑鏁版嵁锛屽鏋滄病鏈夊垯琛ㄧず娴佺▼宸茬粡缁撴潫銆�
-			InoutParam param = new InoutParam();
-			param.setCompanyId(data.getCompanyId());
-			param.setId(data.getId());
-			InoutData curData = inoutService.inoutProgressQuery(param);
-			if (InoutConstant.PROGRESS_RECORD.equals(curData.getProgress())) {
-				return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-						"褰撳墠鍗℃祦绋嬪凡缁忓畬鎴愶紝鏃犻渶鎵ц鍗″洖鏀�", data);
-			}
-			if (InoutConstant.RECORD_STATUS_DEL.equals(curData
-					.getRecordStatus())) {
-				return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
-						"褰撳墠鍗′俊鎭凡琚垹闄わ紝涓嶈兘鎵ц鍗″洖鏀�", data);
-			}
+        // 鎵ц鍒犻櫎
+        param.setProgress(InoutConstant.PROGRESS_RECORD);
+        param.setRecordStatus(InoutConstant.RECORD_STATUS_DEL);
+        param.setType(data.getType());
+        inoutService.deleteData(param);
 
-			// 濡傛灉褰撳墠娴佺▼鐘舵�佹槸鍗″洖鏀剁姸鎬侊紝灏辨槸瀹屾垚娴佺▼銆�
-			if (InoutConstant.PROGRESS_CARD_BACK.equals(curData.getProgress())) {
-				return inoutComplete(curData);
-			}
+        // 濡傛灉娴佺▼鏈粨鏉燂紝鐩存帴鍒犻櫎锛屼笉鐗垫壇鍒拌仈鍔ㄨ皟鏁�
+        if (!InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+            return null;
+        }
+        return null;
+    }
 
-			// 濡傛灉鏄叾浠栫姸鎬侊紝鍒欐墽琛屽垹闄ら�昏緫
-			return deleteInoutData(curData, "鍗″洖鏀跺垹闄�");
+    /**
+     * 寮傚父缁堟鎿嶄綔 璁剧疆寮傚父 涓轰簡閬垮厤椤甸潰鏁版嵁缂撳瓨锛岄渶瑕侀噸鏂拌幏鍙栨渶鏂版暟鎹垽鏂�
+     *
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    @Transactional
+    public String errorInoutData(InoutData data) {
 
-		} catch (Exception e) {
-			return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
-					"鍚庣鎵ц寮傚父锛�" + e.getMessage());
-		}
-	}
+        InoutParam param = new InoutParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setId(data.getId());
+        param.setMsg(" [" + ContextUtil.getLoginUserCName() + "]鎵ц寮傚父缁堟锛屽師鍥狅細"
+                + data.getRemarks());
+        data = inoutService.inoutQueryById(param);
 
-	/* ============================== 璇﹀崟椤甸潰鐩稿叧鎿嶄綔 ================================= */
+        if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
+            return "宸茬粡鍒犻櫎鐨勬暟鎹紝涓嶆敮鎸佸紓甯稿鐞嗭紒";
+        }
+        if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) {
+            return "涓嶆敮鎸侀噸澶嶅紓甯稿鐞嗭紒";
+        }
+        if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+            return "娴佺▼缁撴潫鐨勬暟鎹笉鏀寔寮傚父澶勭悊锛�";
+        }
 
-	/**
-	 * 琛ュ崟鎿嶄綔 琛ュ崟鍥犱负瀹屾垚鏃堕棿涓嶇‘瀹氾紝鎵�浠ラ渶瑕佺郴缁熸牴鎹綋鍓嶆暟鎹繘琛岃嚜鍔ㄦ娴嬶紝璋冩暣鍘熸潵娴佹按淇℃伅鍜屽簱瀛�
-	 *
-	 * @param data
-	 * @return
-	 * @throws Exception
-	 */
-	@Transactional
-	public String addInoutData(InoutData data) throws Exception {
+        return inoutService.inoutStop(param);
+    }
 
-		if (data.getSettleWeight() <= 0.0) {
-			return "琛ュ崟鏁版嵁瑕佹眰缁撶畻閲嶉噺蹇呴』澶т簬0";
-		}
+    /**
+     * 蹇�熺粨鏉熸搷浣� 娴佺▼娌℃湁缁撴潫鐨勫崟鎹繘琛岀粨鏉�
+     *
+     * @param data
+     * @return
+     */
+    public String completeInoutData(InoutData data) throws Exception {
+        if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
+            return "宸茬粡鍒犻櫎鐨勬暟鎹紝涓嶆敮鎸佸畬鎴愶紒";
+        }
+        if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) {
+            return "寮傚父缁堟鐨勬暟鎹紝涓嶆敮鎸佸畬鎴愶紒";
+        }
+        if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
+            return "娴佺▼宸插畬鎴愮殑鏁版嵁锛屼笉鏀寔瀹屾垚锛�";
+        }
 
-		// 琛ュ崟鏁版嵁鐩存帴鍒扮粨鏋滅姸鎬�
-		data.setRecordStatus(InoutConstant.RECORD_STATUS_ADD);
-		data.setProgress(InoutConstant.PROGRESS_RECORD);
-		if (InoutConstant.STATUS_NONE.equals(data.getCheckStatus())) {
-			data.setCheckStatus(InoutConstant.STATUS_PASS);
-		}
+        // 浠庢柊鏌ヨ鏁版嵁
+        InoutParam param = new InoutParam();
+        param.setId(data.getId());
+        param.setCompanyId(data.getCompanyId());
+        param.setType(data.getType());
+        InoutData cuData = inoutService.inoutProgressQuery(param);
+        if (null == cuData) {
+            return "褰撳墠杞﹁締娴佺▼鐘舵�佸凡缁忓彉鍖栵紝璇峰埛鏂伴〉闈㈤噸鏂版搷浣滐紒";
+        }
+        if (!cuData.getProgress().equals(data.getProgress())) {
+            return "褰撳墠杞﹁締娴佺▼鐘舵�佸凡缁忓彉鍖栵紝璇峰埛鏂伴〉闈㈤噸鏂版搷浣滐紒";
+        }
 
-		String loginUser = ContextUtil.getLoginUserCName();
-		data.setRegisterUser(loginUser);
-		data.setFullWeightUser(loginUser);
-		data.setEmptyWeightUser(loginUser);
-		data.setHandleUser(loginUser);
-		data.setCompleteUser(loginUser);
-		if (null == data.getCompleteTime()) {
-			data.setCompleteTime(new Date());
-		}
-		// 娉ㄥ唽鏃堕棿姣斿畬鎴愭椂闂存棭涓�涓皬鏃�
-		data.setRegisterTime(DateUtil.getNewByMinute(new Date(), -60));
+        if (null == data.getCompleteTime()) {
+            return "璇峰~鍐欏畬鎴愭椂闂达紒锛�";
+        }
+        if (StringUtils.isEmpty(data.getDepotId())) {
+            return "璇峰~鍐欎粨搴撲俊鎭紒";
+        }
+//		if (StringUtils.isEmpty(data.getCustomerId())) {
+//			return "璇峰~鍐欏線鏉ュ崟浣嶄俊鎭紒";
+//		}
+        if (StringUtils.isEmpty(data.getFoodYear())) {
+            return "璇峰~鍐欑伯椋熷勾浠戒俊鎭紒";
+        }
+        if (StringUtils.isEmpty(data.getFoodVariety())) {
+            return "璇峰~鍐欑伯椋熷搧绉嶄俊鎭紒";
+        }
 
-		if (StringUtils.isEmpty(data.getUserId())) {
-			data.setUserId(InoutConstant.DEFAULT_ID_CARD);
-		}
-		if (null == data.getIntelCard()) {
-			data.setIntelCard(data.getUserId());
-		}
-		if (null != data.getCheckItems()) {
-			data.setCheckUser(loginUser);
-		}
+        if (data.getSettleWeight() <= 0) {
+            return "璇峰~鍐欑粨绠楀噣閲嶄俊鎭紒";
+        }
 
-		// 淇濆瓨妫�娴嬮」鐩�
-		if (InoutConstant.TYPE_IN.equals(data.getType())) {
+        String msg = inoutService.quickComplete(data);
 
-			if (null == data.getFullWeightTime()) {
-				data.setFullWeightTime(DateUtil.getNewByMinute(new Date(), -50));
-			}
-			if (null == data.getHandleEnd()) {
-				data.setHandleEnd(DateUtil.getNewByMinute(new Date(), -40));
-			}
-			if (null == data.getEmptyWeightTime()) {
-				data.setEmptyWeightTime(DateUtil.getNewByMinute(new Date(), -10));
-			}
+        if (null == msg) {
+            data.setProgress(InoutConstant.PROGRESS_RECORD);
+            commonService.initInoutDepotStore(data);
+        }
+        return msg;
+    }
 
-			// 鍏堟墽琛屽寲楠屼俊鎭繚瀛�
-			CheckUpdateResult checkResult = checkStandardManager.updateCheckItems(data.getCheckId(), data.getCompanyId(),data.getCheckItems());
-			if (null != checkResult) {
-				if (null == data.getWet())data.setWet(checkResult.getWet());
-				if (null == data.getImpurity())data.setImpurity(checkResult.getImpurity());
-			}
-		} else {
-			if (null == data.getEmptyWeightTime()) {
-				data.setEmptyWeightTime(DateUtil.getNewByMinute(new Date(), -50));
-			}
-			if (null == data.getHandleEnd()) {
-				data.setHandleEnd(DateUtil.getNewByMinute(new Date(), -40));
-			}
-			if (null == data.getFullWeightTime()) {
-				data.setFullWeightTime(DateUtil.getNewByMinute(new Date(), -10));
-			}
-		}
+    public void initLpr(InoutConf conf) {
+        inoutDeviceManager.initLpr(conf);
+    }
 
-		// 娣诲姞琛ュ崟鏁版嵁
-		String msg = inoutService.insertData(data);
+    /**
+     * 鑾峰彇鍑哄叆搴撹澶囬厤缃俊鎭�
+     *
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public List<InoutConf> getListInoutConf(String companyId, String deptId) {
+        return inoutManagerService.getCacheInoutConf(companyId, deptId);
+    }
 
-		// 鍒濆鍖栭獙璇佸嚭鍏ュ簱搴撳瓨
-		commonService.initInoutDepotStore(data);
-		return msg;
-	}
+    /**
+     * 鎿嶄綔閬撻椄璁惧
+     *
+     * @param param
+     * @return
+     */
+    public PageResponse<List<CheckItemData>> gateCtrl(InoutGateDto param) {
 
-	/**
-	 * 淇敼鎿嶄綔 淇敼閫昏緫璇存槑锛氫慨鏀规暟鎹渶瑕佽幏鍙栧師鏁版嵁搴撲腑鐨勬暟鎹繘琛屽姣斻��
-	 *
-	 * @param data
-	 * @return
-	 * @throws Exception
-	 */
-	@javax.transaction.Transactional(rollbackOn = Exception.class)
-	public String updateInoutData(InoutData data) throws Exception {
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "", null);
+    }
 
-		if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
-			return "绯荤粺锛氬凡缁忓垹闄ょ殑鏁版嵁涓嶆敮鎸佷慨鏀癸紒";
-		}
-		if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) {
-			return "绯荤粺锛氬紓甯哥粓姝㈢殑鏁版嵁涓嶆敮鎸佷慨鏀癸紒";
-		}
+    /**
+     * 鍑哄叆搴撴敞鍐屾暟鎹彁浜わ紝鍏ュ簱鐧昏鍜屽嚭鍏ュ簱鐧昏浣跨敤鍚屼竴涓柟娉�
+     *
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    public PageResponse<InoutData> submitRegisterInout(InoutData data) throws Exception {
 
-		// 濡傛灉娴佺▼鏈粨鏉燂紝鍙洿鏂版暟鎹�
-		if (!InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-			return inoutService.updateData(data);
-		}
+        //棣栧厛鍒ゆ柇娴佺▼涓槸鍚︽湁宸茬粡瀛樺湪鐨勮溅杈嗕俊鎭湭鎵ц瀹屾垚锛岀洿鎺ヤ粠鏁版嵁搴撲腑鏌ヨ
+        InoutParam param = new InoutParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setPlateNum(data.getPlateNum());
+        param.setIntelCard(data.getIntelCard());
+        param.setType(data.getType());
+        param.setStart(DateUtil.getNewByDay(null, -10));
 
-		// 濡傛灉鏄凡缁忓畬鎴愮殑鏁版嵁锛屽厛鑾峰彇鍒颁慨鏀圭洿鎺ョ殑鏁版嵁鏍规嵁鏁版嵁杩涜瀵规瘮
-		InoutParam param = new InoutParam();
-		param.setId(data.getId());
-		param.setCompanyId(data.getCompanyId());
-		param.setType(data.getType());
-		InoutData record = inoutService.inoutQueryById(param);
+        int num = inoutService.checkExist(param);
+        if (num > 0) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "褰撳墠杞︾墝鎴栨櫤鎱у崱鏈夋鍦ㄦ墽琛屾祦绋嬫湭缁撴潫锛岃鑱旂郴绠$悊鍛�", data);
+        }
 
-		if (null == record) {
-			return "褰撳墠淇敼鏁版嵁宸茬粡涓嶅瓨鍦紒";
-		}
 
-		// 閬垮厤鏁版嵁搴撲腑鐨勬暟鎹凡缁忚鍏朵粬浜轰慨鏀�
-		if (InoutConstant.RECORD_STATUS_DEL.equals(record.getRecordStatus())) {
-			return "绯荤粺锛氬凡缁忓垹闄ょ殑鏁版嵁涓嶆敮鎸佷慨鏀癸紒";
-		}
-		if (InoutConstant.RECORD_STATUS_ERROR.equals(record.getRecordStatus())) {
-			return "绯荤粺锛氬紓甯哥粓姝㈢殑鏁版嵁涓嶆敮鎸佷慨鏀癸紒";
-		}
+        //鑾峰彇绯荤粺鍙傛暟閰嶇疆
+        InoutSysConf inoutSysConf = inoutManagerService.getCacheInoutSysConf(data.getCompanyId(), data.getDeptId());
+        if (null == inoutSysConf) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "鎻愮ず锛氬綋鍓嶅簱鍖烘湭閰嶇疆鍑哄叆搴撴祦绋嬩俊鎭紝璇疯仈绯荤鐞嗗憳", data);
+        }
 
-		// 淇濆瓨妫�娴嬮」鐩�
-		if (InoutConstant.TYPE_IN.equals(data.getType())) {
-			// 鍏堟墽琛屽寲楠屼俊鎭繚瀛�
-			CheckUpdateResult checkResult = checkStandardManager
-					.updateCheckItems(data.getCheckId(), data.getCompanyId(),
-							data.getCheckItems());
-			if (null != checkResult) {
-				if (null == data.getWet())
-					data.setWet(checkResult.getWet());
-				if (null == data.getImpurity())
-					data.setImpurity(checkResult.getImpurity());
-			}
-		}
+        String curProgress = data.getProgress();
 
-		// 鏇存柊鏁版嵁
-		inoutService.updateData(data);
-		// this.autoCheckByUpdate(data, record);
-		return null;
-	}
+        //鑾峰彇涓嬩竴涓祦绋嬬姸鎬�
+        String nextProgress = getNextProgress(curProgress, data.getType(), inoutSysConf);
+        data.setRegisterTime(new Date());
+        data.setRegisterUser(ContextUtil.getLoginUserCName());
+        data.setProgress(nextProgress);
 
-	/**
-	 * 鍒犻櫎鎿嶄綔 鍒犻櫎鏁版嵁涓鸿蒋鍒犻櫎锛屽垹闄ゆ暟鎹悗闇�瑕佹牴鎹垹闄ゆ儏鍐佃仈鍔ㄥ簱瀛樼瓑淇℃伅
-	 *
-	 * @param data
-	 * @param selected
-	 *            鏄惁宸茬粡鏌ヨ杩囨暟鎹�
-	 * @return
-	 * @throws Exception
-	 */
-	@Transactional
-	public String delInoutData(InoutData data, boolean selected)
-			throws Exception {
+        String msg = inoutService.insertData(data);
 
-		// 閬垮厤椤甸潰缂撳瓨棣栧厛鑾峰彇鏁版嵁搴撲腑鏈�鏂扮殑褰撳墠鏁版嵁淇℃伅
-		InoutParam param = new InoutParam();
-		param.setCompanyId(data.getCompanyId());
-		param.setId(data.getId());
-		param.setMsg(" [" + ContextUtil.getLoginUserCName() + "]鎵ц鍒犻櫎锛屽師鍥狅細"
-				+ data.getRemarks());
+        if (null != msg) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    msg, data);
+        }
 
-		if (!selected) {
-			data = inoutService.inoutQueryById(param);
+        // 鎵ц闄勪欢淇℃伅
+        fileService.saveInoutFiles(data.getFiles(), data.getCompanyId(), data.getId(), curProgress);
 
-			if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
-				return "宸茬粡鍒犻櫎鐨勬暟鎹紝涓嶆敮鎸侀噸澶嶅垹闄わ紒";
-			}
-			if (InoutConstant.RECORD_STATUS_ERROR
-					.equals(data.getRecordStatus())) {
-				return "褰撳墠鏁版嵁宸茬粡琚爣璁颁负寮傚父锛屼笉鏀寔鍒犻櫎锛�";
-			}
-		}
 
-		// 鎵ц鍒犻櫎
-		param.setProgress(InoutConstant.PROGRESS_RECORD);
-		param.setRecordStatus(InoutConstant.RECORD_STATUS_DEL);
-		param.setType(data.getType());
-		inoutService.deleteData(param);
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛", data);
+    }
 
-		// 濡傛灉娴佺▼鏈粨鏉燂紝鐩存帴鍒犻櫎锛屼笉鐗垫壇鍒拌仈鍔ㄨ皟鏁�
-		if (!InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-			return null;
-		}
-		return null;
-	}
 
-	/**
-	 * 寮傚父缁堟鎿嶄綔 璁剧疆寮傚父 涓轰簡閬垮厤椤甸潰鏁版嵁缂撳瓨锛岄渶瑕侀噸鏂拌幏鍙栨渶鏂版暟鎹垽鏂�
-	 *
-	 * @param data
-	 * @return
-	 * @throws Exception
-	 */
-	@Transactional
-	public String errorInoutData(InoutData data){
+    /**
+     * 鏍规嵁鏉′欢鑾峰彇鎵︽牱鏁版嵁
+     *
+     * @param param
+     * @return
+     */
+    public PageResponse<Page<InoutCheckData>> pageSampleData(InoutCheckParam param) {
 
-		InoutParam param = new InoutParam();
-		param.setCompanyId(data.getCompanyId());
-		param.setId(data.getId());
-		param.setMsg(" [" + ContextUtil.getLoginUserCName() + "]鎵ц寮傚父缁堟锛屽師鍥狅細"
-				+ data.getRemarks());
-		data = inoutService.inoutQueryById(param);
+        if (StringUtils.isEmpty(param.getCompanyId())) {
+            param.setCompanyId(ContextUtil.getCompanyId());
+        }
+        if (StringUtils.isEmpty(param.getDeptId())) {
+            param.setDeptId(ContextUtil.subDeptId(null));
+        }
 
-		if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
-			return "宸茬粡鍒犻櫎鐨勬暟鎹紝涓嶆敮鎸佸紓甯稿鐞嗭紒";
-		}
-		if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) {
-			return "涓嶆敮鎸侀噸澶嶅紓甯稿鐞嗭紒";
-		}
-		if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-			return "娴佺▼缁撴潫鐨勬暟鎹笉鏀寔寮傚父澶勭悊锛�";
-		}
+        //鑻ユ煡璇㈡潯浠朵负宸叉墻鏍凤紝鍒欐祦绋嬬疆绌猴紱鑻ユ湭鎵︽牱锛屽垯娴佺▼涓嶅鐞嗭紝浠嶄负鎵︽牱鍖栭獙娴佺▼(CHECK)
+        if ("SAMPLE".equals(param.getSampleStatus())) {
+            param.setProgress(null);
+        }
 
-		return inoutService.inoutStop(param);
-	}
+        //鑾峰彇鎵︽牱鏁版嵁
+        Page<InoutCheckData> sampleList = inoutService.pageSampleData(param);
 
-	/**
-	 * 蹇�熺粨鏉熸搷浣� 娴佺▼娌℃湁缁撴潫鐨勫崟鎹繘琛岀粨鏉�
-	 *
-	 * @param data
-	 * @return
-	 */
-	public String completeInoutData(InoutData data) throws Exception {
-		if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
-			return "宸茬粡鍒犻櫎鐨勬暟鎹紝涓嶆敮鎸佸畬鎴愶紒";
-		}
-		if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) {
-			return "寮傚父缁堟鐨勬暟鎹紝涓嶆敮鎸佸畬鎴愶紒";
-		}
-		if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
-			return "娴佺▼宸插畬鎴愮殑鏁版嵁锛屼笉鏀寔瀹屾垚锛�";
-		}
 
-		// 浠庢柊鏌ヨ鏁版嵁
-		InoutParam param = new InoutParam();
-		param.setId(data.getId());
-		param.setCompanyId(data.getCompanyId());
-		param.setType(data.getType());
-		InoutData cuData = inoutService.inoutProgressQuery(param);
-		if (null == cuData) {
-			return "褰撳墠杞﹁締娴佺▼鐘舵�佸凡缁忓彉鍖栵紝璇峰埛鏂伴〉闈㈤噸鏂版搷浣滐紒";
-		}
-		if (!cuData.getProgress().equals(data.getProgress())) {
-			return "褰撳墠杞﹁締娴佺▼鐘舵�佸凡缁忓彉鍖栵紝璇峰埛鏂伴〉闈㈤噸鏂版搷浣滐紒";
-		}
+        if (null == sampleList.getRecords() || sampleList.getRecords().isEmpty()) {
+            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
+                    "鑾峰彇鍒版暟鎹俊鎭负绌�");
+        }
+        return new PageResponse<>(RespCodeEnum.CODE_0000, sampleList);
+    }
 
-		if (null == data.getCompleteTime()) {
-			return "璇峰~鍐欏畬鎴愭椂闂达紒锛�";
-		}
-		if (StringUtils.isEmpty(data.getDepotId())) {
-			return "璇峰~鍐欎粨搴撲俊鎭紒";
-		}
-		if (StringUtils.isEmpty(data.getCustomerId())) {
-			return "璇峰~鍐欏線鏉ュ崟浣嶄俊鎭紒";
-		}
-		if (StringUtils.isEmpty(data.getFoodYear())) {
-			return "璇峰~鍐欑伯椋熷勾浠戒俊鎭紒";
-		}
-		if (StringUtils.isEmpty(data.getFoodVariety())) {
-			return "璇峰~鍐欑伯椋熷搧绉嶄俊鎭紒";
-		}
+    @Transactional(rollbackFor = Exception.class)
+    public PageResponse<InoutCheckData> updateSampleData(InoutCheckData data) throws Exception {
 
-		if (data.getSettleWeight() <= 0) {
-			return "璇峰~鍐欑粨绠楀噣閲嶄俊鎭紒";
-		}
+        // 鑾峰彇涓氬姟鏁版嵁淇℃伅
+        InoutParam param = new InoutParam();
+        param.setCompanyId(data.getCompanyId());
+        param.setId(data.getId());
+        InoutData curData = inoutService.inoutProgressQuery(param);
+        if (null == curData) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "娌℃湁鑾峰彇鍒板叆搴撲笟鍔℃暟鎹俊鎭紝鏇存柊澶辫触", data);
+        }
+        if (InoutConstant.PROGRESS_RECORD.equals(curData.getProgress())) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
+                    "褰撳墠娴佺▼宸茬粡缁撴潫锛屼笉鏀寔淇敼");
+        }
 
-		String msg = inoutService.quickComplete(data);
+        //鎵︽牱淇℃伅
+        curData.setSampleTime(data.getSampleTime());
+        curData.setSampleType(data.getSampleType());
+        curData.setSampleUser(data.getSampleUser());
 
-		if (null == msg) {
-			data.setProgress(InoutConstant.PROGRESS_RECORD);
-			commonService.initInoutDepotStore(data);
-		}
-		return msg;
-	}
+        String msg = inoutService.updateSampleData(curData);
 
-	public void initLpr(InoutConf conf) {
-		inoutDeviceManager.initLpr(conf);
-	}
-	
-	/**
-	 * 鑾峰彇鍑哄叆搴撹澶囬厤缃俊鎭�
-	 *
-	 * @param companyId
-	 * @param deptId
-	 * @return
-	 */
-	public List<InoutConf> getListInoutConf(String companyId, String deptId) {
-		return inoutManagerService.getCacheInoutConf(companyId, deptId);
-	}
+        if (null != msg) {
+            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg);
+        }
 
-	/**
-	 * 鎿嶄綔閬撻椄璁惧
-	 * @param param
-	 * @return
-	 */
-	public PageResponse<List<CheckItemData>> gateCtrl(InoutGateDto param){
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛");
+    }
 
-		return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "", null);
-	}
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3