1.增加结存表相关数据处理

master
董哲奇 2 weeks ago
parent 98eacfc014
commit 0eb62da6f8

@ -74,6 +74,11 @@ public class DmYlInfo {
return StrUtil.isNotEmpty(this.) && this..equals();
}
public String (){
return DateUtil.parse(this.).toString("yyyy/MM");
}
public boolean (DmYdjh ydjh){
if (使>0){
return false;

@ -0,0 +1,45 @@
package com.dsic.gj_erp.bean.zyjh;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
*
*/
@Getter
@Setter
@TableName("dm_yljc")
public class DmYlJc {
@TableId(type= IdType.INPUT)
private String zq;
private BigDecimal outWeight;
private BigDecimal outNum;
private BigDecimal inWeight;
private BigDecimal inNum;
public static DmYlJc ofIn(DmYlInfo ylInfo){
DmYlJc dmYlJc = new DmYlJc();
dmYlJc.setZq(ylInfo.());
dmYlJc.setInNum(new BigDecimal(1));
dmYlJc.setInWeight(new BigDecimal(ylInfo.get()));
return dmYlJc;
}
public static DmYlJc ofOut(DmYlInfo ylInfo){
DmYlJc dmYlJc = new DmYlJc();
dmYlJc.setZq(ylInfo.());
dmYlJc.setInNum(new BigDecimal(1));
dmYlJc.setInWeight(new BigDecimal(ylInfo.get()));
return dmYlJc;
}
}

@ -5,16 +5,17 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.annotation.Authorization;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmYdjh;
import com.dsic.gj_erp.bean.zyjh.DmYlInOut;
import com.dsic.gj_erp.bean.zyjh.DmYlInfo;
import com.dsic.gj_erp.bean.zyjh.DmYlJc;
import com.dsic.gj_erp.controller.zyjh.dto.YlSlDto;
import com.dsic.gj_erp.exception.ServiceException;
import com.dsic.gj_erp.service.jhgk.DmYdjhService;
import com.dsic.gj_erp.service.zyjh.DmYlInOutService;
import com.dsic.gj_erp.service.zyjh.DmYlInfoService;
import com.dsic.gj_erp.service.zyjh.DmYljcService;
import lombok.AllArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@ -35,8 +36,10 @@ public class YlController {
private final DmYlInfoService ylInfoService;
private final DmYdjhService ydjhService;
private final DmYlInOutService dmYlInOutService;
private final DmYljcService dmYljcService;
@PostMapping("list")
@SuppressWarnings("unchecked")
public ResultBean<?> list(@RequestBody YlSlDto dto){
return new ResultBean<>(
ylInfoService.list(Wrappers.<DmYlInfo>lambdaQuery()
@ -57,17 +60,30 @@ public class YlController {
@AuthFunction
@PostMapping("rk")
@Transactional(rollbackFor = Exception.class)
public ResultBean<?> rk(@RequestBody List<DmYlInfo> list, HttpServletRequest request){
public ResultBean<?> rk(@RequestBody List<DmYlInfo> list, HttpServletRequest request) throws InterruptedException {
String userCode=(String) request.getAttribute("yhdm");
String =DateUtil.date().toString("yyyy/MM/dd");
List<DmYlInOut> ylInOutList=new ArrayList<>();
List<DmYlJc> jcList=new ArrayList<>();
List<DmYlInfo> updateList=list.stream().map(item->{
//入库流水
DmYlInOut dmYlInOut = DmYlInOut.(item,userCode);
ylInOutList.add(dmYlInOut);
//结存
DmYlJc jc=DmYlJc.ofIn(item);
jcList.add(jc);
//余料入库修正入库标识等信息
return DmYlInfo.(item,userCode,);
}).collect(Collectors.toList());
ylInfoService.updateBatchById(updateList);
dmYlInOutService.saveBatch(ylInOutList);
ylInfoService.updateBatchById(updateList);//修正入库数据状态
dmYlInOutService.saveBatch(ylInOutList);//记录入库流水
dmYljcService.saveIn(jcList);//记录结存
return new ResultBean<>();
}
@ -93,7 +109,11 @@ public class YlController {
*/
@PostMapping("rollback")
@Transactional(rollbackFor = Exception.class)
public ResultBean<?> rollback(@RequestBody List<DmYlInfo> list){
public ResultBean<?> rollback(@RequestBody List<DmYlInfo> list) throws InterruptedException {
ArrayList<DmYlInOut> = new ArrayList<>();//待删除的出库流水
List<DmYlJc> jcList=new ArrayList<>();//结存数据
list.stream()
.filter(item->item.get使()<=2)
.forEach(item->{
@ -115,8 +135,23 @@ public class YlController {
}
//退回余料库存信息
item.退();
List<DmYlInOut> inOutList = dmYlInOutService.list(Wrappers.<DmYlInOut>lambdaQuery()
.eq(DmYlInOut::get, item.get())
.eq(DmYlInOut::get, item.get())
.eq(DmYlInOut::get, item.get())
);
.addAll(inOutList);
//结存数据
DmYlJc jc = DmYlJc.ofIn(item);
jcList.add(jc);
});
ylInfoService.updateBatchById(list);
dmYlInOutService.removeByIds(.stream().map(DmYlInOut::getId).collect(Collectors.toList()));
dmYljcService.saveOut(jcList);
return new ResultBean<>();
}
@ -126,12 +161,14 @@ public class YlController {
@AuthFunction
@PostMapping("print")
@Transactional(rollbackFor = Exception.class)
public ResultBean<?> print(@RequestBody List<DmYlInfo> list,HttpServletRequest request){
public ResultBean<?> print(@RequestBody List<DmYlInfo> list,HttpServletRequest request) throws InterruptedException {
String userCode=(String) request.getAttribute("yhdm");
String =DateUtil.date().toString("yyyy/MM/dd");
ArrayList<DmYdjh> updateList = new ArrayList<>();
ArrayList<DmYlInOut> = new ArrayList<>();
List<DmYlJc> jcList=new ArrayList<>();//结存数据
list.forEach(item->{
if (StrUtil.isAllNotEmpty(item.get使(),item.get使())){
String date = DateUtil.date().toString("yyyy/MM/dd");
@ -146,6 +183,8 @@ public class YlController {
String str=StrUtil.format("使用船号:{},使用图号{}错误,请核对修正后再打印", item.get使(), item.get使());
throw new ServiceException(99999,str);
}
//作业计划修正使用余料属性状态
List<DmYdjh> collect = ydjhList.stream().map(it -> {
//防止手动编辑错误时的校验
if (it.使()){
@ -160,12 +199,17 @@ public class YlController {
DmYlInOut = DmYlInOut.(item, userCode, );
.add();
//结存数据
DmYlJc jc=DmYlJc.ofOut(item);
jcList.add(jc);
}
});
ydjhService.updateBatchById(updateList);
ylInfoService.updateBatchById(list);
ydjhService.updateBatchById(updateList);//修正作业计划使用余料信息
ylInfoService.updateBatchById(list);//修正出库数据状态
dmYlInOutService.saveBatch();
dmYljcService.saveOut(jcList);//修正结存出库数据状态
return new ResultBean<>();
}

@ -0,0 +1,16 @@
package com.dsic.gj_erp.mapper.zyjh;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.zyjh.DmYlJc;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;
@Mapper
public interface DmYljcMapper extends BaseMapper<DmYlJc> {
@Update("update set in_weight=in_weight+#{inWeight} ,in_num=in_num+#{inNum} where zq=#{zq}")
void updateIn(DmYlJc dmYlJc);
@Update("update set out_weight=out_weight+#{outWeight} ,out_num=out_num+#{outNum} where zq=#{zq}")
void updateOut(DmYlJc dmYlJc);
}

@ -0,0 +1,83 @@
package com.dsic.gj_erp.service.zyjh;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.zyjh.DmYlJc;
import com.dsic.gj_erp.exception.ServiceException;
import com.dsic.gj_erp.mapper.zyjh.DmYljcMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.concurrent.Semaphore;
@Slf4j
@Service
@RequiredArgsConstructor
public class DmYljcService extends ServiceImpl<DmYljcMapper, DmYlJc> {
private final RedisTemplate<String,Object> redisTemplate;
private static final String YLJC_KEY="YLJC";
private static final Semaphore semaphore = new Semaphore(1);
@Transactional(rollbackFor = Exception.class)
public void saveIn(List<DmYlJc> list) throws InterruptedException {
semaphore.acquire();
try {
for (DmYlJc item : list) {
//使用redis加速
Boolean flag = redisTemplate.opsForHash().hasKey(YLJC_KEY, item.getZq());
if (flag){
baseMapper.updateIn(item);
continue;
}
insert(item);
}
}catch (Exception e){
semaphore.release();
log.error("结存表处理失败: ", e);
throw new ServiceException(11001,"结存表处理失败");
}
}
@Transactional(rollbackFor = Exception.class)
public void saveOut(List<DmYlJc> list) throws InterruptedException {
semaphore.acquire();
try {
for (DmYlJc item : list) {
//使用redis加速
Boolean flag = redisTemplate.opsForHash().hasKey(YLJC_KEY, item.getZq());
if (flag){
baseMapper.updateOut(item);
continue;
}
insert(item);
}
}catch (Exception e){
semaphore.release();
log.error("结存表处理失败: ", e);
throw new ServiceException(11001,"结存表处理失败");
}
}
public void insert(DmYlJc item){
try {
redisTemplate.opsForHash().put(YLJC_KEY,item.getZq(),1);
baseMapper.insert(item);
}catch (Exception e){
log.error("初始化结存表失败: ", e);
try {
redisTemplate.opsForHash().delete(YLJC_KEY,item.getZq());
}catch (Exception e1){
log.error("初始化结存表失败: ", e1);
}
throw new ServiceException(11000,"初始化结存表失败");
}
}
}
Loading…
Cancel
Save