rev:出库
This commit is contained in:
@@ -82,7 +82,6 @@ public class PdaIOService {
|
|||||||
//创建单据分配货位
|
//创建单据分配货位
|
||||||
StIvtIostorinv ivtIostorinv = ioService.createPadIvtAndoutDispense(pdaFormOutMst);
|
StIvtIostorinv ivtIostorinv = ioService.createPadIvtAndoutDispense(pdaFormOutMst);
|
||||||
StIvtIostorinv byId = iStIvtIostorinvService.getById(ivtIostorinv.getId());
|
StIvtIostorinv byId = iStIvtIostorinvService.getById(ivtIostorinv.getId());
|
||||||
|
|
||||||
this.pdaTaskOpen(byId);
|
this.pdaTaskOpen(byId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,14 +166,31 @@ public class PdaIOService {
|
|||||||
String now = DateUtil.now();
|
String now = DateUtil.now();
|
||||||
String nickName = SecurityUtils.getCurrentNickName();
|
String nickName = SecurityUtils.getCurrentNickName();
|
||||||
for (PdaFormOutDtl child : pdaFormOutMst.getChildren()) {
|
for (PdaFormOutDtl child : pdaFormOutMst.getChildren()) {
|
||||||
BigDecimal planQty = child.getPlan_qty();
|
BigDecimal assignQty = child.getAssign_qty();
|
||||||
BigDecimal now_assign_qty = child.getNow_assign_qty();
|
BigDecimal now_assign_qty = child.getNow_assign_qty();
|
||||||
BigDecimal qty = child.getQty();
|
BigDecimal qty = child.getQty();
|
||||||
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
||||||
.set("qty",qty.subtract(now_assign_qty))
|
.set("qty",qty.subtract(now_assign_qty))
|
||||||
.set("assign_qty",planQty.subtract(now_assign_qty))
|
.set("assign_qty",assignQty.add(now_assign_qty))
|
||||||
.set("update_time",now)
|
.set("update_time",now)
|
||||||
.set("update_name",nickName));
|
.set("update_name",nickName)
|
||||||
|
.eq("id",child.getId()));
|
||||||
|
}
|
||||||
|
String sourceFormid = pdaFormOutMst.getId();
|
||||||
|
List<PmFormData> byParentId = iPmFormDataService.getByParentId(sourceFormid);
|
||||||
|
long count = byParentId.stream().filter(pmFormData -> pmFormData.getQty().intValue() > 0).count();
|
||||||
|
if (count == 0){
|
||||||
|
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
||||||
|
.set("status",StatusEnum.FORM_STATUS.code("完成"))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
|
.eq("id",sourceFormid));
|
||||||
|
}else {
|
||||||
|
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
||||||
|
.set("status",StatusEnum.FORM_STATUS.code("执行中"))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
|
.eq("id",sourceFormid));
|
||||||
}
|
}
|
||||||
return mst;
|
return mst;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package org.nl.wms.pm_manage.form_data.service.dao;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class FormDataIdCode {
|
||||||
|
private String id;
|
||||||
|
private String code;
|
||||||
|
}
|
||||||
@@ -38,5 +38,6 @@ public interface PmFormDataMapper extends BaseMapper<PmFormData> {
|
|||||||
ReceiveBillData queryReceiveBill(@Param("bar_code") String bar_code);
|
ReceiveBillData queryReceiveBill(@Param("bar_code") String bar_code);
|
||||||
|
|
||||||
Set<String> existFormDataList();
|
Set<String> existFormDataList();
|
||||||
|
Set<String> existFormCodeDataList();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -198,7 +198,12 @@
|
|||||||
WHERE d.bar_code= #{bar_code}
|
WHERE d.bar_code= #{bar_code}
|
||||||
</select>
|
</select>
|
||||||
<select id="existFormDataList" resultType="java.lang.String">
|
<select id="existFormDataList" resultType="java.lang.String">
|
||||||
SELECT ID
|
SELECT id
|
||||||
|
FROM pm_form_data
|
||||||
|
WHERE DATE(create_time) = CURDATE()
|
||||||
|
</select>
|
||||||
|
<select id="existFormCodeDataList" resultType="java.lang.String">
|
||||||
|
SELECT code
|
||||||
FROM pm_form_data
|
FROM pm_form_data
|
||||||
WHERE DATE(create_time) = CURDATE()
|
WHERE DATE(create_time) = CURDATE()
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
|||||||
import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper;
|
import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper;
|
||||||
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
|
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
|
||||||
import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto;
|
import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto;
|
||||||
|
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||||
|
import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty;
|
||||||
import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService;
|
import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService;
|
||||||
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
|
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
@@ -31,7 +33,9 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,6 +64,8 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
private IBmFormStrucService formStrucService;
|
private IBmFormStrucService formStrucService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISyncFormMappingService iSyncFormMappingService;
|
private ISyncFormMappingService iSyncFormMappingService;
|
||||||
|
@Autowired
|
||||||
|
private IStIvtStructattrService iStIvtStructattrService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -208,20 +214,32 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
if (CollectionUtils.isEmpty(pmFormDataDtos)){
|
if (CollectionUtils.isEmpty(pmFormDataDtos)){
|
||||||
throw new BadRequestException(code+"单据编码不存在或已经完成入库");
|
throw new BadRequestException(code+"单据编码不存在或已经完成入库");
|
||||||
}
|
}
|
||||||
List<String> parents = pmFormDataDtos.stream().map(PmFormDataDto::getId).collect(Collectors.toList());
|
PmFormDataDto pmFormDataDto = pmFormDataDtos.get(0);
|
||||||
List<PmFormDataDto> childs = this.baseMapper.selectChilds(parents);
|
List<PmFormDataDto> childs = this.baseMapper.selectChilds(ListOf.of(pmFormDataDto.getId()));
|
||||||
if (!CollectionUtils.isEmpty(childs)){
|
if (CollectionUtils.isEmpty(childs)){
|
||||||
Map<String, List<PmFormDataDto>> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id));
|
throw new BadRequestException(code+"单据明细数据为空");
|
||||||
for (PmFormDataDto dataDto : pmFormDataDtos) {
|
}
|
||||||
List<PmFormDataDto> children = childMap.get(dataDto.getId());
|
List<String> collect = childs.stream().map(PmFormDataDto::getMaterial_id).collect(Collectors.toList());
|
||||||
for (PmFormDataDto child : children) {
|
//TODO:指定仓库
|
||||||
|
List<StructAssignQty> structMaterials = iStIvtStructattrService.getStructIvtAssign(collect, "FStockId");
|
||||||
|
Map<String, List<StructAssignQty>> materialMap = structMaterials.stream().collect(Collectors.groupingBy(StructAssignQty::getMaterial_id));
|
||||||
|
|
||||||
|
for (PmFormDataDto child : childs) {
|
||||||
String productArea = child.getForm_data().getString("product_area");
|
String productArea = child.getForm_data().getString("product_area");
|
||||||
child.setProduct_area(productArea);
|
child.setProduct_area(productArea);
|
||||||
}
|
List<StructAssignQty> maps = materialMap.get(child.getMaterial_id());
|
||||||
dataDto.setChildren(children);
|
if (CollectionUtils.isEmpty(maps)){
|
||||||
|
child.setSto_qty(new BigDecimal(0));
|
||||||
|
child.setPcsn("");
|
||||||
|
}else {
|
||||||
|
maps.sort(Comparator.comparing(StructAssignQty::getSto_qty));
|
||||||
|
StructAssignQty max = maps.get(0);
|
||||||
|
child.setSto_qty(max.getSto_qty());
|
||||||
|
child.setPcsn(max.getPcsn());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pmFormDataDtos.get(0);
|
pmFormDataDto.setChildren(childs);
|
||||||
|
return pmFormDataDto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.stor_manage.io.service.iostor.impl;
|
package org.nl.wms.stor_manage.io.service.iostor.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
@@ -33,6 +34,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -66,40 +68,79 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
|
|||||||
if (form == null) {
|
if (form == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
String now = DateUtil.now();
|
||||||
|
String nickName = SecurityUtils.getCurrentNickName();
|
||||||
String sourceFormCode = form.getString("source_form_code");
|
String sourceFormCode = form.getString("source_form_code");
|
||||||
String mstString = null;
|
String mstString = null;
|
||||||
|
StIvtIostorinv mst = form.toJavaObject(StIvtIostorinv.class);
|
||||||
|
String sourceFormid = null;
|
||||||
if (StringUtils.isNotEmpty(sourceFormCode)){
|
if (StringUtils.isNotEmpty(sourceFormCode)){
|
||||||
PmFormData mst = iPmFormDataService.getOne(new QueryWrapper<PmFormData>().eq("code", sourceFormCode));
|
PmFormData pmst = iPmFormDataService.getOne(new QueryWrapper<PmFormData>().eq("code", sourceFormCode));
|
||||||
JSONObject mstJ = (JSONObject) JSONObject.toJSON(mst);
|
sourceFormid = pmst.getId();
|
||||||
|
JSONObject mstJ = (JSONObject) JSONObject.toJSON(pmst);
|
||||||
mstJ.putAll((Map)mstJ.remove("form_data"));
|
mstJ.putAll((Map)mstJ.remove("form_data"));
|
||||||
|
mstJ.putAll(mst.getForm_data());
|
||||||
mstString = mstJ.toJSONString();
|
mstString = mstJ.toJSONString();
|
||||||
}
|
}
|
||||||
List<Map> dtls = (List<Map>) form.remove("item");
|
List<Map> dtls = (List<Map>) form.remove("item");
|
||||||
StIvtIostorinv mst = form.toJavaObject(StIvtIostorinv.class);
|
|
||||||
mst.setId(IdUtil.getStringId());
|
mst.setId(IdUtil.getStringId());
|
||||||
mst.setCreate_name(SecurityUtils.getCurrentNickName());
|
mst.setCreate_name(nickName);
|
||||||
mst.setCreate_time(DateUtil.now());
|
mst.setCreate_time(now);
|
||||||
mst.setCode(CodeUtil.getNewCode("IO_CODE"));
|
mst.setCode(CodeUtil.getNewCode("IO_CODE"));
|
||||||
mst.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
mst.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||||
if (dtls != null && dtls.size() > 0) {
|
if (dtls == null || dtls.size() == 0) {
|
||||||
|
throw new BadRequestException("出库明细不能为空");
|
||||||
|
}
|
||||||
|
List<Map<String,String>> list = new ArrayList<>();
|
||||||
for (int i = 0; i < dtls.size(); i++) {
|
for (int i = 0; i < dtls.size(); i++) {
|
||||||
JSONObject jsonDtl = new JSONObject(dtls.get(i));
|
JSONObject jsonDtl = new JSONObject(dtls.get(i));
|
||||||
String sourceDtlFormCode = jsonDtl.getString("source_form_code");
|
String sourceDtlFormId = jsonDtl.getString("source_form_id");
|
||||||
StIvtIostorinvdtl dtl = jsonDtl.toJavaObject(StIvtIostorinvdtl.class);
|
StIvtIostorinvdtl dtl = jsonDtl.toJavaObject(StIvtIostorinvdtl.class);
|
||||||
if (StringUtils.isNotEmpty(sourceDtlFormCode) && mstString!=null){
|
if (StringUtils.isNotEmpty(sourceDtlFormId) && mstString!=null){
|
||||||
JSONObject sourceFormData = JSONObject.parseObject(mstString);
|
JSONObject sourceFormData = JSONObject.parseObject(mstString);
|
||||||
PmFormData sourDtl = iPmFormDataService.getOne(new QueryWrapper<PmFormData>()
|
PmFormData sourDtl = iPmFormDataService.getById(sourceDtlFormId);
|
||||||
.eq("code", sourceFormCode));
|
String dtlStr = JSON.toJSONString(sourDtl);
|
||||||
JSONObject dtlJ = (JSONObject) JSONObject.toJSON(sourDtl);
|
JSONObject dtlJ = JSONObject.parseObject(dtlStr);
|
||||||
dtlJ.putAll((Map) dtlJ.remove("form_data"));
|
dtlJ.putAll((Map) dtlJ.remove("form_data"));
|
||||||
sourceFormData.putAll(dtlJ);
|
sourceFormData.putAll(dtlJ);
|
||||||
|
sourceFormData.put("pcsn",dtl.getPcsn());
|
||||||
|
sourceFormData.put("now_assign_qty",dtl.getQty());
|
||||||
dtl.setSource_form_data(sourceFormData);
|
dtl.setSource_form_data(sourceFormData);
|
||||||
|
list.add(MapOf.of("qty",sourDtl.getQty().subtract(dtl.getQty())
|
||||||
|
,"assign_qty",sourDtl.getAssign_qty().add(dtl.getQty())
|
||||||
|
,"id",sourceDtlFormId));
|
||||||
}
|
}
|
||||||
dtl.setId(IdUtil.getStringId());
|
dtl.setId(IdUtil.getStringId());
|
||||||
dtl.setInv_id(mst.getId());
|
dtl.setInv_id(mst.getId());
|
||||||
|
dtl.setUpdate_time(now);
|
||||||
|
dtl.setUpdate_time(nickName);
|
||||||
dtl.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
dtl.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||||
iStIvtIostorinvDtlService.save(dtl);
|
iStIvtIostorinvDtlService.save(dtl);
|
||||||
}
|
}
|
||||||
|
for (Map<String,String> map : list) {
|
||||||
|
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
||||||
|
.set("qty",map.get("qty"))
|
||||||
|
.set("assign_qty",map.get("assign_qty"))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
|
.eq("id",map.get("id")));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(sourceFormid)){
|
||||||
|
List<PmFormData> byParentId = iPmFormDataService.getByParentId(sourceFormid);
|
||||||
|
long count = byParentId.stream().filter(pmFormData -> pmFormData.getQty().intValue() > 0).count();
|
||||||
|
if (count == 0){
|
||||||
|
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
||||||
|
.set("status",StatusEnum.FORM_STATUS.code("完成"))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
|
.eq("id",sourceFormid));
|
||||||
|
}else {
|
||||||
|
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
||||||
|
.set("status",StatusEnum.FORM_STATUS.code("执行中"))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
|
.eq("id",sourceFormid));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.save(mst);
|
this.save(mst);
|
||||||
}
|
}
|
||||||
@@ -311,6 +352,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String cancelMst(String id) {
|
public String cancelMst(String id) {
|
||||||
|
String now = DateUtil.now();
|
||||||
|
String nickName = SecurityUtils.getCurrentNickName();
|
||||||
StIvtIostorinv mst = this.getById(id);
|
StIvtIostorinv mst = this.getById(id);
|
||||||
List<StIvtIostorinvdtl> iostorinvdtls = iStIvtIostorinvDtlService.list(new QueryWrapper<StIvtIostorinvdtl>().eq("inv_id", id));
|
List<StIvtIostorinvdtl> iostorinvdtls = iStIvtIostorinvDtlService.list(new QueryWrapper<StIvtIostorinvdtl>().eq("inv_id", id));
|
||||||
String collect = iostorinvdtls.stream().map(StIvtIostorinvdtl::getVehicle_id).collect(Collectors.joining(","));
|
String collect = iostorinvdtls.stream().map(StIvtIostorinvdtl::getVehicle_id).collect(Collectors.joining(","));
|
||||||
@@ -319,6 +362,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
|
|||||||
//更新点位锁,删除分配
|
//更新点位锁,删除分配
|
||||||
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||||
.set("frozen_qty", 0)
|
.set("frozen_qty", 0)
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
.in("id", Arrays.asList(split)));
|
.in("id", Arrays.asList(split)));
|
||||||
//更新点位锁定
|
//更新点位锁定
|
||||||
String vehicleCodes = iostorinvdtls.stream().map(StIvtIostorinvdtl::getVehicle_code).collect(Collectors.joining(","));
|
String vehicleCodes = iostorinvdtls.stream().map(StIvtIostorinvdtl::getVehicle_code).collect(Collectors.joining(","));
|
||||||
@@ -326,13 +371,39 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
|
|||||||
iStIvtStructattrService
|
iStIvtStructattrService
|
||||||
.update(new UpdateWrapper<StIvtStructattr>()
|
.update(new UpdateWrapper<StIvtStructattr>()
|
||||||
.set("lock_type",StatusEnum.LOCK.code("无锁"))
|
.set("lock_type",StatusEnum.LOCK.code("无锁"))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
.in("vehicle_code", Arrays.asList(vehicleCodeSplit))
|
.in("vehicle_code", Arrays.asList(vehicleCodeSplit))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.update(new UpdateWrapper<StIvtIostorinv>()
|
this.update(new UpdateWrapper<StIvtIostorinv>()
|
||||||
.set("status", StatusEnum.FORM_STATUS.code("取消"))
|
.set("status", StatusEnum.FORM_STATUS.code("取消"))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
.eq("id", id));
|
.eq("id", id));
|
||||||
|
/**
|
||||||
|
* 更新原单
|
||||||
|
*/
|
||||||
|
String parentId = null;
|
||||||
|
for (StIvtIostorinvdtl dtl : iostorinvdtls) {
|
||||||
|
String formid = dtl.getSource_form_id();
|
||||||
|
PmFormData pmFormData = iPmFormDataService.getById(formid);
|
||||||
|
parentId = pmFormData.getParent_id();
|
||||||
|
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
||||||
|
.set("qty",pmFormData.getQty().add(dtl.getQty()))
|
||||||
|
.set("assign_qty",pmFormData.getAssign_qty().subtract(dtl.getQty()))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
|
.set("remark","出库单取消")
|
||||||
|
.eq("id",formid));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(parentId)){
|
||||||
|
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
|
||||||
|
.set("status",StatusEnum.FORM_STATUS.code("执行中"))
|
||||||
|
.set("update_time",now)
|
||||||
|
.set("update_name",nickName)
|
||||||
|
.eq("id",parentId));
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||||
import org.nl.common.domain.entity.PageQuery;
|
import org.nl.common.domain.entity.PageQuery;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty;
|
||||||
import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery;
|
import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery;
|
||||||
import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto;
|
import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto;
|
||||||
|
|
||||||
@@ -52,4 +53,6 @@ public interface IStIvtStructattrService extends IService<StIvtStructattr> {
|
|||||||
List<StructattrVechielDto> structVehicle(Map query);
|
List<StructattrVechielDto> structVehicle(Map query);
|
||||||
|
|
||||||
Object getStructIvt(StructattrQuery query, PageQuery page);
|
Object getStructIvt(StructattrQuery query, PageQuery page);
|
||||||
|
|
||||||
|
List<StructAssignQty> getStructIvtAssign(List<String> materials, String stor_code);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.nl.wms.stor_manage.struct.service.dao;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 仓位属性表
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2024-04-08
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class StructAssignQty {
|
||||||
|
private String struct_code;
|
||||||
|
private String stor_code;
|
||||||
|
private String material_id;
|
||||||
|
private String struct_codes;
|
||||||
|
private String vehicle_codes;
|
||||||
|
private String pcsn;
|
||||||
|
private BigDecimal sto_qty;
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
|||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.nl.common.domain.entity.PageQuery;
|
import org.nl.common.domain.entity.PageQuery;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty;
|
||||||
import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery;
|
import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery;
|
||||||
import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto;
|
import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto;
|
||||||
|
|
||||||
@@ -27,4 +28,6 @@ public interface StIvtStructattrMapper extends BaseMapper<StIvtStructattr> {
|
|||||||
List<StructattrVechielDto> structVehicle(Map query);
|
List<StructattrVechielDto> structVehicle(Map query);
|
||||||
|
|
||||||
List<Map> getStructIvt(@Param("query")StructattrQuery query, PageQuery pageQuery);
|
List<Map> getStructIvt(@Param("query")StructattrQuery query, PageQuery pageQuery);
|
||||||
|
|
||||||
|
List<StructAssignQty> getStructIvtAssign(@Param("materials")List<String> materials, @Param("stor_code")String stor_code);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,4 +138,29 @@
|
|||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
<select id="getStructIvtAssign" resultType="org.nl.wms.stor_manage.struct.service.dao.StructAssignQty">
|
||||||
|
SELECT
|
||||||
|
struct.struct_code,
|
||||||
|
struct.stor_code,
|
||||||
|
vm.material_id,
|
||||||
|
GROUP_CONCAT(struct.struct_code) as struct_codes,
|
||||||
|
GROUP_CONCAT(struct.vehicle_code) as vehicle_codes,
|
||||||
|
vm.pcsn,
|
||||||
|
SUM(vm.qty) as sto_qty
|
||||||
|
FROM
|
||||||
|
st_ivt_structattr struct
|
||||||
|
left join md_pb_vehicleMater vm on struct.vehicle_code = vm.vehicle_code
|
||||||
|
left join md_me_materialbase material on vm.material_id = material.material_id
|
||||||
|
where struct.vehicle_code is not null
|
||||||
|
and vm.is_delete = false
|
||||||
|
and struct.lock_type = '00'
|
||||||
|
and struct.is_used = '1'
|
||||||
|
and struct.is_used = '1'
|
||||||
|
and vm.frozen_qty = '0'
|
||||||
|
and vm.material_id in
|
||||||
|
<foreach collection="materials" item="item" open="(" close=")" separator=",">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
GROUP BY pcsn,stor_code ORDER BY sto_qty desc
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ public class StructattrQuery extends BaseQuery<StIvtStructattr> {
|
|||||||
private Boolean has_vehicle = Boolean.FALSE;
|
private Boolean has_vehicle = Boolean.FALSE;
|
||||||
private String material;
|
private String material;
|
||||||
private Boolean has;
|
private Boolean has;
|
||||||
|
private Boolean assign;
|
||||||
@Override
|
@Override
|
||||||
public void paramMapping() {
|
public void paramMapping() {
|
||||||
super.doP.put("search", QParam.builder().k(new String[]{"struct_code"}).type(QueryTEnum.LK).build());
|
super.doP.put("search", QParam.builder().k(new String[]{"struct_code"}).type(QueryTEnum.LK).build());
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
|||||||
import org.nl.wms.stor_manage.record.service.IStIvtStructivtflowService;
|
import org.nl.wms.stor_manage.record.service.IStIvtStructivtflowService;
|
||||||
import org.nl.wms.stor_manage.record.service.dao.StIvtStructivtflow;
|
import org.nl.wms.stor_manage.record.service.dao.StIvtStructivtflow;
|
||||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||||
|
import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty;
|
||||||
import org.nl.wms.stor_manage.struct.service.dao.mapper.StIvtStructattrMapper;
|
import org.nl.wms.stor_manage.struct.service.dao.mapper.StIvtStructattrMapper;
|
||||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
@@ -53,6 +54,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
|||||||
private IMdPbVehicleMaterService vehicleMaterService;
|
private IMdPbVehicleMaterService vehicleMaterService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IStIvtStructivtflowService structivtflowService;
|
private IStIvtStructivtflowService structivtflowService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysParamService iSysParamService;
|
private ISysParamService iSysParamService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -179,4 +181,13 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
|||||||
build.setTotalElements(page.getTotal());
|
build.setTotalElements(page.getTotal());
|
||||||
return build;
|
return build;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<StructAssignQty> getStructIvtAssign(List<String> materials, String stor_code) {
|
||||||
|
if (StringUtils.isEmpty(stor_code) || materials == null || materials.size() == 0){
|
||||||
|
throw new BadRequestException("查询可用库存失败:物料或仓库未指定");
|
||||||
|
}
|
||||||
|
List<StructAssignQty> mst_detail = this.baseMapper.getStructIvtAssign(materials, stor_code);
|
||||||
|
return mst_detail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.kingdee.bos.webapi.entity.*;
|
import com.kingdee.bos.webapi.entity.*;
|
||||||
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -13,6 +14,8 @@ import org.nl.common.utils.BaseCode;
|
|||||||
import org.nl.common.utils.IdUtil;
|
import org.nl.common.utils.IdUtil;
|
||||||
import org.nl.common.utils.MapOf;
|
import org.nl.common.utils.MapOf;
|
||||||
import org.nl.config.lucene.LuceneAppender;
|
import org.nl.config.lucene.LuceneAppender;
|
||||||
|
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
|
||||||
|
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
|
||||||
import org.nl.wms.external_system.erp.dto.ErpQuery;
|
import org.nl.wms.external_system.erp.dto.ErpQuery;
|
||||||
import org.nl.wms.external_system.erp.dto.ErpSec;
|
import org.nl.wms.external_system.erp.dto.ErpSec;
|
||||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||||
@@ -45,6 +48,8 @@ public class SyncErpBillsScheduleService {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SyncFormMappingServiceImpl syncFormMappingServiceImpl;
|
private SyncFormMappingServiceImpl syncFormMappingServiceImpl;
|
||||||
|
@Autowired
|
||||||
|
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IPmFormDataService formDataService;
|
private IPmFormDataService formDataService;
|
||||||
@@ -206,20 +211,24 @@ public class SyncErpBillsScheduleService {
|
|||||||
log.error("ERP单据同步失败:{}", error);
|
log.error("ERP单据同步失败:{}", error);
|
||||||
}
|
}
|
||||||
Set<String> exitFormDataList = pmFormDataMapper.existFormDataList();
|
Set<String> exitFormDataList = pmFormDataMapper.existFormDataList();
|
||||||
|
外部:
|
||||||
for (Object r : result) {
|
for (Object r : result) {
|
||||||
try {
|
try {
|
||||||
JSONArray mappingJsonArray = JSONArray.parseArray(mappingJson);
|
JSONArray mappingJsonArray = JSONArray.parseArray(mappingJson);
|
||||||
List<PmFormData> formDataList = formDataService.syncAnalyse(mappingJsonArray, formType, dtlSplit, JSON.toJSONString(r));
|
List<PmFormData> formDataList = formDataService.syncAnalyse(mappingJsonArray, formType, dtlSplit, JSON.toJSONString(r));
|
||||||
|
Set<String> materials = formDataList.stream().map(PmFormData::getMaterial_id).collect(Collectors.toSet());
|
||||||
|
int materialCount = iMdMeMaterialbaseService.count(new QueryWrapper<MdMeMaterialbase>().in("material_id", materials));
|
||||||
|
if (materialCount!=materials.size()){
|
||||||
|
log.error("保存数据 [{}] 时出现异常: {}", JSON.toJSONString(formDataList), "物料信息不存在"+materials.toString());
|
||||||
|
}
|
||||||
|
for (String id : formDataList.stream().map(PmFormData::getId).collect(Collectors.toList())) {
|
||||||
|
if (exitFormDataList.contains(id)) {
|
||||||
|
continue 外部;
|
||||||
|
}
|
||||||
|
}
|
||||||
for (PmFormData formData : formDataList) {
|
for (PmFormData formData : formDataList) {
|
||||||
try {
|
|
||||||
//log.error(JSON.toJSONString(r));
|
|
||||||
if (!exitFormDataList.contains(formData.getId())) {
|
|
||||||
formDataService.save(formData);
|
formDataService.save(formData);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("保存数据 [{}] 时出现异常: {}", JSON.toJSONString(formData), e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("解析数据 [{}] 时出现异常: {}", JSON.toJSONString(r), e.getMessage());
|
log.error("解析数据 [{}] 时出现异常: {}", JSON.toJSONString(r), e.getMessage());
|
||||||
}
|
}
|
||||||
@@ -233,6 +242,4 @@ public class SyncErpBillsScheduleService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user