新增工序号排序 删除接口等..
This commit is contained in:
parent
762cad12d3
commit
6ff8b06703
@ -1,6 +1,6 @@
|
||||
#??ID-PROD
|
||||
#X-KDApi-AcctID = 670768a85463de
|
||||
X-KDApi-AcctID = 6723465a38c722
|
||||
X-KDApi-AcctID = 670768a85463de
|
||||
#X-KDApi-AcctID = 6723465a38c722
|
||||
X-KDApi-UserName = Administrator
|
||||
#??IDID
|
||||
X-KDApi-AppID = 288012_Rc0C0zCG2lga0/Vs2Y4pzYSL6hQcWOko
|
||||
|
||||
@ -1198,7 +1198,7 @@ public class BomDetailsController extends BaseController {
|
||||
}
|
||||
|
||||
|
||||
public int loadMaterialPreservation(BomDetails bomDetails1, String states) {
|
||||
public int loadMaterialPreservation1(BomDetails bomDetails1, String states) {
|
||||
K3CloudApi client = new K3CloudApi();
|
||||
// 创建一个空的JsonObject
|
||||
JsonObject json = new JsonObject();
|
||||
@ -1392,7 +1392,7 @@ public class BomDetailsController extends BaseController {
|
||||
return 1;
|
||||
}
|
||||
//创建电气物料
|
||||
public int loadMaterialPreservation1(BomDetails bomDetails1, String states) {
|
||||
public int loadMaterialPreservation(BomDetails bomDetails1, String states) {
|
||||
K3CloudApi client = new K3CloudApi();
|
||||
// 创建一个空的JsonObject
|
||||
JsonObject json = new JsonObject();
|
||||
|
||||
@ -12,6 +12,7 @@ import com.ruoyi.common.core.validate.EditGroup;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.excel.ExcelResult;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.system.domain.MaterialBom;
|
||||
import com.ruoyi.system.domain.ProcessRoute;
|
||||
import com.ruoyi.system.domain.bo.ProcessRouteBo;
|
||||
import com.ruoyi.system.domain.dto.CombinedDTO;
|
||||
@ -49,7 +50,7 @@ public class ProcessRouteController extends BaseController {
|
||||
private final IProcessRouteService iProcessRouteService;
|
||||
private static final Logger log = LoggerFactory.getLogger(ProcessRouteController.class);
|
||||
|
||||
private Long generateUniqueParentId(Long originalId) {
|
||||
private Long generateUniqueParentId( Long originalId) {
|
||||
return originalId + 1000;
|
||||
}
|
||||
|
||||
@ -239,9 +240,6 @@ public class ProcessRouteController extends BaseController {
|
||||
|
||||
/**
|
||||
* 查询组焊件集合
|
||||
*
|
||||
* @return
|
||||
* @RequestBody List<ProcessRouteVo> bomDetail
|
||||
*/
|
||||
@Log(title = "查询组焊件集合")
|
||||
@SaCheckPermission("system:route:pushGroupWeldments")
|
||||
@ -252,9 +250,6 @@ public class ProcessRouteController extends BaseController {
|
||||
|
||||
/**
|
||||
* 查询需要单独生成BOm 的原材料集合
|
||||
*
|
||||
* @return
|
||||
* @RequestBody List<ProcessRouteVo> bomDetail
|
||||
*/
|
||||
@Log(title = "查询需要单独生成BOM的原材料集合")
|
||||
@SaCheckPermission("system:route:getRawBom")
|
||||
@ -291,9 +286,6 @@ public class ProcessRouteController extends BaseController {
|
||||
|
||||
/**
|
||||
* 查询项目列表
|
||||
*
|
||||
* @return
|
||||
* @RequestBody List<ProcessRouteVo> routeVoList
|
||||
*/
|
||||
@Log(title = "获取所有的项目令号")
|
||||
@SaCheckPermission("system:route:getRawBom")
|
||||
@ -338,4 +330,20 @@ public class ProcessRouteController extends BaseController {
|
||||
public R<Void> addRoute( @RequestBody List<ProcessRoute> list) {
|
||||
return toAjax(iProcessRouteService.addRoute(list));
|
||||
}
|
||||
|
||||
@SaCheckPermission("system:route:add")
|
||||
@Log(title = "工艺路线", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/deleteRoute")
|
||||
public List<ProcessRoute> deleteRoute( @RequestBody ProcessRoute processRoute) {
|
||||
return iProcessRouteService.deleteRoute(processRoute);
|
||||
}
|
||||
|
||||
@Log(title = "获取材料bom列表")
|
||||
@SaCheckPermission("system:route:getRawBom")
|
||||
@PostMapping("/getProcessMaterialList")
|
||||
public ResponseEntity<List<MaterialBom>> getProcessMaterialList(@RequestBody ProcessRoute processRoute) {
|
||||
return ResponseEntity.ok(iProcessRouteService.getProcessMaterialList(processRoute));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -109,9 +109,12 @@ public class WlStockDataController extends BaseController {
|
||||
|
||||
/**
|
||||
* 生成安全库存单据
|
||||
* @return
|
||||
*/
|
||||
|
||||
@XxlJob(value = "generateDoc")
|
||||
@SaCheckPermission("system:stockData:generateDoc")
|
||||
@Log(title = "安全库存单据", businessType = BusinessType.OTHER)
|
||||
@PostMapping("/generateDoc")
|
||||
// @XxlJob(value = "generateDoc")
|
||||
public R<List<WlStockData>> generateDoc() {
|
||||
List<WlStockData> wlStockData = iWlStockDataService.generateDoc();
|
||||
return R.ok(wlStockData);
|
||||
|
||||
@ -7,6 +7,8 @@ import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 工艺路线Mapper接口
|
||||
*
|
||||
@ -26,4 +28,6 @@ public interface ProcessRouteMapper extends BaseMapperPlus<ProcessRouteMapper, P
|
||||
// 查询工艺序号是否已经存在,根据 materialCode
|
||||
@Select("SELECT COUNT(1) FROM process_route WHERE process_no = #{processNo} AND material_code = #{materialCode} AND route_description = #{routeDescription}")
|
||||
boolean existsByProcessNoAndMaterialCode(@Param("processNo") Long processNo, @Param("materialCode") String materialCode,@Param("route_description") String routeDescription);
|
||||
@Select("SELECT * FROM process_route WHERE route_description = #{routeDescription} AND material_code = #{materialCode} AND material_name = #{materialName}")
|
||||
List<ProcessRoute> selectRouteByLinAndMaterialCode(String routeDescription, String materialCode, String materialName);
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.ruoyi.system.service;
|
||||
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.system.domain.MaterialBom;
|
||||
import com.ruoyi.system.domain.ProcessRoute;
|
||||
import com.ruoyi.system.domain.bo.ProcessRouteBo;
|
||||
import com.ruoyi.system.domain.dto.CombinedDTO;
|
||||
@ -74,7 +75,6 @@ public interface IProcessRouteService {
|
||||
|
||||
/**
|
||||
* 生成这个项目的pdf
|
||||
*
|
||||
* @param rooteProdet
|
||||
* @return
|
||||
*/
|
||||
@ -85,4 +85,8 @@ public interface IProcessRouteService {
|
||||
List<String> getProcessInfoList(String query);
|
||||
|
||||
boolean addRoute(List<ProcessRoute> list);
|
||||
|
||||
List<MaterialBom> getProcessMaterialList(ProcessRoute processRoute);
|
||||
|
||||
List<ProcessRoute> deleteRoute(ProcessRoute processRoute);
|
||||
}
|
||||
|
||||
@ -76,6 +76,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
@Autowired
|
||||
ProcessInfoMapper processInfoMapper;
|
||||
private static final Logger log = LoggerFactory.getLogger(ProcessRouteController.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(IProcessRouteService.class);
|
||||
|
||||
/**
|
||||
* 查询工艺路线
|
||||
@ -388,13 +389,11 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
String unit = processRoute.getBomUnit();
|
||||
String materialType = processRoute.getBomMaterial();
|
||||
BigDecimal quantity = processRoute.getDiscUsage() != null ? BigDecimal.valueOf(processRoute.getDiscUsage()) : BigDecimal.ZERO;
|
||||
|
||||
if (projectNumber == null || parentMaterialCode == null || parentMaterialName == null || unit == null || materialType == null) {
|
||||
// 处理空值情况,例如记录日志或抛出异常
|
||||
log.error("必填字段为空: {}", processRoute);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 处理 MaterialBom
|
||||
MaterialBom materialBom = new MaterialBom();
|
||||
materialBom.setProjectNumber(projectNumber);
|
||||
@ -405,8 +404,20 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
materialBom.setUnit(unit);
|
||||
materialBom.setMaterialType(materialType);
|
||||
materialBom.setQuantity(quantity);
|
||||
|
||||
// 这里插入 MaterialBom 数据
|
||||
/*
|
||||
ProductionOrder productionOrder = new ProductionOrder();
|
||||
productionOrder.setProductionOrderNo(projectNumber);
|
||||
productionOrder.setDrawingNo(processRoute.getRawMaterialCode());
|
||||
productionOrder.setDrawingName(processRoute.getRawMaterialName());
|
||||
productionOrder.setQuantity(processRoute.getUnitQuantity());
|
||||
productionOrder.setMaterial(materialType);
|
||||
productionOrder.setSingleWeight(processRoute.getDiscWeight());
|
||||
// productionOrder.setTotalWeight(processRoute.getDiscWeight() * processRoute.getUnitQuantity());
|
||||
productionOrder.setParentPart(parentMaterialCode);
|
||||
productionOrder.setParentPart(parentMaterialName);
|
||||
// 这里插入 productionOrder 数据
|
||||
productionOrderMapper.insert(productionOrder);*/
|
||||
// 这里插入 materialBom 数据
|
||||
materialBomMapper.insert(materialBom);
|
||||
}
|
||||
}
|
||||
@ -454,8 +465,14 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
bomDetails.setQuantity(processRoute.getDiscUsage() / 1000.0); // 转换为米
|
||||
} else {
|
||||
bomDetails.setQuantity(processRoute.getDiscUsage());
|
||||
bomDetails.setDenominator(1.0);
|
||||
}
|
||||
|
||||
//处理原来材料分数格式
|
||||
if ("根".equals(processRoute.getBomUnit())) {
|
||||
bomDetails.setDenominator(processRoute.getDiscUsage());
|
||||
bomDetails.setQuantity(1.0);
|
||||
}
|
||||
// 根据 RawMaterialCode 判断是否外购
|
||||
if (isOutsourced(processRoute.getRawMaterialCode())) {
|
||||
bomDetails.setStats("外购");
|
||||
@ -464,7 +481,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
}
|
||||
|
||||
bomDetails.setMaterial(processRoute.getBomMaterial());
|
||||
bomDetails.setDenominator(1.0); // 假设分母为 1
|
||||
bomDetails.setDenominator(1.0);
|
||||
return bomDetails;
|
||||
}
|
||||
|
||||
@ -780,7 +797,17 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
public List<ProcessRouteXuDTO> getProcessRoute(String rooteProdet) {
|
||||
//查出所有的带工序的物料
|
||||
LambdaQueryWrapper<ProcessRoute> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessRoute::getRouteDescription, rooteProdet).ne(ProcessRoute::getMaterialName, "").isNotNull(ProcessRoute::getMaterialName).ne(ProcessRoute::getMaterialCode, "").isNotNull(ProcessRoute::getMaterialCode).ne(ProcessRoute::getProcessNo, "").isNotNull(ProcessRoute::getProcessNo).ne(ProcessRoute::getProcessName, "").isNotNull(ProcessRoute::getProcessName).ne(ProcessRoute::getWorkCenter, "").isNotNull(ProcessRoute::getWorkCenter).ne(ProcessRoute::getProcessControl, "").isNotNull(ProcessRoute::getProcessControl).ne(ProcessRoute::getActivityDuration, "").isNotNull(ProcessRoute::getActivityDuration).ne(ProcessRoute::getActivityUnit, "").isNotNull(ProcessRoute::getActivityUnit);
|
||||
wrapper.eq(ProcessRoute::getRouteDescription, rooteProdet).ne(ProcessRoute::getMaterialName, "")
|
||||
.ne(ProcessRoute::getProcessName, "按图订制")
|
||||
.isNotNull(ProcessRoute::getMaterialName).ne(ProcessRoute::getMaterialCode, "")
|
||||
.isNotNull(ProcessRoute::getMaterialCode).ne(ProcessRoute::getProcessNo, "")
|
||||
.isNotNull(ProcessRoute::getProcessNo).ne(ProcessRoute::getProcessName, "")
|
||||
.isNotNull(ProcessRoute::getProcessName).ne(ProcessRoute::getWorkCenter, "")
|
||||
.isNotNull(ProcessRoute::getWorkCenter).ne(ProcessRoute::getProcessControl, "")
|
||||
.isNotNull(ProcessRoute::getProcessControl).ne(ProcessRoute::getActivityDuration, "")
|
||||
.isNotNull(ProcessRoute::getActivityDuration).ne(ProcessRoute::getActivityUnit, "")
|
||||
.isNotNull(ProcessRoute::getActivityUnit);
|
||||
|
||||
List<ProcessRoute> processRoutes = baseMapper.selectList(wrapper);
|
||||
// 存储按物料编码分组的 ProcessRouteXuDTO
|
||||
Map<String, ProcessRouteXuDTO> groupedRoutes = new HashMap<>();
|
||||
@ -1041,9 +1068,6 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
|
||||
/**
|
||||
* 更新计划订单
|
||||
*
|
||||
* @param rooteProdet
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Model> updateProcessPlan(String rooteProdet) {
|
||||
@ -1086,28 +1110,88 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
QueryWrapper<ProcessInfo> processInfoQueryWrapper = new QueryWrapper<>();
|
||||
processInfoQueryWrapper.select("DISTINCT process_name").like("process_name", query);
|
||||
List<ProcessInfo> processInfoList = processInfoMapper.selectList(processInfoQueryWrapper);
|
||||
if (processInfoList == null){
|
||||
if (processInfoList == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
// 过滤掉 null 值并转换为字符串
|
||||
return processInfoList.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(ProcessInfo::getProcessName) // 获取 processName 字段
|
||||
.filter(Objects::nonNull) // 过滤掉 null 值
|
||||
.distinct() // 去重
|
||||
.collect(Collectors.toList());
|
||||
.filter(Objects::nonNull)
|
||||
.map(ProcessInfo::getProcessName) // 获取 processName 字段
|
||||
.filter(Objects::nonNull) // 过滤掉 null 值
|
||||
.distinct() // 去重
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addRoute(List<ProcessRoute> list) {
|
||||
//根据下标重置工序号 10 20 30 40
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
list.get(i).setProcessNo((long) ((i + 1) * 10));
|
||||
}
|
||||
return baseMapper.insertBatch(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询材料bom
|
||||
*/
|
||||
@Override
|
||||
public List<MaterialBom> getProcessMaterialList(ProcessRoute processRoute) {
|
||||
if (processRoute == null) {
|
||||
logger.error("ProcessRoute is null");
|
||||
throw new IllegalArgumentException("ProcessRoute cannot be null");
|
||||
}
|
||||
|
||||
String materialCode = processRoute.getMaterialCode();
|
||||
String materialName = processRoute.getMaterialName();
|
||||
if (materialCode == null || materialName == null) {
|
||||
logger.error("MaterialCode or MaterialName is null");
|
||||
throw new IllegalArgumentException("MaterialCode and MaterialName cannot be null");
|
||||
}
|
||||
|
||||
|
||||
QueryWrapper<MaterialBom> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("parent_material_code", processRoute.getMaterialCode());
|
||||
wrapper.eq("parent_material_name", processRoute.getMaterialName());
|
||||
|
||||
return materialBomMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除工序
|
||||
*/
|
||||
@Override
|
||||
public List<ProcessRoute> deleteRoute(ProcessRoute processRoute) {
|
||||
int rowsAffected = baseMapper.deleteById(processRoute.getId());
|
||||
if (rowsAffected > 0) {
|
||||
//获取删除后其他的 工序,然后更新工序号
|
||||
LambdaQueryWrapper<ProcessRoute> wrapper = new LambdaQueryWrapper<>();
|
||||
log.info("Querying ProcessRoute with routeDescription: {}, materialCode: {}, materialName: {}",
|
||||
processRoute.getRouteDescription(),
|
||||
processRoute.getMaterialCode(),
|
||||
processRoute.getMaterialName());
|
||||
wrapper.eq(ProcessRoute::getRouteDescription, processRoute.getRouteDescription())
|
||||
.eq(ProcessRoute::getMaterialCode, processRoute.getMaterialCode())
|
||||
.eq(ProcessRoute::getMaterialName, processRoute.getMaterialName())
|
||||
.ne(ProcessRoute::getProcessNo,null);
|
||||
List<ProcessRoute> routeList = baseMapper.selectList(wrapper);
|
||||
|
||||
//工序号升序排序
|
||||
routeList.sort(Comparator.comparing(ProcessRoute::getProcessNo));
|
||||
|
||||
for (int i = 0; i < routeList.size(); i++) {
|
||||
routeList.get(i).setProcessNo((long) (i + 1) * 10);
|
||||
}
|
||||
//批量更新
|
||||
baseMapper.insertOrUpdateBatch(routeList);
|
||||
return routeList;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取计划订单编号,然后获取计划订单详情 单据内码 行内码
|
||||
* @param rooteProdet
|
||||
* @return
|
||||
*/
|
||||
public List<Model> getSelecPlan(String rooteProdet) {
|
||||
List<PlanOrderVo> planOrderList = getSelectProceOrder(rooteProdet);
|
||||
@ -1121,7 +1205,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("FormId", "SFC_OperationPlanning");
|
||||
json.addProperty("FieldKeys", "FID,FSubEntity_FDetailID,FProductId.FNumber,FOperNumber,FEntity_FEntryID,FProcessId.FName,FSeqNumber,FSeqName,FPlanStartTime,FPlanFinishTime," +
|
||||
"FOperPlanStartTime,FOperPlanFinishTime");
|
||||
"FOperPlanStartTime,FOperPlanFinishTime");
|
||||
|
||||
JsonArray filterString = new JsonArray();
|
||||
JsonObject filterObject = new JsonObject();
|
||||
@ -1144,7 +1228,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
try {
|
||||
String resultJson = String.valueOf(client.billQuery(jsonData));
|
||||
System.out.println(
|
||||
"生成查询计划订单查询 " + planOrder.getFBillNo() + " 的结果: " + resultJson
|
||||
"生成查询计划订单查询 " + planOrder.getFBillNo() + " 的结果: " + resultJson
|
||||
);
|
||||
JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class);
|
||||
if (jsonArray == null || jsonArray.size() == 0) {
|
||||
@ -1187,16 +1271,16 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
|
||||
|
||||
// 获取或创建 FEntity 对象
|
||||
FEntity fEntity = model.getFEntity().stream()
|
||||
.filter(entity -> entity.getFEntryID() == dto.getFEntity_FEntryID())
|
||||
.findFirst()
|
||||
.orElseGet(() -> {
|
||||
FEntity newFEntity = new FEntity();
|
||||
newFEntity.setFEntryID(dto.getFEntity_FEntryID());
|
||||
newFEntity.setFSeqNumber(dto.getFSeqNumber());
|
||||
newFEntity.setFSeqName(dto.getFSeqName());
|
||||
model.getFEntity().add(newFEntity);
|
||||
return newFEntity;
|
||||
});
|
||||
.filter(entity -> entity.getFEntryID() == dto.getFEntity_FEntryID())
|
||||
.findFirst()
|
||||
.orElseGet(() -> {
|
||||
FEntity newFEntity = new FEntity();
|
||||
newFEntity.setFEntryID(dto.getFEntity_FEntryID());
|
||||
newFEntity.setFSeqNumber(dto.getFSeqNumber());
|
||||
newFEntity.setFSeqName(dto.getFSeqName());
|
||||
model.getFEntity().add(newFEntity);
|
||||
return newFEntity;
|
||||
});
|
||||
|
||||
// 创建并添加 FSubEntity 对象
|
||||
FSubEntity fSubEntity = new FSubEntity();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user