|
@@ -120,48 +120,6 @@ public class BizDayworkItemController extends BaseController {
|
|
|
@GetMapping("/list")
|
|
|
@Log(title = "查询报工记录", businessType = BusinessType.SELECT)
|
|
|
public TableDataInfo list(BizDayworkItem bizDayworkItem) {
|
|
|
-// SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
-//// startPage();
|
|
|
-// bizDayworkItem.setUserId(user.getUserId());
|
|
|
-// List<BizDayworkItem> list = bizDayworkItemService.getList(bizDayworkItem);
|
|
|
-// //人员只能看到最近的一条报工记录中工序的报工
|
|
|
-// List<BizDayworkItem> itemList = new ArrayList<>();
|
|
|
-// Long processId = 0L;
|
|
|
-// if (list.size() > 0) {
|
|
|
-// processId = list.get(0).getProcessId();
|
|
|
-// }
|
|
|
-// /** 根据当前工序查询下一道工序 */
|
|
|
-// for (BizDayworkItem item : list) {
|
|
|
-// for (int i = 0; i < item.getProcessSequence().size(); i++) {
|
|
|
-// if ((i + 1) < item.getProcessSequence().size()) {
|
|
|
-// if (item.getProcessId().equals(item.getProcessSequence().get(i).getId())) {
|
|
|
-//
|
|
|
-// item.setNextProcess(item.getProcessSequence().get(i + 1));
|
|
|
-// //查询出非本工段的第一道序
|
|
|
-// for (BizDeptProcess deptProcess : item.getProcessSequence().get(i + 1).getDeptProcess()) {
|
|
|
-// if (!deptProcess.getDeptId().equals(item.getDeptId())) {
|
|
|
-// item.setNextDeptProcess(item.getNextProcess().getProcessAlias() + "、" + deptProcess.getProcessAlias());
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// // 设置上一工段,周转用
|
|
|
-// List<BizDayworkItem> dayworkItemList = bizDayworkItemService.query().lt("status", 4).eq("process_id", item.getProcessId()).list();
|
|
|
-// for (int i = 0; i < dayworkItemList.size(); i++) {
|
|
|
-// if (dayworkItemList.get(i).getDeptName() != null && !"".equals(dayworkItemList.get(i).getDeptName())) {
|
|
|
-// item.setPreDeptName(dayworkItemList.get(i).getDeptName());
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// //只保留当前工序的报工记录
|
|
|
-// if (processId.equals(item.getProcessId())) {
|
|
|
-// itemList.add(item);
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// return getDataTable(itemList);
|
|
|
//0420
|
|
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
// startPage();
|
|
@@ -245,6 +203,89 @@ public class BizDayworkItemController extends BaseController {
|
|
|
|
|
|
return getDataTable(itemList);
|
|
|
}
|
|
|
+ @GetMapping("/assistList")
|
|
|
+ @Log(title = "查询报工记录", businessType = BusinessType.SELECT)
|
|
|
+ public TableDataInfo assistList(BizDayworkItem bizDayworkItem) {
|
|
|
+ //0420
|
|
|
+ List<BizDayworkItem> list = bizDayworkItemService.getList(bizDayworkItem);
|
|
|
+ //如果是废品回用,ProcessSequence从新表拿
|
|
|
+ if(bizDayworkItem.getIsAmend() ==1 ||bizDayworkItem.getIsWasteRecycling() ==1 ) {
|
|
|
+ BizLot bizLot = bizLotService.query().eq("id",bizDayworkItem.getLotId()).list().get(0);
|
|
|
+ List<BizLotTechnologicalProcessDetail> bizTechnologicalWasteRecyclingDetails = bizLotTechnologicalProcessDetailService.query().eq("lot_technological_process_id",bizLot.getTechnologicalProcessId()).orderByAsc("process_step_number").list();
|
|
|
+ BizLotTechnologicalProcessDetail lotTechnologicalProcessDetail = bizLotTechnologicalProcessDetailService.query().eq("id", list.get(0).getTechnologicalProcessDetailId()).one();
|
|
|
+ BizTechnologicalProcessDetail bizTechnologicalProcessDetail = new BizTechnologicalProcessDetail();
|
|
|
+ bizTechnologicalProcessDetail.setProcessId(lotTechnologicalProcessDetail.getProcessId());
|
|
|
+ bizTechnologicalProcessDetail.setProcessAlias(lotTechnologicalProcessDetail.getProcessAlias());
|
|
|
+ bizTechnologicalProcessDetail.setProcessStepNumber(lotTechnologicalProcessDetail.getProcessStepNumber());
|
|
|
+ bizTechnologicalProcessDetail.setProcessCode(lotTechnologicalProcessDetail.getProcessCode());
|
|
|
+ bizTechnologicalProcessDetail.setProductId(lotTechnologicalProcessDetail.getProductId());
|
|
|
+
|
|
|
+
|
|
|
+ //查询所有工段下的工序
|
|
|
+ List<BizDeptProcess> deptProcessList = bizDeptProcessService.query().list();
|
|
|
+ List<BizProcess> processList = new ArrayList<>();
|
|
|
+ for(BizLotTechnologicalProcessDetail bizTechnologicalWasteRecyclingDetail : bizTechnologicalWasteRecyclingDetails) {
|
|
|
+ BizProcess process = new BizProcess();
|
|
|
+ process.setId(bizTechnologicalWasteRecyclingDetail.getProcessId());
|
|
|
+ process.setProcessCode(bizTechnologicalWasteRecyclingDetail.getProcessCode());
|
|
|
+ process.setProcessStepNumber(bizTechnologicalWasteRecyclingDetail.getProcessStepNumber());
|
|
|
+ process.setProcessAlias(bizTechnologicalWasteRecyclingDetail.getProcessAlias());
|
|
|
+ process.setTechnologicalProcessDetailId(bizTechnologicalWasteRecyclingDetail.getId());
|
|
|
+ process.setDeptProcess(deptProcessList.stream().filter(deptProcess -> deptProcess.getProcessId().equals(bizTechnologicalWasteRecyclingDetail.getProcessId())).collect(Collectors.toList()));
|
|
|
+ processList.add(process);
|
|
|
+ }
|
|
|
+ list.stream().forEach(item -> {item.setProcessSequence(processList);});
|
|
|
+ if(bizDayworkItem.getProcessStepNumber() != null) {
|
|
|
+ list.forEach(item -> {
|
|
|
+ item.setProcess(
|
|
|
+ item.getProcessSequence().stream()
|
|
|
+ .filter(process -> process.getProcessStepNumber().equals(bizDayworkItem.getProcessStepNumber()))
|
|
|
+ .findFirst()
|
|
|
+ .orElse(null) // 如果未找到匹配的 process,则设置为 null
|
|
|
+ );
|
|
|
+ item.setTechnologicalProcessDetail(bizTechnologicalProcessDetail);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //人员只能看到最近的一条报工记录中工序的报工
|
|
|
+ List<BizDayworkItem> itemList = new ArrayList<>();
|
|
|
+ String processStepNumber = "";
|
|
|
+ if (list.size() > 0) {
|
|
|
+ processStepNumber = list.get(0).getProcessStepNumber();
|
|
|
+ }
|
|
|
+ /** 根据当前工序查询下一道工序 */
|
|
|
+ for (BizDayworkItem item : list) {
|
|
|
+ for (int i = 0; i < item.getProcessSequence().size(); i++) {
|
|
|
+ if ((i + 1) < item.getProcessSequence().size()) {
|
|
|
+ if (item.getProcessStepNumber().equals(item.getProcessSequence().get(i).getProcessStepNumber())) {
|
|
|
+
|
|
|
+ item.setNextProcess(item.getProcessSequence().get(i + 1));
|
|
|
+ //查询出非本工段的第一道序
|
|
|
+ for (BizDeptProcess deptProcess : item.getProcessSequence().get(i + 1).getDeptProcess()) {
|
|
|
+ if (!deptProcess.getDeptId().equals(item.getDeptId())) {
|
|
|
+ item.setNextDeptProcess(item.getNextProcess().getProcessAlias() + "、" + deptProcess.getProcessAlias());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 设置上一工段,周转用
|
|
|
+ List<BizDayworkItem> dayworkItemList = bizDayworkItemService.query().lt("status", 4).eq("lot_id",item.getLotId()).eq("process_step_number", item.getProcessStepNumber()).list();
|
|
|
+ for (int i = 0; i < dayworkItemList.size(); i++) {
|
|
|
+ if (dayworkItemList.get(i).getDeptName() != null && !"".equals(dayworkItemList.get(i).getDeptName())) {
|
|
|
+ item.setPreDeptName(dayworkItemList.get(i).getDeptName());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //只保留当前工序的报工记录
|
|
|
+ if (processStepNumber.equals(item.getProcessStepNumber())) {
|
|
|
+ itemList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return getDataTable(itemList);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
@@ -739,9 +780,9 @@ public class BizDayworkItemController extends BaseController {
|
|
|
bizDayworkItem.setLotId(daywork.getLotId());
|
|
|
bizDayworkItem.setLotCode(daywork.getLotCode());
|
|
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
- bizDayworkItem.setUserId(user.getUserId());
|
|
|
- bizDayworkItem.setUserName(user.getUserName());
|
|
|
- bizDayworkItem.setNickName(user.getNickName());
|
|
|
+// bizDayworkItem.setUserId(user.getUserId());
|
|
|
+// bizDayworkItem.setUserName(user.getUserName());
|
|
|
+// bizDayworkItem.setNickName(user.getNickName());
|
|
|
String[] statusArr = {"0", "4", "5", "7"};
|
|
|
if (Arrays.asList(statusArr).contains(bizDayworkItem.getStatus())) {
|
|
|
bizDayworkItem.setWorkingHours(0L);
|
|
@@ -1073,6 +1114,38 @@ public class BizDayworkItemController extends BaseController {
|
|
|
bizDayworkItem.setUserId(user.getUserId());
|
|
|
bizDayworkItem.setUserName(user.getUserName());
|
|
|
bizDayworkItem.setNickName(user.getNickName());
|
|
|
+// bizDayworkItem.setTenantId(Long.valueOf(tenantId));
|
|
|
+ boolean b = bizDayworkItemService.saveOrUpdate(bizDayworkItem);
|
|
|
+ if (!bizDayworkItem.getCollaborationList().isEmpty()) {
|
|
|
+ for (BizDayworkItemCollaboration collaboration : bizDayworkItem.getCollaborationList()) {
|
|
|
+ collaboration.setDayworkId(bizDayworkItem.getDayworkId());
|
|
|
+ collaboration.setDayworkItemId(bizDayworkItem.getId());
|
|
|
+ collaboration.insert();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 判断开始报工的批次在不在滚筒,如果在开始报工后制动鼓解绑载具
|
|
|
+ SysDept dept = sysDeptMapper.selectDeptById(bizDayworkItem.getDeptId());
|
|
|
+ if (dept.getAutoUnbind() == 1) {
|
|
|
+ List<BizDayworkCarrier> oldList = bizDayworkCarrierService.query().eq("daywork_id", bizDayworkItem.getDayworkId()).eq("process_inspection_id", 0L).eq("is_changed", 0).list();
|
|
|
+ List<BizDayworkCarrier> newList = oldList.stream().collect(Collectors.toList());
|
|
|
+ newList.forEach(item -> item.setIsChanged(1));
|
|
|
+ saveOrUpdateCarrierBatch(bizDayworkCarrierService, newList, oldList);
|
|
|
+ }
|
|
|
+ return toAjax(b);
|
|
|
+ }
|
|
|
+ @Log(title = "批量新增报工记录", businessType = BusinessType.INSERT)
|
|
|
+ @Transactional
|
|
|
+ @PostMapping("/saveAssistBatch")
|
|
|
+ public AjaxResult saveAssistBatch(@RequestBody BizDayworkItem bizDayworkItem) throws NoSuchFieldException, IllegalAccessException {
|
|
|
+ // String tenantId = request.getHeader("tenantId");
|
|
|
+ BizDaywork daywork = bizDayworkService.getById(bizDayworkItem.getDayworkId());
|
|
|
+ if(daywork.getIsAmend()==1){
|
|
|
+ bizDayworkItem.setFormDayworkItemId(1l);
|
|
|
+ }
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ bizDayworkItem.setUserId(user.getUserId());
|
|
|
+ bizDayworkItem.setUserName(user.getUserName());
|
|
|
+ bizDayworkItem.setNickName(user.getNickName());
|
|
|
// bizDayworkItem.setTenantId(Long.valueOf(tenantId));
|
|
|
boolean b = bizDayworkItemService.saveOrUpdate(bizDayworkItem);
|
|
|
if (!bizDayworkItem.getCollaborationList().isEmpty()) {
|
|
@@ -1442,6 +1515,102 @@ public class BizDayworkItemController extends BaseController {
|
|
|
}
|
|
|
return success();
|
|
|
}
|
|
|
+ @Log(title="外协周转申请")
|
|
|
+ @Transactional
|
|
|
+ @PostMapping("/turnoverOutsourceAssist")
|
|
|
+ public AjaxResult turnoverOutsourceAssist(@RequestBody BizDayworkItem bizDayworkItem) throws NoSuchFieldException,IllegalAccessException {
|
|
|
+ //判断当前是否在盘点
|
|
|
+ BizTakeStockPeriod bizTakeStockPeriod = bizTakeStockPeriodService.query().eq("status",1).one();
|
|
|
+ if(bizTakeStockPeriod!=null && bizTakeStockPeriod.getStatus() == 1) {
|
|
|
+ return error("当前在盘点,禁止投产");
|
|
|
+ }
|
|
|
+ // 设置工时
|
|
|
+ // 获取箱子关联的所有批次
|
|
|
+ boolean batch = true;
|
|
|
+ SysDept sysDept = sysDeptMapper.selectDeptByCode(bizDayworkItem.getDeptCode());
|
|
|
+ bizDayworkItem.setDeptId(sysDept.getDeptId());
|
|
|
+ bizDayworkItem.setDeptName(sysDept.getDeptName());
|
|
|
+ List<BizDayworkCarrier> dayworkCarriers = bizDayworkCarrierService.query().eq("process_inspection_id", 0L).eq("is_changed", 0).eq("daywork_id", bizDayworkItem.getDayworkId()).list();
|
|
|
+ List<BizDayworkCarrier> allCarries = bizDayworkCarrierService.query().eq("is_changed", 0).eq("process_inspection_id", 0L).in("carrier_id", dayworkCarriers.isEmpty() ? Collections.singletonList(0L) : dayworkCarriers.stream().map(BizDayworkCarrier::getCarrierId).collect(Collectors.toList())).list();
|
|
|
+ // 关联批次的所有最后一条报工
|
|
|
+ List<BizDayworkItem> bizDayworkItems = bizDayworkItemService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).in("status", Arrays.asList("0", "1", "2", "3")).orderByDesc("status").orderByDesc("create_time").list();
|
|
|
+ List<BizDayworkItem> bizDayworkItemAll = bizDayworkItemService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).orderByDesc("create_time").list();
|
|
|
+ List<BizDayworkItem> bizDayworkItemList = bizDayworkItemService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
|
|
|
+ List<BizDaywork> bizDayworks = bizDayworkService.query().in("id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
|
|
|
+ for (BizDaywork v : bizDayworks) {
|
|
|
+ BizDayworkItem lastItem = bizDayworkItems.stream().filter(l -> l.getDayworkId().equals(v.getId())).findFirst().orElse(null);
|
|
|
+ //不筛选status,当前批次最新一条报工
|
|
|
+ BizDayworkItem lastItemAll = bizDayworkItemAll.stream().filter(l -> l.getDayworkId().equals(v.getId())).findFirst().orElse(null);
|
|
|
+ //为了防止该工序已经周转到下一道序,且已经干了,所以判断如果当前processStepNumber和最新一条的步骤是否相同
|
|
|
+ if(lastItemAll != null && (!lastItemAll.getProcessStepNumber().equals(bizDayworkItem.getProcessStepNumber()) || (lastItemAll.getStatus().equals("4") || lastItemAll.getStatus().equals("5") || lastItemAll.getStatus().equals("7")))) {
|
|
|
+ return error( v.getLotCode()+"批次已周转,请勿重复操作");
|
|
|
+ }
|
|
|
+ if (lastItem != null && lastItem.getStatus().equals("3")) {
|
|
|
+ List<BizDayworkItem> allItem = bizDayworkItemList.stream().filter(l -> l.getDayworkId().equals(v.getId()) && l.getTechnologicalProcessDetailId().equals(lastItem.getTechnologicalProcessDetailId())).collect(Collectors.toList());
|
|
|
+ Integer lot = allItem.stream().mapToInt(BizDayworkItem::getQualifiedNum).sum();
|
|
|
+ BizDayworkItem bizItem = new BizDayworkItem();
|
|
|
+ bizItem.setDayworkId(lastItem.getDayworkId());
|
|
|
+ bizItem.setProcessId(lastItem.getProcessId());
|
|
|
+ bizItem.setTechnologicalProcessDetailId(lastItem.getTechnologicalProcessDetailId());
|
|
|
+ bizItem.setStatus(bizDayworkItem.getStatus());
|
|
|
+ bizItem.setFromDeptId(lastItem.getDeptId());
|
|
|
+ bizItem.setFromDeptName(lastItem.getDeptName());
|
|
|
+ if (bizDayworkItem.getStatus().equals("7")||bizDayworkItem.getStatus().equals("4")) {
|
|
|
+ v.setDeptId(bizDayworkItem.getDeptId());
|
|
|
+ v.setProcessQualifiedNum(v.getTemporaryProcessQualifiedNum());
|
|
|
+ bizDayworkService.updateById(v);
|
|
|
+ }
|
|
|
+ // 周转后如果是车间内的,状态为7,则需要从当前资源组中删除被邀请人
|
|
|
+ if(bizDayworkItem.getStatus().equals("7") || bizDayworkItem.getStatus().equals("5")) {
|
|
|
+ v.setProtemProcessId(lastItem.getProcessId());
|
|
|
+ v.setProtemProcessStepNumber(lastItem.getProcessStepNumber());
|
|
|
+ // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
|
|
|
+ bizProductionResourceGroupDetailService.deleTemporanyPeople(v);
|
|
|
+ }
|
|
|
+ if(v.getIsAmend()==1){
|
|
|
+ bizItem.setFormDayworkItemId(1L);
|
|
|
+ }
|
|
|
+ //当前工序第一条报工
|
|
|
+ BizDayworkItem firstDayworkItem = bizDayworkItems.stream().filter(l -> l.getProcessStepNumber().equals(bizDayworkItem.getProcessStepNumber())&& l.getDayworkId().equals(v.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).findFirst().orElse(null);
|
|
|
+ bizItem.setProdNum(v.getTemporaryProcessQualifiedNum());
|
|
|
+ bizItem.setLotId(v.getLotId());
|
|
|
+ bizItem.setLotCode(v.getLotCode());
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ bizItem.setUserId(firstDayworkItem.getUserId());
|
|
|
+ bizItem.setUserName(firstDayworkItem.getUserName());
|
|
|
+ bizItem.setNickName(firstDayworkItem.getNickName());
|
|
|
+ //协作信息
|
|
|
+ bizItem.setAssistNickName(user.getNickName());
|
|
|
+ bizItem.setAssistUserId(user.getUserId());
|
|
|
+ bizItem.setAssistUserName(user.getUserName());
|
|
|
+ bizItem.setIsSpecial(lastItem.getIsSpecial());
|
|
|
+ bizItem.setSpecialIsFirst(lastItem.getSpecialIsFirst());
|
|
|
+ bizItem.setWorkingHours(0L);
|
|
|
+ bizItem.setTenantId(lastItem.getTenantId());
|
|
|
+ bizItem.setProductionPlanDetailId(lastItem.getProductionPlanDetailId());
|
|
|
+ bizItem.setProductionPlanId(lastItem.getProductionPlanId());
|
|
|
+ bizItem.setProductionPlanDetailSubDetailId(lastItem.getProductionPlanDetailSubDetailId());
|
|
|
+ bizItem.setProductionPlanDetailSubDetailEquipmentId(lastItem.getProductionPlanDetailSubDetailEquipmentId());
|
|
|
+ bizItem.setQualifiedNum(lot);
|
|
|
+ bizItem.setTechnologicalProcessId(lastItem.getTechnologicalProcessId());
|
|
|
+ bizItem.setProdNum(lot);
|
|
|
+ bizItem.setEquipmentDetailId(lastItem.getEquipmentDetailId());
|
|
|
+ bizItem.setEquipmentDetailCode(lastItem.getEquipmentDetailCode());
|
|
|
+ bizItem.setDeptId(bizDayworkItem.getDeptId());
|
|
|
+ bizItem.setDeptName(bizDayworkItem.getDeptName());
|
|
|
+ bizItem.setStartTime(bizDayworkItem.getStartTime());
|
|
|
+ bizItem.setTurnoverType(bizDayworkItem.getTurnoverType());
|
|
|
+ bizItem.setTurnoverId(bizDayworkItem.getTurnoverId());
|
|
|
+ bizItem.setTurnoverArea(bizDayworkItem.getTurnoverArea());
|
|
|
+ bizItem.setPlaceId(bizDayworkItem.getPlaceId());
|
|
|
+ bizItem.setPlace(bizDayworkItem.getPlace());
|
|
|
+ bizItem.setProcessStepNumber(lastItem.getProcessStepNumber());
|
|
|
+ batch = batch && bizDayworkItemService.saveOrUpdate(bizItem);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return success();
|
|
|
+ }
|
|
|
|
|
|
// 周转申请都走这个方法,不再走原来的add方法
|
|
|
@Log(title="周转申请")
|
|
@@ -1614,6 +1783,182 @@ public class BizDayworkItemController extends BaseController {
|
|
|
bizDayworkItemExamineService.saveBatch(needAddList);
|
|
|
return toAjax(batch);
|
|
|
}
|
|
|
+ @Log(title="周转申请")
|
|
|
+ @Transactional
|
|
|
+ @PostMapping("/turnoverAssist")
|
|
|
+ public AjaxResult turnoverAssist(@RequestBody BizDayworkItem bizDayworkItem) throws NoSuchFieldException,IllegalAccessException {
|
|
|
+ //判断当前是否在盘点
|
|
|
+ BizTakeStockPeriod bizTakeStockPeriod = bizTakeStockPeriodService.query().eq("status",1).one();
|
|
|
+ if(bizTakeStockPeriod!=null && bizTakeStockPeriod.getStatus() == 1) {
|
|
|
+ return error("当前在盘点,禁止投产");
|
|
|
+ }
|
|
|
+ // 设置工时
|
|
|
+ // 获取箱子关联的所有批次
|
|
|
+ boolean batch = true;
|
|
|
+// bizDayworkItem.getCarrierId();
|
|
|
+ // 根据 daywork_item 中的 daywork_id,获取到所有未解绑的【daywork 与 箱子】的集合,通过这个集合,可以知道该批次下绑定了多少个箱子
|
|
|
+ List<BizDayworkCarrier> dayworkCarriers = bizDayworkCarrierService.query().eq("is_changed", 0).eq("process_inspection_id", 0L).eq("daywork_id", bizDayworkItem.getDayworkId()).list();
|
|
|
+ // 再根据上面获得到的数据,通过箱子的id(carrier_id),再进行查找,有多少个批次与该箱子绑定,这是因为存在一箱多批的情况。这样就获得到了所有的批次
|
|
|
+ List<BizDayworkCarrier> allCarries = bizDayworkCarrierService.query().eq("process_inspection_id", 0L).eq("is_changed", 0).in("carrier_id", dayworkCarriers.isEmpty() ? Collections.singletonList(0L) : dayworkCarriers.stream().map(BizDayworkCarrier::getCarrierId).collect(Collectors.toList())).list();
|
|
|
+
|
|
|
+ // 根据获取到的所有批次的id,查询出所有批次的报工信息,并且状态是【"0", "1", "2", "3"】,按状态值倒序、创建日期的倒序,对数据进行排序,得到的数据是还未周转的数据。
|
|
|
+ // 后续会通过该集合,获取某批次的最后一条报工信息
|
|
|
+ List<BizDayworkItem> bizDayworkItems = bizDayworkItemService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).in("status", Arrays.asList("0", "1", "2", "3")).orderByDesc("status").orderByDesc("create_time").list();
|
|
|
+ List<BizDayworkItem> bizDayworkItemsAll = bizDayworkItemService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).orderByDesc("create_time").list();
|
|
|
+ // 根据获取到的所有批次的id,查询出所有批次的报工信息,不需要判断状态
|
|
|
+ List<BizDayworkItem> bizDayworkItemList = bizDayworkItemService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
|
|
|
+ // 获取所有的 daywork 数据集合
|
|
|
+ List<BizDaywork> bizDayworks = bizDayworkService.query().in("id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
|
|
|
+ //查询分选-包装的审核申请
|
|
|
+ List<BizDayworkItemExamine> dayworkExamineList = bizDayworkItemExamineService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
|
|
|
+ //需要新增的审核申请集合
|
|
|
+ List<BizDayworkItemExamine> needAddList = new ArrayList<>();
|
|
|
+ // 遍历 daywork 数据集合
|
|
|
+ for (BizDaywork v : bizDayworks) {
|
|
|
+ // 获取该批次的最后一条报工
|
|
|
+ BizDayworkItem lastItem = bizDayworkItems.stream().filter(l -> l.getDayworkId().equals(v.getId())).findFirst().orElse(null);
|
|
|
+ //批次所有报工,判断是否已经周转了,如果周转返回报错信息
|
|
|
+ BizDayworkItem lastItemAll = bizDayworkItemsAll.stream().filter(l -> l.getDayworkId().equals(v.getId())).findFirst().orElse(null);
|
|
|
+ //为了防止该工序已经周转到下一道序,且已经干了,所以判断如果当前processStepNumber和最新一条的步骤是否相同
|
|
|
+ if(lastItemAll != null && (!lastItemAll.getProcessStepNumber().equals(bizDayworkItem.getProcessStepNumber()) || (lastItemAll.getStatus().equals("4") || lastItemAll.getStatus().equals("5") || lastItemAll.getStatus().equals("7")))) {
|
|
|
+ return error( v.getLotCode()+"批次已周转,请勿重复操作");
|
|
|
+ }
|
|
|
+ // 如果最后一条报工信息存在,并且报工状态为:3,则说明该报工已经工序完成
|
|
|
+ if (lastItem != null && lastItem.getStatus().equals("3")) {
|
|
|
+ // 根据当前批次的id,获取该批次下的工序id与最后一条报工的工序id相同的所有报工信息
|
|
|
+ // 因为同一工序可能存在多次报工,所以需要获取该批次下,该工序的所有报工信息,后续会进行合格数的统计
|
|
|
+ List<BizDayworkItem> allItem = bizDayworkItemList.stream().filter(l -> l.getDayworkId().equals(v.getId()) && l.getTechnologicalProcessDetailId().equals(lastItem.getTechnologicalProcessDetailId())).collect(Collectors.toList());
|
|
|
+ // 根据获得到的某工序的报工信息,进行合格数统计
|
|
|
+ Integer lot = allItem.stream().mapToInt(BizDayworkItem::getQualifiedNum).sum();
|
|
|
+
|
|
|
+ // 实例化一个报工信息对象,用于保存【周转】的报工记录
|
|
|
+ BizDayworkItem bizItem = new BizDayworkItem();
|
|
|
+ bizItem.setDayworkId(lastItem.getDayworkId());
|
|
|
+ bizItem.setProcessId(lastItem.getProcessId());
|
|
|
+ bizItem.setTechnologicalProcessDetailId(lastItem.getTechnologicalProcessDetailId());
|
|
|
+ bizItem.setStatus(bizDayworkItem.getStatus());
|
|
|
+ bizItem.setFromDeptId(lastItem.getDeptId());
|
|
|
+ bizItem.setFromDeptName(lastItem.getDeptName());
|
|
|
+ //添加分选-包装的审核申请
|
|
|
+ if(bizDayworkItem.getIsNextPacking()) {
|
|
|
+ //如果有审核申请,则删除审核申请,重新新增
|
|
|
+ if(dayworkExamineList.size() > 0) {
|
|
|
+ //删除多余的审核申请
|
|
|
+ bizDayworkItemExamineService.removeBatchByIds(dayworkExamineList);
|
|
|
+ }
|
|
|
+ //新增审核申请
|
|
|
+ BizDayworkItemExamine examine = new BizDayworkItemExamine();
|
|
|
+ examine.setDayworkId(v.getId());
|
|
|
+ examine.setDayworkItemId(lastItem.getId());
|
|
|
+ examine.setDeptId(bizDayworkItem.getDeptId());
|
|
|
+ examine.setProductionPlanDetailId(bizDayworkItem.getProductionPlanDetailId());
|
|
|
+ examine.setProductDescription(bizDayworkItem.getProductDescription());
|
|
|
+ examine.setLotId(lastItem.getLotId());
|
|
|
+ examine.setLotCode(v.getLotCode());
|
|
|
+ examine.setProductId(v.getProductId());
|
|
|
+ examine.setTechnologicalProcessId(lastItem.getTechnologicalProcessId());
|
|
|
+ examine.setTechnologicalProcessDetailId(lastItem.getTechnologicalProcessDetailId());
|
|
|
+ examine.setProcessId(lastItem.getProcessId());
|
|
|
+ examine.setProcessAlias(bizDayworkItem.getProcess().getProcessAlias());
|
|
|
+ examine.setStatus(0);
|
|
|
+ needAddList.add(examine);
|
|
|
+ }
|
|
|
+ // 如果报工状态为:7(已送达)或者4(待周转),则需要设置对应的daywork的当前部门id,以及合格数
|
|
|
+ // 这里的状态值4/7,是由前端传递过来的。
|
|
|
+ if (bizDayworkItem.getStatus().equals("7") || bizDayworkItem.getStatus().equals("4")) {
|
|
|
+ v.setDeptId(bizDayworkItem.getDeptId());
|
|
|
+ int sum = bizDayworkItems.stream()
|
|
|
+ .filter(l -> l.getProcessStepNumber().equals(bizDayworkItem.getProcessStepNumber()))
|
|
|
+ .mapToInt(BizDayworkItem::getQualifiedNum) // 假设 getNum 返回一个 int 类型的值
|
|
|
+ .sum();
|
|
|
+ v.setTemporaryProcessQualifiedNum(sum);
|
|
|
+ bizDayworkService.updateById(v);
|
|
|
+ }
|
|
|
+ // 周转后如果是车间内的,状态为7,则需要从当前资源组中删除被邀请人
|
|
|
+ if(bizDayworkItem.getStatus().equals("7") || bizDayworkItem.getStatus().equals("5")) {
|
|
|
+ v.setProtemProcessId(lastItem.getProcessId());
|
|
|
+ v.setProtemProcessStepNumber(lastItem.getProcessStepNumber());
|
|
|
+ // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
|
|
|
+ bizProductionResourceGroupDetailService.deleTemporanyPeople(v);
|
|
|
+ }
|
|
|
+ // 如果是单批单改换,则设置form_daywork_item_id为1,表示没有原来的报工
|
|
|
+ if(v.getIsAmend()==1){
|
|
|
+ bizItem.setFormDayworkItemId(1L);
|
|
|
+ }
|
|
|
+ //当前工序第一条报工
|
|
|
+ BizDayworkItem firstDayworkItem = bizDayworkItems.stream().filter(l -> l.getProcessStepNumber().equals(bizDayworkItem.getProcessStepNumber())&& l.getDayworkId().equals(v.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).findFirst().orElse(null);
|
|
|
+ bizItem.setLotId(v.getLotId());
|
|
|
+ bizItem.setLotCode(v.getLotCode());
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ bizItem.setUserId(firstDayworkItem.getUserId());
|
|
|
+ bizItem.setUserName(firstDayworkItem.getUserName());
|
|
|
+ bizItem.setNickName(firstDayworkItem.getNickName());
|
|
|
+ //协作信息
|
|
|
+ bizItem.setAssistNickName(user.getNickName());
|
|
|
+ bizItem.setAssistUserId(user.getUserId());
|
|
|
+ bizItem.setAssistUserName(user.getUserName());
|
|
|
+ bizItem.setIsSpecial(lastItem.getIsSpecial());
|
|
|
+ bizItem.setSpecialIsFirst(lastItem.getSpecialIsFirst());
|
|
|
+ bizItem.setWorkingHours(0L);
|
|
|
+ bizItem.setDeptId(lastItem.getDeptId());
|
|
|
+ bizItem.setTenantId(lastItem.getTenantId());
|
|
|
+ bizItem.setProductionPlanDetailId(lastItem.getProductionPlanDetailId());
|
|
|
+ bizItem.setProductionPlanId(lastItem.getProductionPlanId());
|
|
|
+ bizItem.setProductionPlanDetailSubDetailId(lastItem.getProductionPlanDetailSubDetailId());
|
|
|
+ bizItem.setProductionPlanDetailSubDetailEquipmentId(lastItem.getProductionPlanDetailSubDetailEquipmentId());
|
|
|
+ bizItem.setQualifiedNum(lot);
|
|
|
+ bizItem.setTechnologicalProcessId(lastItem.getTechnologicalProcessId());
|
|
|
+ bizItem.setProdNum(lot);
|
|
|
+ bizItem.setEquipmentDetailId(lastItem.getEquipmentDetailId());
|
|
|
+ bizItem.setEquipmentDetailCode(lastItem.getEquipmentDetailCode());
|
|
|
+ bizItem.setDeptId(bizDayworkItem.getDeptId());
|
|
|
+ bizItem.setDeptName(bizDayworkItem.getDeptName());
|
|
|
+ bizItem.setStartTime(bizDayworkItem.getStartTime());
|
|
|
+ bizItem.setTurnoverId(bizDayworkItem.getTurnoverId());
|
|
|
+ bizItem.setTurnoverType(bizDayworkItem.getTurnoverType());
|
|
|
+ bizItem.setTurnoverArea(bizDayworkItem.getTurnoverArea());
|
|
|
+ bizItem.setTenantId(bizDayworkItem.getTenantId());
|
|
|
+ bizItem.setPlaceId(bizDayworkItem.getPlaceId());
|
|
|
+ bizItem.setPlace(bizDayworkItem.getPlace());
|
|
|
+ bizItem.setProcessStepNumber(lastItem.getProcessStepNumber());
|
|
|
+ batch = batch && bizDayworkItemService.saveOrUpdate(bizItem);
|
|
|
+ // 自动派活
|
|
|
+ SysDept sysDept = sysDeptMapper.selectDeptById(bizDayworkItem.getDeptId());
|
|
|
+ if (sysDept.getAutoAllocation() == 1) {
|
|
|
+ // 查资源组
|
|
|
+ List<BizProductionResourceGroup> productionResourceGroupList = bizProductionResourceGroupService.list(new QueryWrapper<BizProductionResourceGroup>().eq("dept_id", bizDayworkItem.getDeptId()).eq("is_deactivate", 0));
|
|
|
+
|
|
|
+ //查询是否已经分配资源组
|
|
|
+ BizProductionResourceGroupSubPlan groupSubPlan=new BizProductionResourceGroupSubPlan();
|
|
|
+ groupSubPlan.setDeptId(bizDayworkItem.getDeptId());
|
|
|
+ groupSubPlan.setProductionPlanDetailId(bizDayworkItem.getProductionPlanDetailId());
|
|
|
+
|
|
|
+ List<BizProductionResourceGroupSubPlan> groupSubPlanList = bizProductionResourceGroupSubPlanService.getAotList(groupSubPlan);
|
|
|
+ //如果没分配
|
|
|
+ if(groupSubPlanList.isEmpty()){
|
|
|
+ //查产品id
|
|
|
+ BizProductionPlanDetail productionPlanDetail = bizProductionPlanDetailService.getOne(new QueryWrapper<BizProductionPlanDetail>().eq("id", bizDayworkItem.getProductionPlanDetailId()));
|
|
|
+ //存放保存的subPlanList
|
|
|
+ List<BizProductionResourceGroupSubPlan> subPlanList = new ArrayList<>();
|
|
|
+ for (BizProductionResourceGroup info : productionResourceGroupList) {
|
|
|
+ BizProductionResourceGroupSubPlan subPlan = new BizProductionResourceGroupSubPlan();
|
|
|
+ subPlan.setProductId(productionPlanDetail.getProductId());
|
|
|
+ subPlan.setProductionPlanDetailId(v.getProductionPlanDetailId());
|
|
|
+ subPlan.setTechnologicalProcessId(v.getTechnologicalProcessId());
|
|
|
+ subPlan.setResourceGroupId(info.getId());
|
|
|
+ subPlan.setDeptId(bizDayworkItem.getDeptId());
|
|
|
+ subPlan.setResourceGroupCode(info.getCode());
|
|
|
+ subPlanList.add(subPlan);
|
|
|
+ }
|
|
|
+ bizProductionResourceGroupSubPlanService.saveBatch(subPlanList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ bizDayworkItemExamineService.saveBatch(needAddList);
|
|
|
+ return toAjax(batch);
|
|
|
+ }
|
|
|
@Log(title="内部外协周转申请")
|
|
|
@Transactional
|
|
|
@PostMapping("/turnoverInner")
|