【出库管理】用友数据推送

dev
siontion 3 months ago
parent 344f790c94
commit 07f5fef413

@ -252,6 +252,7 @@ public class ChanjetController {
@PreAuthorize("@ss.hasPermission('biz:storage:create')")
@Scheduled(cron = "0 0 3 * * ?")
public void synchronizeData() throws ChanjetApiException{
//查询库存-现存量
chanjetSchedule.queryStock();
//创建入库

@ -5,6 +5,8 @@ import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
@ -52,5 +54,53 @@ public class TplusStorageOutDO extends BaseDO {
*
*/
private Integer isSend;
/**
* id
*/
private Long projectOrderId;
/**
*
*/
private String projectOrderCode;
/**
*
*/
private String deptName;
/**
*
*/
private LocalDateTime stockCreateDate;
/**
*
*/
private String whNo;
/**
*
*/
private String whName;
/**
*
*/
private String productName;
/**
*
*/
private String projectSubName;
/**
*
*/
private String procedureCode;
/**
*
*/
private String procedureName;
/**
*
*/
private BigDecimal fixRatio;
/**
*
*/
private String unit;
}

@ -75,10 +75,11 @@ public interface TplusLastestBomMapper extends BaseMapperX<TplusLastestBomDO> {
inCodes = String.join(",",codes);
MPJLambdaWrapper<TplusLastestBomDO> query = new MPJLambdaWrapper<>();
query.distinct()
.select("t.required_quantity,t.produce_quantity")
.select(stockId+" as stock_id")
.select("ifnull((select storage_ok_qty from wms_storage_mat where stock_id="+stockId+" and mat_id in (select id from base_material where code=t.project_sub_code) ),0)*(t.required_quantity/t.produce_quantity)/(select sum(a.required_quantity/a.produce_quantity) from tplus_lastest_bom as a where a.project_sub_code=t.project_sub_code and a.top_code in ("+inCodes+") and a.deleted=0 and a.tenant_id=2) as storage_ok_qty")
.select("ifnull((select storage_ok_qty from wms_storage_mat where deleted=0 and stock_id="+stockId+" and mat_id in (select id from base_material where code=t.project_sub_code) limit 1),0)*(t.required_quantity/t.produce_quantity)/(select sum(a.required_quantity/a.produce_quantity) from tplus_lastest_bom as a where a.project_sub_code=t.project_sub_code and a.top_code in ("+inCodes+") and a.deleted=0 and a.tenant_id=2 limit 1) as storage_ok_qty")
.select("t.top_code,t.project_sub_code")
.select("(select procedure_id from wms_storage_mat where stock_id="+stockId+" and mat_id in (select id from base_material where code=t.project_sub_code) ) as procedure_id")
.select("(select procedure_id from wms_storage_mat where deleted=0 and stock_id="+stockId+" and mat_id in (select id from base_material where code=t.project_sub_code) ) as procedure_id")
.disableSubLogicDel()
.in(CollUtil.isNotEmpty(codes), TplusLastestBomDO::getTopCode, codes)
;

@ -490,7 +490,9 @@ public class ChanjetSchedule {
RDRecordDetail detail = new RDRecordDetail();
detail.setCode(String.valueOf(mat.getId())).setBaseQuantity(mat.getStorageOkQty())
.setInventory(new Inventory(mat.getProjectSubCode()));
detailList.add(detail);
if(mat.getStorageOkQty().compareTo(new BigDecimal(0))>0) {
detailList.add(detail);
}
});
// 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口

@ -7,6 +7,7 @@ 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.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;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.serialnumber.SerialNumberDO;
@ -16,6 +17,8 @@ import com.chanko.yunxi.mes.module.biz.dal.dataobject.systemparameters.SystemPar
import com.chanko.yunxi.mes.module.biz.dal.dataobject.tpluslastestbom.TplusLastestBomDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.tpluslasteststock.TplusLastestStockDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.tplusstorageout.TplusStorageOutDO;
import com.chanko.yunxi.mes.module.biz.dal.mysql.material.MaterialMapper;
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;
@ -23,12 +26,14 @@ import com.chanko.yunxi.mes.module.biz.dal.mysql.systemparameters.SystemParamete
import com.chanko.yunxi.mes.module.biz.dal.mysql.tpluslastestbom.TplusLastestBomMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.tpluslasteststock.TplusLastestStockMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.tplusstorageout.TplusStorageOutMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.warehouse.WarehouseMapper;
import com.chanko.yunxi.mes.module.biz.enums.CodeEnum;
import com.chanko.yunxi.mes.module.biz.enums.StockTypeEnum;
import com.chanko.yunxi.mes.module.biz.enums.SystemParmetersEnum;
import com.chanko.yunxi.mes.module.biz.manager.CrossOrderManager;
import com.chanko.yunxi.mes.module.biz.service.serialnumber.SerialNumberService;
import com.chanko.yunxi.mes.module.biz.service.storagemat.StorageMatService;
import com.chanko.yunxi.mes.module.system.dal.mysql.dept.DeptMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
@ -84,6 +89,18 @@ public class StorageServiceImpl implements StorageService {
@Resource
private TplusLastestStockMapper tplusLastestStockMapper;
@Resource
private DeptMapper deptMapper;
@Resource
private WarehouseMapper warehouseMapper;
@Resource
private MaterialMapper materialMapper;
@Resource
private ProcedureMapper procedureMapper;
@Override
@ -158,7 +175,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.getProjectSubCode())){
if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive()) && !StringUtils.isEmpty(updateObj.getProjectOrderCode())){
ProjectOrderDO projectOrderDO = projectOrderMapper.selectOne(ProjectOrderDO::getCode,updateObj.getProjectOrderCode());
List<ProjectOrderSubDO> projectOrderSubDOList = projectOrderSubMapper.selectListByProjectOrderId(projectOrderDO.getId());
@ -182,6 +199,18 @@ public class StorageServiceImpl implements StorageService {
.setProductCode(to.getTopCode())
.setProjectSubCode(to.getProjectSubCode())
.setProcedureId(to.getProcedureId())
.setProjectOrderId(projectOrderDO.getId())
.setProjectOrderCode(projectOrderDO.getCode())
.setDeptName(deptMapper.selectById(projectOrderDO.getBusinessDeptId()).getName())
.setStockCreateDate(updateObj.getOutboundTime())
.setWhName(warehouseMapper.selectById(projectOrderDO.getWarehouseId()).getWhName())
.setWhNo(warehouseMapper.selectById(projectOrderDO.getWarehouseId()).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())
.setProcedureName(to.getProcedureId()==null?null:procedureMapper.selectById(to.getProcedureId()).getName())
.setFixRatio(to.getRequiredQuantity().divide(to.getProduceQuantity()))
.setUnit(materialMapper.selectOne(MaterialDO::getCode,to.getProjectSubCode()).getUnit())
.setIsSend(0);
insertList.add(tplusStorageOutDO);
}else{
@ -190,6 +219,18 @@ public class StorageServiceImpl implements StorageService {
.setProductCode(to.getTopCode())
.setProjectSubCode(to.getProjectSubCode())
.setProcedureId(to.getProcedureId())
.setProjectOrderId(projectOrderDO.getId())
.setProjectOrderCode(projectOrderDO.getCode())
.setDeptName(deptMapper.selectById(projectOrderDO.getBusinessDeptId()).getName())
.setStockCreateDate(updateObj.getOutboundTime())
.setWhName(warehouseMapper.selectById(projectOrderDO.getWarehouseId()).getWhName())
.setWhNo(warehouseMapper.selectById(projectOrderDO.getWarehouseId()).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())
.setProcedureName(to.getProcedureId()==null?null:procedureMapper.selectById(to.getProcedureId()).getName())
.setFixRatio(to.getRequiredQuantity().divide(to.getProduceQuantity()))
.setUnit(materialMapper.selectOne(MaterialDO::getCode,to.getProjectSubCode()).getUnit())
.setIsSend(0);
updateList.add(tplusStorageOutDO);
}
@ -238,7 +279,9 @@ public class StorageServiceImpl implements StorageService {
});
}
if(CollUtil.isNotEmpty(updateList)) tplusStorageOutMapper.updateBatch(updateList);
if(CollUtil.isNotEmpty(updateList)){
tplusStorageOutMapper.updateBatch(updateList);
}

@ -492,6 +492,18 @@ CREATE TABLE `tplus_storage_out` (
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号',
`is_send` int(2) DEFAULT NULL COMMENT '是否推送',
`project_order_id` bigint(20) DEFAULT NULL COMMENT '生产订单id',
`project_order_code` varchar(255) DEFAULT NULL COMMENT '生产订单编号',
`dept_name` varchar(255) DEFAULT NULL COMMENT '生产订单部门名称',
`stock_create_date` datetime DEFAULT NULL COMMENT '单据日期',
`wh_no` varchar(255) DEFAULT NULL COMMENT '出库仓库编码',
`wh_name` varchar(255) DEFAULT NULL COMMENT '出库仓库名称',
`product_name` varchar(255) DEFAULT NULL COMMENT '产品名称',
`project_sub_name` varchar(255) DEFAULT NULL COMMENT '物料名称',
`procedure_code` varchar(255) DEFAULT NULL COMMENT '工序编码',
`procedure_name` varchar(255) DEFAULT NULL COMMENT '工序名称',
`fix_ratio` decimal(10,2) DEFAULT NULL COMMENT '定额',
`unit` varchar(255) DEFAULT NULL COMMENT '领料单位',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='用友生产领料表';

Loading…
Cancel
Save