Merge remote-tracking branch 'origin/master'

master
xhj 8 hours ago
commit bdd3b67f9d

@ -70,12 +70,21 @@ public class DmYlInfo {
private Integer 使;//0:未入库;1:未使用;2:已匹配;3:已打印;4:已切割
public boolean (){
return this.使==UseStatus..ordinal();
}
public boolean (String ){
return StrUtil.isNotEmpty(this.) && this..equals();
}
public String (){
return DateUtil.parse(this.).toString("yyyy/MM");
}
public boolean (DmYdjh ydjh){
if (使>0){
if (使>UseStatus.使.ordinal()){
return false;
}
if (ydjh.getWpxh()==null||ydjh.getWpgg()==null){
@ -166,11 +175,13 @@ public class DmYlInfo {
dmYlInfo.=bchxylp.getWpxh();
dmYlInfo.=ydjh.getWpgg();
dmYlInfo.= DateUtil.date().toString("yyyy/MM/dd");
dmYlInfo.使=UseStatus..ordinal();
dmYlInfo.使=UseStatus.使.ordinal();
return dmYlInfo;
}
public enum UseStatus{
,使,,,
//暂时取消库存管理
//未入库,
使,,,
}
}

@ -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;
}
}

@ -11,10 +11,7 @@ import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@ -31,6 +28,13 @@ public class ApiController {
private SyuserMapper syuserMapper;
@Autowired
SYService syService;
//为plm接口提供编号数据获取功能
@GetMapping("f_getpjh")
public ResultBean<?> f_getpjh(String zxt,String jg,String bmm){
return new ResultBean<>(syService.f_getpjh(zxt, jg, bmm));
}
@RequestMapping(value = "/login")
public ResultBean login(@RequestBody @Validated LoginBean loginBean,HttpServletRequest request) throws Exception {

@ -96,7 +96,7 @@ public class DmYdjhController {
.eq(StrUtil.isNotEmpty(map.get("dcch")),"dc_ch",map.get("dcch"))
.eq(StrUtil.isNotEmpty(map.get("dcpl")),"dc_pl",map.get("dcpl"))
.eq("lx","B")
.ne("zt","-1")
.ne("zt","-1").ne("zt","99")
// .and(wp->wp.ne("zt", "-1").or().ne("zt","99"))
.orderByAsc("jssj,dc_ch,dc_pl,zl,lqlb")

@ -4,6 +4,7 @@ package com.dsic.gj_erp.controller.txzz.jhgl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.sy.SyDictItem;
@ -145,7 +146,7 @@ public class DmMateriaController {
*/
@ApiOperation("物品添加")
@PostMapping("/add")
@Authorization
@AuthFunction
public ResultBean<Integer> addMateria(@RequestBody DmMateria[] dmMaterias,HttpServletRequest req){
return this.dmMateriaService.addMateria(dmMaterias,req);
}

@ -2,6 +2,7 @@ package com.dsic.gj_erp.controller.txzz.jhgl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.txzz.jhgl.TpbhPlan;
@ -55,7 +56,7 @@ public class TpbhPlanController {
@ApiOperation("托盘需求计划提交")
@PostMapping("submit")
@Authorization
@AuthFunction
public ResultBean<?> submit(@RequestBody List<TpbhPlan> list, HttpServletRequest request){
String userName=(String) request.getAttribute("username");
String userCode=(String) request.getAttribute("yhdm");
@ -82,7 +83,7 @@ public class TpbhPlanController {
*
*/
@PostMapping("sh")
@Authorization
@AuthFunction
public ResultBean<?> sh(@RequestBody List<TpbhPlan> list,HttpServletRequest request){
String userName=(String) request.getAttribute("username");
String userCode=(String) request.getAttribute("yhdm");
@ -100,7 +101,7 @@ public class TpbhPlanController {
*
*/
@PostMapping("sp")
@Authorization
@AuthFunction
public ResultBean<?> sp(@RequestBody List<TpbhPlan> list,HttpServletRequest request){
String userName=(String) request.getAttribute("username");
String userCode=(String) request.getAttribute("yhdm");

@ -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,16 +36,19 @@ 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()
.eq(ObjectUtil.isNotEmpty(dto.getStatus()),DmYlInfo::get使,dto.getStatus())
.eq(DmYlInfo::get,dto.getDcCh())
.eq(DmYlInfo::get使,dto.getStatus())
.eq(StrUtil.isNotEmpty(dto.getDcPl()),DmYlInfo::get,dto.getDcPl())
.eq(StrUtil.isNotEmpty(dto.getTzbh()),DmYlInfo::get,dto.getTzbh())
.like(dto.isGd()&&dto.getStatus()==2,DmYlInfo::get使,"N8GX")
//用于光电查询
.like(dto.isGd(),DmYlInfo::get使,"N8GX")
//查询结果使用最小匹配原则为按规格匹配上料提供匹配顺序
.orderByAsc(DmYlInfo::get,DmYlInfo::get)
)
@ -57,17 +61,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 +110,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 +136,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,14 +162,16 @@ 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使())){
if (StrUtil.isAllNotEmpty(item.get使(),item.get使())&&item.()){
String date = DateUtil.date().toString("yyyy/MM/dd");
item.set使(date);
item.set使(DmYlInfo.UseStatus..ordinal());//已打印
@ -146,6 +184,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 +200,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,80 @@
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;
//结存redis key
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);
}
}finally {
semaphore.release();
}
}
@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);
}
}finally {
semaphore.release();
}
}
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,"初始化结存表失败");
}
}
}

@ -1002,7 +1002,7 @@ where dc_ch=#{dcch} and dc_pl =#{dcpl}
THEN 1 ELSE 0 END) AS qg_count4kw
FROM
dm_ydjh
where 1=1 AND lx='B' and ( isnull(dm_ydjh.zt,'') != '-1' or isnull(dm_ydjh.zt,'') !='99' )
where 1=1 AND lx='B' and ( isnull(dm_ydjh.zt,'') != '-1' and isnull(dm_ydjh.zt,'') !='99' )
and dm_ydjh.kw!='17'
<if test=" dcCh!=null and dcCh!=''">
and dm_ydjh.dc_ch=#{dcCh}

Loading…
Cancel
Save