【生产退料】 接口调整

dev
siontion 3 months ago
parent 07f5fef413
commit f1a2d19eaf

@ -86,5 +86,9 @@ public class StoragePageReqVO extends PageParam {
@Schema(description = "生产订单Code")
private String projectOrderCode;
private String sDate;
private String eDate;
}

@ -41,4 +41,8 @@ public class TplusStorageOutPageReqVO extends PageParam {
@Schema(description = "是否推送")
private Integer isSend;
private String sDate;
private String eDate;
}

@ -102,5 +102,9 @@ public class TplusStorageOutDO extends BaseDO {
*
*/
private String unit;
/**
* id
*/
private Long WhId;
}

@ -36,6 +36,7 @@ public interface StorageMapper extends BaseMapperX<StorageDO> {
.like(!StringUtils.isEmpty(reqVO.getMatName()), "f.name", reqVO.getMatName())
.like(!StringUtils.isEmpty(reqVO.getStockNo()),StorageDO::getStockNo, reqVO.getStockNo())
.like(!StringUtils.isEmpty(reqVO.getHeaderNo()),StorageDO::getHeaderNo, reqVO.getHeaderNo())
.between(!StringUtils.isEmpty(reqVO.getSDate()) && !StringUtils.isEmpty(reqVO.getEDate()),StorageDO::getCreateTime,reqVO.getSDate(),reqVO.getEDate())
.eq(reqVO.getStockType() != null,StorageDO::getStockType, reqVO.getStockType())
.eq(reqVO.getStockInType() != null,StorageDO::getStockInType, reqVO.getStockInType())
.eq(reqVO.getWhId() != null,StorageDO::getWhId, reqVO.getWhId())

@ -5,9 +5,16 @@ import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StoragePageReqVO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.storagemat.StorageMatDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.tplusstorageout.TplusStorageOutDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.biz.controller.admin.tplusstorageout.vo.*;
import org.springframework.util.StringUtils;
/**
* Mapper
@ -30,4 +37,15 @@ public interface TplusStorageOutMapper extends BaseMapperX<TplusStorageOutDO> {
.orderByDesc(TplusStorageOutDO::getId));
}
default PageResult<TplusStorageOutDO> selectPageByDate(TplusStorageOutPageReqVO reqVO) {
MPJLambdaWrapper<TplusStorageOutDO> query = new MPJLambdaWrapper<>();
query.selectAll(TplusStorageOutDO.class)
.disableSubLogicDel()
.orderByDesc(TplusStorageOutDO::getId);
query.between(!StringUtils.isEmpty(reqVO.getSDate()) && !StringUtils.isEmpty(reqVO.getEDate()),TplusStorageOutDO::getCreateTime,reqVO.getSDate(),reqVO.getEDate());
return selectPage(reqVO,query);
}
}

@ -1,12 +1,14 @@
package com.chanko.yunxi.mes.module.biz.service.storage;
import cn.hutool.core.collection.CollUtil;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StoragePageReqVO;
import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StorageSaveReqVO;
import com.chanko.yunxi.mes.module.biz.controller.admin.storagemat.vo.StorageMatPageReqVO;
import com.chanko.yunxi.mes.module.biz.controller.admin.tplusstorageout.vo.TplusStorageOutPageReqVO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.projectorder.ProjectOrderSubDO;
@ -22,6 +24,7 @@ import com.chanko.yunxi.mes.module.biz.dal.mysql.procedure.ProcedureMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.projectorder.ProjectOrderMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.projectorder.ProjectOrderSubMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.storage.StorageMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.storagemat.StorageMatMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.systemparameters.SystemParametersMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.tpluslastestbom.TplusLastestBomMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.tpluslasteststock.TplusLastestStockMapper;
@ -42,7 +45,9 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@ -101,6 +106,9 @@ public class StorageServiceImpl implements StorageService {
@Resource
private ProcedureMapper procedureMapper;
@Resource
private StorageMatMapper storageMatMapper;
@Override
@ -147,7 +155,12 @@ public class StorageServiceImpl implements StorageService {
StorageMatPageReqVO reqVO = new StorageMatPageReqVO();
reqVO.setStockId(updateReqVO.getId())
.setWhId(updateReqVO.getWhId());
List<StorageMatDO> storageMatList = storageMatService.getStorageMatPage(reqVO);
List<StorageMatDO> storageMatList = new ArrayList<>();
if(updateObj.getStockType() == StockTypeEnum.IN.getCode()){
storageMatList =storageMatMapper.selectMatByStorckID(updateObj.getId());
}else{
storageMatList = storageMatService.getStorageMatPage(reqVO);
}
// if(CollUtil.isEmpty(storageMatList)) {
// throw exception(STORAGE_MAT_NOT_EXISTS);
// }
@ -165,8 +178,8 @@ public class StorageServiceImpl implements StorageService {
for (StorageMatDO storageMatDO : storageMatList) {
if (storageMatDO.getStorageOkQty() == null) storageMatDO.setStorageOkQty(new BigDecimal(0));
if (storageMatDO.getStockQuantity() == null) storageMatDO.setStockQuantity(new BigDecimal(0));
if (storageMatDO.getStorageOkQty().compareTo(new BigDecimal(0)) == 0
|| storageMatDO.getStockQuantity().compareTo(storageMatDO.getStorageOkQty()) < 0) {
if (updateObj.getStockType() == StockTypeEnum.OUT.getCode() && (storageMatDO.getStorageOkQty().compareTo(new BigDecimal(0)) == 0
|| storageMatDO.getStockQuantity().compareTo(storageMatDO.getStorageOkQty()) < 0)) {
throw exception(STORAGE_STOCK_QUANTITY_LACK);
}
}
@ -175,7 +188,7 @@ public class StorageServiceImpl implements StorageService {
List<TplusStorageOutDO> insertList = new ArrayList<>();
List<TplusStorageOutDO> updateList = new ArrayList<>();
if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive()) && !StringUtils.isEmpty(updateObj.getProjectOrderCode())){
if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive()) && updateObj.getStockType() == StockTypeEnum.OUT.getCode() && !StringUtils.isEmpty(updateObj.getProjectOrderCode())){
ProjectOrderDO projectOrderDO = projectOrderMapper.selectOne(ProjectOrderDO::getCode,updateObj.getProjectOrderCode());
List<ProjectOrderSubDO> projectOrderSubDOList = projectOrderSubMapper.selectListByProjectOrderId(projectOrderDO.getId());
@ -203,8 +216,9 @@ public class StorageServiceImpl implements StorageService {
.setProjectOrderCode(projectOrderDO.getCode())
.setDeptName(deptMapper.selectById(projectOrderDO.getBusinessDeptId()).getName())
.setStockCreateDate(updateObj.getOutboundTime())
.setWhName(warehouseMapper.selectById(projectOrderDO.getWarehouseId()).getWhName())
.setWhNo(warehouseMapper.selectById(projectOrderDO.getWarehouseId()).getWhNo())
.setWhId(updateObj.getWhId())
.setWhName(warehouseMapper.selectById(updateObj.getWhId()).getWhName())
.setWhNo(warehouseMapper.selectById(updateObj.getWhId()).getWhNo())
.setProductName(materialMapper.selectOne(MaterialDO::getCode,to.getTopCode()).getName())
.setProjectSubName(materialMapper.selectOne(MaterialDO::getCode,to.getProjectSubCode()).getName())
.setProcedureCode(to.getProcedureId()==null?null:procedureMapper.selectById(to.getProcedureId()).getCode())
@ -223,8 +237,9 @@ public class StorageServiceImpl implements StorageService {
.setProjectOrderCode(projectOrderDO.getCode())
.setDeptName(deptMapper.selectById(projectOrderDO.getBusinessDeptId()).getName())
.setStockCreateDate(updateObj.getOutboundTime())
.setWhName(warehouseMapper.selectById(projectOrderDO.getWarehouseId()).getWhName())
.setWhNo(warehouseMapper.selectById(projectOrderDO.getWarehouseId()).getWhNo())
.setWhId(updateObj.getWhId())
.setWhName(warehouseMapper.selectById(updateObj.getWhId()).getWhName())
.setWhNo(warehouseMapper.selectById(updateObj.getWhId()).getWhNo())
.setProductName(materialMapper.selectOne(MaterialDO::getCode,to.getTopCode()).getName())
.setProjectSubName(materialMapper.selectOne(MaterialDO::getCode,to.getProjectSubCode()).getName())
.setProcedureCode(to.getProcedureId()==null?null:procedureMapper.selectById(to.getProcedureId()).getCode())
@ -234,36 +249,62 @@ public class StorageServiceImpl implements StorageService {
.setIsSend(0);
updateList.add(tplusStorageOutDO);
}
});
}
else if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive()) && updateObj.getStockType() == StockTypeEnum.OUT.getCode() && updateObj.getMaterialMode().equals(2)) {
// 如为提交同步生成出库单
if(updateObj.getStockType() == StockTypeEnum.OUT.getCode()){
// 逻辑变更由提交状态改为审核状态时通过用友接口推送出库单到TPlus
if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive())){
try {
crossOrderManager.createStockOutOrder(updateObj.getId());
} catch (Exception e) {
throw exception(CALL_API_ERROR);
}
else if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive()) && updateObj.getMaterialMode().equals(2)) {
}
}
// storageMatList.forEach(to->{
// TplusStorageOutDO tplusStorageOutDO =
// tplusStorageOutMapper.selectOne(TplusStorageOutDO::getStockId,updateObj.getId(),
// TplusStorageOutDO::getProjectSubCode,to.getProjectSubCode());
//
// if(tplusStorageOutDO==null){
// tplusStorageOutDO = new TplusStorageOutDO();
// tplusStorageOutDO.setId(null)
// .setStockId(updateObj.getId())
// .setStorageOkQty(to.getStorageOkQty())
// .setProjectSubCode(to.getProjectSubCode())
// .setProcedureId(to.getProcedureId())
// .setIsSend(0);
// insertList.add(tplusStorageOutDO);
// }else{
// tplusStorageOutDO.setStockId(updateObj.getId())
// .setStorageOkQty(to.getStorageOkQty())
// .setProjectSubCode(to.getProjectSubCode())
// .setProcedureId(to.getProcedureId())
// .setIsSend(0);
// updateList.add(tplusStorageOutDO);
// }
// });
}
else if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive()) && updateObj.getStockType() == StockTypeEnum.IN.getCode()){
storageMatList.forEach(to->{
TplusStorageOutDO tplusStorageOutDO =
tplusStorageOutMapper.selectOne(TplusStorageOutDO::getStockId,updateObj.getId(),
TplusStorageOutDO::getProjectSubCode,to.getProjectSubCode());
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(String.valueOf(LocalDate.now())));
if(tplusStorageOutDO==null){
tplusStorageOutDO = new TplusStorageOutDO();
tplusStorageOutDO.setId(null)
.setStockId(updateObj.getId())
.setStorageOkQty(to.getStorageOkQty())
.setProjectSubCode(to.getProjectSubCode())
.setProcedureId(to.getProcedureId())
.setIsSend(0);
insertList.add(tplusStorageOutDO);
}else{
tplusStorageOutDO.setStockId(updateObj.getId())
.setStorageOkQty(to.getStorageOkQty())
.setProjectSubCode(to.getProjectSubCode())
.setProcedureId(to.getProcedureId())
.setIsSend(0);
updateList.add(tplusStorageOutDO);
}
});
String firstDay = calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONDAY)+"-01 00:00:00";
String lastDay = getLastDayOfMonth(new Date(String.valueOf(LocalDate.now()))).toString()+" 23:59:59";
TplusStorageOutPageReqVO reqOutVO = new TplusStorageOutPageReqVO();
reqOutVO.setPageSize(PageParam.PAGE_SIZE_NONE);
reqOutVO.setSDate(firstDay);
reqOutVO.setEDate(lastDay);
PageResult<TplusStorageOutDO> storageOutList = tplusStorageOutMapper.selectPage(reqOutVO);
saveTplusStockInDate(updateObj,storageMatList,storageOutList.getList());
}
if(CollUtil.isNotEmpty(insertList)) {
tplusStorageOutMapper.insertBatch(insertList);
@ -284,7 +325,6 @@ public class StorageServiceImpl implements StorageService {
}
// // 如为提交同步生成出库单
// if(updateObj.getStockType() == StockTypeEnum.OUT.getCode()){
//
@ -300,6 +340,33 @@ public class StorageServiceImpl implements StorageService {
// }
}
private void saveTplusStockInDate(StorageDO storageDO,List<StorageMatDO> storageMatDOS,List<TplusStorageOutDO> tplusStorageOutDOS){
// if(CollUtil.isNotEmpty(tplusStorageOutDOS)){
// tplusStorageOutDOS.stream().filter(ot->{
// storageMatDOS.stream().anyMatch(mo->mo.getWhId().equals(ot.getWhId()))
// });
// }
}
private Date getLastDayOfMonth(Date date) {
// 创建一个日历对象,并设置为传入的日期
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// 获取传入日期的月份和年份
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
// 将日历日期设置为下个月的第一天
calendar.set(year, month+1, 1);
// 将日历日期向前推一天,即为传入日期的最后一天
calendar.add(Calendar.DATE, -1);
// 返回最后一天的日期
return calendar.getTime();
}
@Override
public void deleteStorage(Long id) {

@ -504,6 +504,7 @@ CREATE TABLE `tplus_storage_out` (
`procedure_name` varchar(255) DEFAULT NULL COMMENT '工序名称',
`fix_ratio` decimal(10,2) DEFAULT NULL COMMENT '定额',
`unit` varchar(255) DEFAULT NULL COMMENT '领料单位',
`wh_id` bigint(20) DEFAULT NULL COMMENT '仓库id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='用友生产领料表';

Loading…
Cancel
Save