opt:株洲中钨优化

This commit is contained in:
2025-10-16 09:42:08 +08:00
parent 0c1c1ea1ad
commit 2a655d9c8f
15 changed files with 377 additions and 54 deletions

View File

@@ -133,7 +133,8 @@
attr.stor_name,
attr.sect_name,
mater.material_code,
mater.material_name
mater.material_name,
mater.material_model
FROM
md_pb_groupplate ext
INNER JOIN st_ivt_structattr attr ON ext.storagevehicle_code = attr.storagevehicle_code

View File

@@ -41,6 +41,11 @@
AND
stor.stor_code = #{params.stor_code}
</if>
<if test="params.dept_code_list != null and params.dept_code_list.size() > 0">
<foreach collection="params.dept_code_list" item="dept_code" open="AND (" separator="OR" close=")">
sect.sect_code like CONCAT('%', #{dept_code}, '%')
</foreach>
</if>
</where>
ORDER BY sect.update_time Desc
</select>

View File

@@ -49,7 +49,7 @@ public class PdaIosInController {
@PostMapping("/groupPlate")
@Log("物料组盘确认")
@Log("中钨来料入库物料组盘确认")
public ResponseEntity<Object> groupPlate(@RequestBody JSONObject whereJson) {
assertNotBlankJson(whereJson, "请求参数不能为空", "vehicle_code", "material_id","qty");
return new ResponseEntity<>(pdaIosInService.groupPlate(whereJson),HttpStatus.OK);
@@ -104,6 +104,13 @@ public class PdaIosInController {
return new ResponseEntity<>(pdaIosInService.getPdaCallMaterialSect(whereJson), HttpStatus.OK);
}
@PostMapping("/getPdaCallEquipment")
@Log("PDA叫料获取机台")
public ResponseEntity<Object> getPdaCallEquipment(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaIosInService.getPdaCallEquipment(whereJson), HttpStatus.OK);
}
@PostMapping("/getPdaStruct")
@Log("PDA获取库位")

View File

@@ -9,4 +9,14 @@ public class ZwConfirmCheckParamRespondDto {
private String material_code;
private String qty;
private String form_data_code;
/**
* 批次号
*/
private String pcsn;
/**
* 物料类型
*/
private String material_model;
}

View File

@@ -26,7 +26,7 @@ public interface PdaIosInService {
/**
* 组盘
* 中钨来料入库组盘
* @param whereJson {
* storagevehicle_code: 载具编码
* group_id 组盘记录id
@@ -111,6 +111,13 @@ public interface PdaIosInService {
*/
PdaResponse getPdaCallMaterialSect(JSONObject whereJson);
/**
* 叫料查询机台
*
* @return PdaResponse
*/
PdaResponse getPdaCallEquipment(JSONObject whereJson);
/**
* 查询库位
*

View File

@@ -17,6 +17,7 @@ import org.nl.common.domain.vo.SelectItemVo;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.dto.CurrentUser;
import org.nl.wms.basedata_manage.service.*;
import org.nl.wms.basedata_manage.service.dao.*;
import org.nl.wms.basedata_manage.service.dao.mapper.SectattrMapper;
@@ -45,10 +46,15 @@ import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.tasks.BackInTask;
import org.nl.wms.system_manage.service.dept.dao.SysDept;
import org.nl.wms.system_manage.service.dict.dao.Dict;
import org.nl.wms.system_manage.service.dict.dao.mapper.SysDictMapper;
import org.nl.wms.system_manage.service.user.ISysUserService;
import org.nl.wms.system_manage.service.user.dto.SysUserDetail;
import org.nl.wms.system_manage.service.user.dto.UserQuery;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
@@ -118,6 +124,9 @@ public class PdaIosInServiceImpl implements PdaIosInService {
@Autowired
private SectattrMapper sectattrMapper;
@Autowired
private ISysUserService userService;
/**
* 载具服务
*/
@@ -355,8 +364,8 @@ public class PdaIosInServiceImpl implements PdaIosInService {
@Override
public PdaResponse getPdaCallMaterialSect(JSONObject whereJson) {
Map <String,String> selectMap = new HashMap<>();
List<String> deptCodeS = getcurrentUserDepts();
Map <String,Object> selectMap = new HashMap<>();
SchBasePoint schBasePoint = iSchBasePointService.getPointByCode(whereJson.getString("point_code"));
if(schBasePoint != null && StringUtils.isNotBlank(schBasePoint.getRegion_code())){
@@ -364,6 +373,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
}
selectMap.put("stor_code","LT");
selectMap.put("dept_code_list",deptCodeS);
List<SectattrDto> sectattrList = iSectattrService.getAll(selectMap);
List<SelectItemVo> selectList = new ArrayList<>();
sectattrList.forEach(r ->
@@ -372,6 +382,39 @@ public class PdaIosInServiceImpl implements PdaIosInService {
return PdaResponse.requestParamOk(selectList);
}
@Override
public PdaResponse getPdaCallEquipment(JSONObject whereJson) {
List<String> deptCodeS = getcurrentUserDepts();
List<SchBasePoint> schBasePointList = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, whereJson.getString("region_code"))
.eq(SchBasePoint::getIs_used, 1)
.in(SchBasePoint::getCan_material_type,deptCodeS)
.eq(SchBasePoint::getPoint_type, 1)
.orderByAsc(SchBasePoint::getIn_order_seq));
List<SelectItemVo> selectList = new ArrayList<>();
schBasePointList.forEach(r ->
selectList.add(SelectItemVo.builder().text( r.getPoint_code()).value(r.getPoint_code()).build())
);
return PdaResponse.requestParamOk(selectList);
}
private List<String> getcurrentUserDepts() {
CurrentUser currentUser = SecurityUtils.getCurrentUser();
if(null == currentUser ){
throw new BadRequestException("当前用户未登录,请先登录!");
}
UserQuery query = new UserQuery();
PageQuery pageQuery = new PageQuery();
query.setUser_name(currentUser.getUsername());
List<SysUserDetail> sysUserDetails = userService.getUserDetail(query,pageQuery);
if(CollectionUtils.isEmpty(sysUserDetails) ){
throw new BadRequestException("用户异常");
}
List<SysDept> deptS = sysUserDetails.get(0).getDepts();
List<String> deptCodeS = deptS.stream().map(SysDept::getCode).collect(Collectors.toList());
return deptCodeS;
}
@Override
public PdaResponse getPdaStruct(JSONObject whereJson) {
List<Structattr> structattrList = iStructattrService.list(new LambdaQueryWrapper<Structattr>()
@@ -442,6 +485,8 @@ public class PdaIosInServiceImpl implements PdaIosInService {
BeanUtils.copyProperties(mdMeMaterialbase,pmFormMaterialDto);
pmFormMaterialDto.setMaterial_code(pmFormDataList.get(0).getMaterial_code());
pmFormMaterialDto.setExt_code(ext_code);
pmFormMaterialDto.setSupp_code(pmFormDataList.get(0).getSupp_code());
pmFormMaterialDto.setSupp_code(pmFormDataList.get(0).getSupp_code());
return PdaResponse.requestParamOk(pmFormMaterialDto);
}
@@ -455,22 +500,32 @@ public class PdaIosInServiceImpl implements PdaIosInService {
throw new BadRequestException("出入库单据类型中,来料入库字典未配置。");
}
if(!whereJson.containsKey("date")){
whereJson.put("date",DateUtil.formatDate(new Date()));
}
List<PmFormData> pmFormDataList = iPmFormDataService.list(new LambdaUpdateWrapper<PmFormData>()
List<PmFormData> pmFormDataList = iPmFormDataService.list(new LambdaQueryWrapper<PmFormData>()
.eq(PmFormData::getIs_finish, 0)
.likeRight(PmFormData::getSource_form_date,whereJson.getString("date"))
.like(whereJson.containsKey("form_data_code"),
PmFormData::getCode, whereJson.get("form_data_code"))
.eq(PmFormData::getForm_type, dictList.get(0).getValue())
.ne(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")));
.ne(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成"))
.orderByDesc(PmFormData::getSource_form_date)
.last("LIMIT 20"));
//查询这20条的物料类型
List<MdMeMaterialbase> mdMeMaterialbases= iMdMeMaterialbaseService.list( new QueryWrapper<MdMeMaterialbase>().lambda()
.in(MdMeMaterialbase::getMaterial_code, pmFormDataList.stream()
.map(PmFormData::getMaterial_code)
.distinct()
.collect(Collectors.toList())
));
List<PmFormDataSelectDto> pmFormDataSelectDtoList = new ArrayList();
pmFormDataList.forEach(a-> {
PmFormDataSelectDto pmFormDataSelectDto = new PmFormDataSelectDto();
pmFormDataSelectDto.setText(a.getCode());
pmFormDataSelectDto.setText(a.getCode()+"-"+a.getPcsn()+"-"+ mdMeMaterialbases.stream().filter(m -> m.getMaterial_code().equals(a.getMaterial_code()))
.findFirst()
.map(MdMeMaterialbase::getMaterial_model)
.orElse(""));
pmFormDataSelectDto.setValue(a.getCode());
pmFormDataSelectDtoList.add(pmFormDataSelectDto);
});
@@ -1434,6 +1489,9 @@ public class PdaIosInServiceImpl implements PdaIosInService {
respDto.setForm_data_code(groupPlates.get(0).getExt_code());
respDto.setVehicle_code(vehicle_code);
respDto.setSite_code(site_code);
respDto.setPcsn(groupPlates.get(0).getPcsn());
respDto.setMaterial_model(mdMeMaterialbase.getMaterial_model());
return PdaResponse.requestParamOk(Collections.singletonList(respDto));
}

View File

@@ -358,47 +358,86 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Override
public PdaResponse pickUp(JSONObject whereJson) {
if (!"1".equals(whereJson.getString("point_status")) && !"2".equals(whereJson.getString("point_status"))) {
throw new BadRequestException("确认取货功能只能将点位设置成空载具/空位");
//设置点位状态,有料,需要传入托盘编号
if ("3".equals(whereJson.getString("point_status"))) {
String vehicle_code = whereJson.getString("vehicle_code");
//判断点位是否是空载具或者空位
//判断点位和仓位是否有正在执行的任务
List<SchBaseTask> schBaseTaskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
.and(wp -> wp
.eq(SchBaseTask::getPoint_code1, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code2, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code3, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code4, whereJson.getString("point_code"))
)
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
if (CollectionUtils.isNotEmpty(schBaseTaskList)) {
throw new BadRequestException("存在正在执行的点位,请核对!");
}
List<SchBasePoint> schBasePointList = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, whereJson.getString("point_code"))
);
if (CollectionUtils.isEmpty(schBasePointList)) {
throw new BadRequestException("点位有误!请输入正确的点位!");
}
if ("3".equals(schBasePointList.get(0).getPoint_status()) || StringUtils.isNotBlank(schBasePointList.get(0).getVehicle_code())) {
throw new BadRequestException("这个点位已存在托盘" + schBasePointList.get(0).getVehicle_code() + ",无法直接修改!");
}
iSchBasePointService.update(new LambdaUpdateWrapper<SchBasePoint>()
.set(SchBasePoint::getPoint_status, whereJson.getString("point_status"))
.set(SchBasePoint::getVehicle_code, vehicle_code)
.eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")));
}
//判断点位和仓位是否有正在执行的任务
List<SchBaseTask> schBaseTaskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
.and(wp -> wp
.eq(SchBaseTask::getPoint_code1, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code2, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code3, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code4, whereJson.getString("point_code"))
)
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
if (CollectionUtils.isNotEmpty(schBaseTaskList)) {
throw new BadRequestException("存在正在执行的点位,请核对!");
}
else {
if (!"1".equals(whereJson.getString("point_status")) && !"2".equals(whereJson.getString("point_status"))) {
throw new BadRequestException("确认取货功能只能将点位设置成空载具/空位");
}
iSchBasePointService.update(new LambdaUpdateWrapper<SchBasePoint>()
.set(SchBasePoint::getPoint_status, whereJson.getString("point_status"))
.set("1".equals(whereJson.getString("point_status")), SchBasePoint::getVehicle_code, null)
.set("1".equals(whereJson.getString("point_status")), SchBasePoint::getVehicle_qty, 0)
.eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")));
//判断点位和仓位是否有正在执行的任务
List<SchBaseTask> schBaseTaskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
.and(wp -> wp
.eq(SchBaseTask::getPoint_code1, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code2, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code3, whereJson.getString("point_code"))
.or()
.eq(SchBaseTask::getPoint_code4, whereJson.getString("point_code"))
)
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
if (CollectionUtils.isNotEmpty(schBaseTaskList)) {
throw new BadRequestException("存在正在执行的点位,请核对!");
}
//查询点位上的载具
List<SchBasePoint> schBasePointList = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, whereJson.getString("point_code"))
);
if (CollectionUtils.isNotEmpty(schBasePointList)) {
//删除
Set<String> groupSet = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>().lambda()
.eq(GroupPlate::getStoragevehicle_code, schBasePointList.get(0).getVehicle_code()))
.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet());
if (CollectionUtils.isNotEmpty(groupSet)) {
iMdPbGroupplateService.delete(groupSet);
iSchBasePointService.update(new LambdaUpdateWrapper<SchBasePoint>()
.set(SchBasePoint::getPoint_status, whereJson.getString("point_status"))
.set("1".equals(whereJson.getString("point_status")), SchBasePoint::getVehicle_code, null)
.set("1".equals(whereJson.getString("point_status")), SchBasePoint::getVehicle_qty, 0)
.eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")));
//查询点位上的载具
List<SchBasePoint> schBasePointList = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, whereJson.getString("point_code"))
);
if (CollectionUtils.isNotEmpty(schBasePointList)) {
//删除
Set<String> groupSet = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>().lambda()
.eq(GroupPlate::getStoragevehicle_code, schBasePointList.get(0).getVehicle_code()))
.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet());
if (CollectionUtils.isNotEmpty(groupSet)) {
iMdPbGroupplateService.delete(groupSet);
}
}
}
return PdaResponse.requestOk();
}

View File

@@ -0,0 +1,176 @@
package org.nl.wms.pm_manage.service.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* {@code @Description:} 表单信息表(PmFormData)实体类,主要用于传输给前端
* {@code @Author:} zhengxuming
*
* @since 2025年10月13日16:56:50
*/
@Data
public class PmFormDataDto extends Model<PmFormDataDto> {
/**
* 主键id
*/
private String id;
/**
* 仓库编号
*/
private String stor_id;
/**
* 仓库信息
*/
private String stor_name;
/**
* 编号
*/
private String code;
/**
* 单据状态
*/
private String status;
/**
* 单据类型
*/
private String form_type;
/**
* 源单单据日期
*/
private String source_form_date;
/**
* 物料code
*/
private String material_code;
/**
* 物料类型
*/
private String material_model;
/**
* 批次号
*/
private String pcsn;
/**
* 数量
*/
private BigDecimal qty;
/**
* 分配数量
*/
private BigDecimal assign_qty;
/**
* 实际数量
*/
private BigDecimal actual_qty;
/**
* 数量单位
*/
private String unit_id;
/**
* 单位名称
*/
private String unit_name;
/**
* 载具信息
*/
private String vehicle_code;
/**
* 载具组盘id
*/
private String vehicle_id;
/**
* 自定义表单字段
*/
private String form_data;
/**
* 创建id
*/
private String create_time;
/**
* 创建id
*/
private String create_name;
/**
* 修改时间
*/
private String update_time;
/**
* 修改人
*/
private String update_name;
/**
* 说明
*/
private String remark;
/**
* 是否完结
*/
private Integer is_finish;
private String supp_code;
private String supp_name;
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
return this.id;
}
}

View File

@@ -25,6 +25,11 @@ public class PmFormMaterialDto extends Model<PmFormMaterialDto> {
private String ext_code;
private String supp_code;
private String supp_name;
}

View File

@@ -214,12 +214,12 @@ public class InBillTask extends AbstractTask {
//删除组盘表
//删除
Set<String> groupSet = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>().lambda()
.in(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()))
.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet());
if(CollectionUtils.isNotEmpty(groupSet)) {
iMdPbGroupplateService.delete(groupSet);
}
Set<String> groupSet = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>().lambda()
.in(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()))
.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet());
if(CollectionUtils.isNotEmpty(groupSet)) {
iMdPbGroupplateService.delete(groupSet);
}
//更新formdata
updateFormData(taskObj);

View File

@@ -93,6 +93,11 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
query.setPid_is_null(null);
}
}
if("true".equals(query.getIs_used())){
query.setIs_used("1");
}
Page page = this.page(pageQuery.build(SysDept.class), query.build());
page.setRecords(CopyUtil.copyList(page.getRecords(), DeptVo.class));
if (StringUtils.isNotEmpty(query.getName()) || query.getIs_used()!=null){

View File

@@ -55,6 +55,7 @@
<collection property="depts" ofType="org.nl.wms.system_manage.service.dept.dao.SysDept">
<id property="dept_id" column="dept_id"/>
<result column="dept_name" property="name"/>
<result column="dept_code" property="code"/>
</collection>
<collection property="roles" ofType="org.nl.wms.system_manage.service.role.dao.SysRole">
<id property="role_id" column="role_id"/>
@@ -63,6 +64,7 @@
<select id="getUserDetail" resultMap="UserDetail">
SELECT
<include refid="Base_Column_List"/>
,sys_dept.code dept_code
,sys_dept.dept_id
,sys_dept.name as dept_name
,sys_users_roles.role_id
@@ -85,6 +87,9 @@
<if test="query.end_time != null">
and #{query.end_time} >= sys_user.create_time
</if>
<if test="query.user_name != null">
and sys_user.username = #{query.user_name}
</if>
<if test="query.blurry != null">
and (email like #{query.blurry} or username like #{query.blurry} or person_name like #{query.blurry})
</if>

View File

@@ -16,8 +16,11 @@ public class UserQuery extends BaseQuery<SysUser> {
private Long dept_id;
private String user_name;
@Override
public void paramMapping() {
this.doP.put("dept_id", QParam.builder().k(new String[]{"dept_id"}).type(QueryTEnum.LK).build());
this.doP.put("user_name", QParam.builder().k(new String[]{"user_name"}).type(QueryTEnum.EQ).build());
}
}