|
@@ -3,6 +3,7 @@ package org.jeecg.modules.storeCode.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.jeecg.common.api.vo.Result;
|
|
|
+import org.jeecg.common.exception.JeecgBootException;
|
|
|
import org.jeecg.modules.storeCode.entity.*;
|
|
|
import org.jeecg.modules.storeCode.entity.StoreCheck;
|
|
|
import org.jeecg.modules.storeCode.mapper.StoreCheckDetailsMapper;
|
|
@@ -13,6 +14,7 @@ import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
import java.io.Serializable;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
@@ -23,226 +25,250 @@ import java.util.Collection;
|
|
|
|
|
|
* @Description: 盘盈盘亏(inventory check)
|
|
|
* @Author: jeecg-boot
|
|
|
- * @Date: 2024-12-11
|
|
|
+ * @Date: 2024-12-11
|
|
|
* @Version: V1.0
|
|
|
*/
|
|
|
@Service
|
|
|
public class StoreCheckServiceImpl extends ServiceImpl<StoreCheckMapper, StoreCheck> implements IStoreCheckService {
|
|
|
|
|
|
- @Autowired
|
|
|
- private StoreCheckMapper storeCheckMapper;
|
|
|
- @Autowired
|
|
|
- private StoreCheckDetailsMapper storeCheckDetailsMapper;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private IStoreOnhandService storeOnhandService;
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public void saveMain(StoreCheck storeCheck, List<StoreCheckDetails> storeCheckDetailsList) {
|
|
|
- storeCheckMapper.insert(storeCheck);
|
|
|
- if(storeCheckDetailsList!=null && storeCheckDetailsList.size()>0) {
|
|
|
- for(StoreCheckDetails entity:storeCheckDetailsList) {
|
|
|
-
|
|
|
- entity.setId(null);
|
|
|
- entity.setHeadId(storeCheck.getId());
|
|
|
- storeCheckDetailsMapper.insert(entity);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public void updateMain(StoreCheck storeCheck,List<StoreCheckDetails> storeCheckDetailsList) {
|
|
|
- storeCheckMapper.updateById(storeCheck);
|
|
|
-
|
|
|
-
|
|
|
- storeCheckDetailsMapper.deleteByMainId(storeCheck.getId());
|
|
|
-
|
|
|
-
|
|
|
- if(storeCheckDetailsList!=null && storeCheckDetailsList.size()>0) {
|
|
|
- for(StoreCheckDetails entity:storeCheckDetailsList) {
|
|
|
-
|
|
|
- entity.setId(null);
|
|
|
- entity.setHeadId(storeCheck.getId());
|
|
|
- storeCheckDetailsMapper.insert(entity);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public void delMain(String id) {
|
|
|
- storeCheckDetailsMapper.deleteByMainId(id);
|
|
|
- storeCheckMapper.deleteById(id);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public void delBatchMain(Collection<? extends Serializable> idList) {
|
|
|
- for(Serializable id:idList) {
|
|
|
- storeCheckDetailsMapper.deleteByMainId(id.toString());
|
|
|
- storeCheckMapper.deleteById(id);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public Result<String> submitBatch(String ids) {
|
|
|
-
|
|
|
- QueryWrapper<StoreCheck> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.in("id", Arrays.asList(ids.split(",")));
|
|
|
-
|
|
|
- List<StoreCheck> list = this.list(queryWrapper);
|
|
|
- if (list.size() == 0) {
|
|
|
- return Result.error("数据为空!");
|
|
|
- }
|
|
|
+ @Autowired
|
|
|
+ private StoreCheckMapper storeCheckMapper;
|
|
|
+ @Autowired
|
|
|
+ private StoreCheckDetailsMapper storeCheckDetailsMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IStoreOnhandService storeOnhandService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void saveMain(StoreCheck storeCheck, List<StoreCheckDetails> storeCheckDetailsList) {
|
|
|
+ storeCheckMapper.insert(storeCheck);
|
|
|
+ if (storeCheckDetailsList != null && storeCheckDetailsList.size() > 0) {
|
|
|
+ for (StoreCheckDetails entity : storeCheckDetailsList) {
|
|
|
+
|
|
|
+ entity.setId(null);
|
|
|
+ entity.setHeadId(storeCheck.getId());
|
|
|
+ storeCheckDetailsMapper.insert(entity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void updateMain(StoreCheck storeCheck, List<StoreCheckDetails> storeCheckDetailsList) {
|
|
|
+ storeCheckMapper.updateById(storeCheck);
|
|
|
+
|
|
|
+
|
|
|
+ storeCheckDetailsMapper.deleteByMainId(storeCheck.getId());
|
|
|
+
|
|
|
+
|
|
|
+ if (storeCheckDetailsList != null && storeCheckDetailsList.size() > 0) {
|
|
|
+ for (StoreCheckDetails entity : storeCheckDetailsList) {
|
|
|
+
|
|
|
+ entity.setId(null);
|
|
|
+ entity.setHeadId(storeCheck.getId());
|
|
|
+ storeCheckDetailsMapper.insert(entity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void delMain(String id) {
|
|
|
+ storeCheckDetailsMapper.deleteByMainId(id);
|
|
|
+ storeCheckMapper.deleteById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void delBatchMain(Collection<? extends Serializable> idList) {
|
|
|
+ for (Serializable id : idList) {
|
|
|
+ storeCheckDetailsMapper.deleteByMainId(id.toString());
|
|
|
+ storeCheckMapper.deleteById(id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Result<String> submitBatch(String ids) {
|
|
|
+
|
|
|
+ QueryWrapper<StoreCheck> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.in("id", Arrays.asList(ids.split(",")));
|
|
|
+
|
|
|
+ List<StoreCheck> list = this.list(queryWrapper);
|
|
|
+ if (list.size() == 0) {
|
|
|
+ return Result.error("数据为空!");
|
|
|
+ }
|
|
|
+
|
|
|
+ StringBuffer sb = new StringBuffer();
|
|
|
+ for (StoreCheck o : list) {
|
|
|
+
|
|
|
+ String submit = o.getSubmit();
|
|
|
+ String code = o.getBillCode();
|
|
|
+
|
|
|
+ if (submit != null && submit != "" && submit.equals("1")) {
|
|
|
+ sb.append("单据编码" + code).append("已提交,请勿再次提交;");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(sb.toString())) {
|
|
|
+
|
|
|
+ return Result.error(sb.toString());
|
|
|
+ }
|
|
|
+ try {
|
|
|
+
|
|
|
+
|
|
|
+ String result = actionIn(list, true);
|
|
|
+
|
|
|
+ if ("true".equals(result)) {
|
|
|
+
|
|
|
+ StoreCheck ent = new StoreCheck();
|
|
|
+ ent.setSubmit("1");
|
|
|
+ this.update(ent, queryWrapper);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ return Result.error(result);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+
|
|
|
+ return Result.error(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return Result.OK("提交成功!");
|
|
|
|
|
|
- StringBuffer sb = new StringBuffer();
|
|
|
- for (StoreCheck o : list) {
|
|
|
-
|
|
|
- String submit = o.getSubmit();
|
|
|
- String code = o.getBillCode();
|
|
|
-
|
|
|
- if (submit != null && submit != "" && submit.equals("1")) {
|
|
|
- sb.append("单据编码" + code).append("已提交,请勿再次提交;");
|
|
|
- continue;
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtils.isNotBlank(sb.toString())) {
|
|
|
|
|
|
- return Result.error(sb.toString());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- String result = actionIn(list,true);
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Result<String> returnSubmitBatch(String ids) {
|
|
|
|
|
|
- if ("true".equals(result)) {
|
|
|
+ QueryWrapper<StoreCheck> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.in("id", Arrays.asList(ids.split(",")));
|
|
|
|
|
|
- StoreCheck ent = new StoreCheck();
|
|
|
- ent.setSubmit("1");
|
|
|
- this.update(ent, queryWrapper);
|
|
|
- } else {
|
|
|
+ List<StoreCheck> list = this.list(queryWrapper);
|
|
|
+ if (list.size() == 0) {
|
|
|
+ return Result.error("数据为空!");
|
|
|
+ }
|
|
|
|
|
|
- return Result.error(result);
|
|
|
- }
|
|
|
+ StringBuffer sb = new StringBuffer();
|
|
|
+ List<String> idList = new ArrayList<>();
|
|
|
|
|
|
- return Result.OK("提交成功!");
|
|
|
+ for (StoreCheck o : list) {
|
|
|
|
|
|
- }
|
|
|
+
|
|
|
+ String submit = o.getSubmit();
|
|
|
+ String code = o.getBillCode();
|
|
|
+ idList.add(code);
|
|
|
|
|
|
+ if (submit == null || submit == "" || submit.equals("0")) {
|
|
|
+ sb.append("单号" + code).append("已取消提交,请勿再次取消提交;");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public Result<String> returnSubmitBatch(String ids) {
|
|
|
+ if (StringUtils.isNotBlank(sb.toString())) {
|
|
|
|
|
|
- QueryWrapper<StoreCheck> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.in("id", Arrays.asList(ids.split(",")));
|
|
|
+ return Result.error(sb.toString());
|
|
|
+ }
|
|
|
|
|
|
- List<StoreCheck> list = this.list(queryWrapper);
|
|
|
- if (list.size() == 0) {
|
|
|
- return Result.error("数据为空!");
|
|
|
- }
|
|
|
+ try {
|
|
|
|
|
|
- StringBuffer sb = new StringBuffer();
|
|
|
- List<String> idList = new ArrayList<>();
|
|
|
+
|
|
|
+ String result = actionIn(list, false);
|
|
|
|
|
|
- for (StoreCheck o : list) {
|
|
|
+ if ("true".equals(result)) {
|
|
|
|
|
|
-
|
|
|
- String submit = o.getSubmit();
|
|
|
- String code = o.getBillCode();
|
|
|
- idList.add(code);
|
|
|
+ StoreCheck ent = new StoreCheck();
|
|
|
+ ent.setSubmit("0");
|
|
|
+ this.update(ent, queryWrapper);
|
|
|
+ } else {
|
|
|
|
|
|
- if (submit == null || submit == "" || submit.equals("0")) {
|
|
|
- sb.append("单号" + code).append("已取消提交,请勿再次取消提交;");
|
|
|
- continue;
|
|
|
- }
|
|
|
- }
|
|
|
+ return Result.error(result);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ return Result.error(e.getMessage());
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtils.isNotBlank(sb.toString())) {
|
|
|
+ return Result.OK("取消提交成功!");
|
|
|
+ }
|
|
|
|
|
|
- return Result.error(sb.toString());
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
- String result = actionIn(list,false);
|
|
|
+
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String actionIn(List<StoreCheck> list, boolean type) {
|
|
|
|
|
|
- if ("true".equals(result)) {
|
|
|
+ try {
|
|
|
|
|
|
- StoreCheck ent = new StoreCheck();
|
|
|
- ent.setSubmit("0");
|
|
|
- this.update(ent, queryWrapper);
|
|
|
- } else {
|
|
|
+ for (StoreCheck o : list) {
|
|
|
|
|
|
- return Result.error(result);
|
|
|
- }
|
|
|
+ String id = o.getId();
|
|
|
+ String code = o.getBillCode();
|
|
|
+ List<StoreCheckDetails> entList = storeCheckDetailsMapper.selectByMainId(id);
|
|
|
|
|
|
- return Result.OK("取消提交成功!");
|
|
|
- }
|
|
|
+ for (StoreCheckDetails ent : entList) {
|
|
|
|
|
|
+
|
|
|
+ String sourceId = ent.getSourceId();
|
|
|
+
|
|
|
+ BigDecimal inventoryQuantity = ent.getInventoryQuantity();
|
|
|
+
|
|
|
+ BigDecimal countedQuantity = ent.getCountedQuantity();
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public String actionIn(List<StoreCheck> list,boolean type) {
|
|
|
+ BigDecimal inventory = countedQuantity.subtract(inventoryQuantity);
|
|
|
|
|
|
- try {
|
|
|
|
|
|
- for (StoreCheck o : list) {
|
|
|
+ String productCode = ent.getProductCode();
|
|
|
|
|
|
- String id = o.getId();
|
|
|
- String code = o.getBillCode();
|
|
|
- List<StoreCheckDetails> entList = storeCheckDetailsMapper.selectByMainId(id);
|
|
|
+ if (StringUtils.isBlank(sourceId)) {
|
|
|
+ throw new JeecgBootException(code + "产品:" + productCode + "库存选择不能为空!");
|
|
|
+ }
|
|
|
+ if (inventoryQuantity == null || inventoryQuantity.equals(BigDecimal.ZERO)) {
|
|
|
+ throw new JeecgBootException(code + "产品:" + productCode + "库存数量不能为空或为0!");
|
|
|
+ }
|
|
|
+ if (countedQuantity == null || countedQuantity.equals(BigDecimal.ZERO)) {
|
|
|
+ throw new JeecgBootException(code + "产品:" + productCode + "盘点数量不能为空或为0!");
|
|
|
+ }
|
|
|
|
|
|
- for (StoreCheckDetails ent : entList) {
|
|
|
|
|
|
-
|
|
|
- String sourceId = ent.getSourceId();
|
|
|
-
|
|
|
- BigDecimal inventoryQuantity = ent.getInventoryQuantity();
|
|
|
-
|
|
|
- BigDecimal countedQuantity = ent.getCountedQuantity();
|
|
|
+
|
|
|
+ if (type) {
|
|
|
|
|
|
- BigDecimal inventory = countedQuantity.subtract(inventoryQuantity);
|
|
|
+ if (inventory.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
|
-
|
|
|
- if (type) {
|
|
|
+
|
|
|
+ storeOnhandService.addStoreById(inventory, sourceId, "盘盈盘亏(正数提交)", code);
|
|
|
+ } else if (inventory.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
|
|
|
- if(inventory.compareTo(BigDecimal.ZERO) > 0){
|
|
|
+
|
|
|
+ storeOnhandService.deleteStoreById(inventory.abs(), sourceId, "盘盈盘亏(负数提交)", code);
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
- storeOnhandService.addStoreById(inventory, sourceId, "盘盈盘亏(正数提交)", code);
|
|
|
- }else if(inventory.compareTo(BigDecimal.ZERO) < 0){
|
|
|
+
|
|
|
+ } else {
|
|
|
|
|
|
-
|
|
|
- storeOnhandService.deleteStoreById(inventory.abs(), sourceId, "盘盈盘亏(负数提交)", code);
|
|
|
- }
|
|
|
+ if (inventory.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
|
-
|
|
|
- } else {
|
|
|
+
|
|
|
+ storeOnhandService.deleteStoreById(inventory, sourceId, "盘盈盘亏(正数取消提交)", code);
|
|
|
+ } else if (inventory.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
|
|
|
- if(inventory.compareTo(BigDecimal.ZERO) > 0){
|
|
|
+
|
|
|
+ storeOnhandService.addStoreById(inventory.abs(), sourceId, "盘盈盘亏(负数取消提交)", code);
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
- storeOnhandService.deleteStoreById(inventory, sourceId, "盘盈盘亏(正数取消提交)", code);
|
|
|
- }else if(inventory.compareTo(BigDecimal.ZERO) < 0){
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
- storeOnhandService.addStoreById(inventory.abs(), sourceId, "盘盈盘亏(负数取消提交)", code);
|
|
|
- }
|
|
|
+ } catch (Exception e) {
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ return "true";
|
|
|
+ }
|
|
|
|
|
|
- } catch (Exception e) {
|
|
|
- return e.getMessage();
|
|
|
- }
|
|
|
-
|
|
|
- return "true";
|
|
|
- }
|
|
|
-
|
|
|
}
|