|
@@ -0,0 +1,112 @@
|
|
|
+package com.fjhx.service.check.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.base.Condition;
|
|
|
+import com.fjhx.entity.check.CheckDetails;
|
|
|
+import com.fjhx.entity.check.CheckInfo;
|
|
|
+import com.fjhx.entity.warehouse.Warehouse;
|
|
|
+import com.fjhx.mapper.check.CheckInfoMapper;
|
|
|
+import com.fjhx.params.check.CheckInfoVo;
|
|
|
+import com.fjhx.service.check.CheckDetailsService;
|
|
|
+import com.fjhx.service.check.CheckInfoService;
|
|
|
+import com.fjhx.uitl.code.CodeEnum;
|
|
|
+import com.fjhx.utils.Assert;
|
|
|
+import com.fjhx.utils.UserClientUtil;
|
|
|
+import com.fjhx.utils.wrapperUtil.IWrapper;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author ${author}
|
|
|
+ * @since 2022-12-23
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class CheckInfoServiceImpl extends ServiceImpl<CheckInfoMapper, CheckInfo> implements CheckInfoService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CheckDetailsService checkDetailsService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<Map<String, Object>> getPage(Condition condition) {
|
|
|
+
|
|
|
+ IWrapper<CheckInfo> wrapper = IWrapper.getWrapper(condition);
|
|
|
+ wrapper.eq("w", Warehouse::getType, condition.get("warehouseType"))
|
|
|
+ .eq("ci", CheckInfo::getResultType)
|
|
|
+ .eq("ci", CheckInfo::getCode)
|
|
|
+ .like("w", Warehouse::getName, condition.get("warehouseName"))
|
|
|
+ .eq("ci", CheckInfo::getCreateUser)
|
|
|
+ .periodTime("ci", CheckInfo::getCreateTime);
|
|
|
+
|
|
|
+ Page<Map<String, Object>> page = baseMapper.getPage(condition.getPage(), wrapper);
|
|
|
+
|
|
|
+ List<Map<String, Object>> records = page.getRecords();
|
|
|
+ UserClientUtil.setUserName(records, "createUser", "createUserName");
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void add(CheckInfoVo checkInfoVo) {
|
|
|
+ Long id = IdWorker.getId();
|
|
|
+
|
|
|
+ Long warehouseId = checkInfoVo.getWarehouseId();
|
|
|
+ Assert.notEmpty(warehouseId, "仓库id不能为空");
|
|
|
+
|
|
|
+ int checkResultType = 0;
|
|
|
+
|
|
|
+ List<CheckDetails> checkDetailsList = checkInfoVo.getCheckDetailsList();
|
|
|
+
|
|
|
+ for (CheckDetails checkDetails : checkDetailsList) {
|
|
|
+ BigDecimal checkQuantity = checkDetails.getCheckQuantity();
|
|
|
+ BigDecimal inventoryQuantity = checkDetails.getInventoryQuantity();
|
|
|
+
|
|
|
+ Assert.notEmpty(checkDetails.getProductId(), "产品id不能为空");
|
|
|
+ Assert.notEmpty(checkQuantity, "盘点数量不能为空");
|
|
|
+ Assert.notEmpty(inventoryQuantity, "现有库存不能为空");
|
|
|
+
|
|
|
+ checkDetails.setCheckInfoId(id);
|
|
|
+
|
|
|
+ int compareTo = inventoryQuantity.compareTo(checkQuantity);
|
|
|
+ if (compareTo > 0) {
|
|
|
+ checkDetails.setResultType(2);
|
|
|
+ checkResultType = 1;
|
|
|
+ } else if (compareTo < 0) {
|
|
|
+ checkDetails.setResultType(1);
|
|
|
+ checkResultType = 1;
|
|
|
+ } else {
|
|
|
+ checkDetails.setResultType(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ synchronized (this) {
|
|
|
+ checkInfoVo.setId(id);
|
|
|
+ checkInfoVo.setResultType(checkResultType);
|
|
|
+ checkInfoVo.setCode(CodeEnum.CHECK_CODE.getCode());
|
|
|
+ save(checkInfoVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ checkDetailsService.saveBatch(checkDetailsList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void edit(CheckInfoVo checkInfoVo) {
|
|
|
+ updateById(checkInfoVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(CheckInfoVo checkInfoVo) {
|
|
|
+ removeById(checkInfoVo.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+}
|