opt:提交合单功能

This commit is contained in:
DESKTOP-5DIJMF9\admin
2025-07-22 19:42:40 +08:00
parent e26d9b0be9
commit 94691ac13c
11 changed files with 657 additions and 23 deletions

View File

@@ -75,6 +75,7 @@
INNER JOIN md_me_materialbase material ON material.material_code = form.material_code
<where>
form.status = '10'
and form.is_merge = '0'
and form.form_type = '1001'
AND form.is_finish = '0'
<if test="param.stor_id != null and param.stor_id != ''">

View File

@@ -39,7 +39,7 @@ public class ErpToWmsController {
return new ResponseEntity<>(erpToWmsService.erpQueryIvt(whereJson),HttpStatus.OK);
}
@PostMapping("/groupplate")
@PostMapping("/groupinfo")
@Log("下发组盘信息")
@SaIgnore
public ResponseEntity<Object> sendGroupplate(@RequestBody JSONObject whereJson) {

View File

@@ -86,6 +86,18 @@ public class ErpToWmsServiceImpl implements ErpToWmsService {
@Override
public ErpResponse sendGroupplate(JSONObject whereJson) {
/**
* {
* "order_code": "3000000056",
* "order_type": "03",
* "pallet_sn": "zp0000000003",
* "mater_frame": "m01",
* "mater_code": "0345h-fg0001",
* "mater_name": "36μm电镀金刚石切割线",
* "unit_code": "件",
* "qty": "120.00"
* }
*/
log.info("sendGroupplate下发组盘接口输入参数为-------------------" + whereJson.toString());
// 查询仓库
BsrealStorattr storDao = iBsrealStorattrService.findByCode("GW");
@@ -119,37 +131,37 @@ public class ErpToWmsServiceImpl implements ErpToWmsService {
.filter(row -> row.getMaterial_code().equals(json.getString("mater_code")))
.findFirst().orElse(null);
jsonDtl.setId(IdUtil.getStringId());
jsonDtl.setCode(json.getString("ext_code"));
jsonDtl.setCode(json.getString("order_code"));
jsonDtl.setStatus(IOSEnum.BILL_STATUS.code("生成"));
jsonDtl.setStor_id(storDao.getStor_id());
jsonDtl.setStor_name(storDao.getStor_name());
jsonDtl.setForm_type(json.getString("ext_type"));
jsonDtl.setForm_type(json.getString("order_type"));
jsonDtl.setSource_form_date(DateUtil.today());
jsonDtl.setMaterial_code(json.getString("mater_code"));
jsonDtl.setMaterial_id(materDao.getMaterial_id());
jsonDtl.setQty(BigDecimal.valueOf(json.getDoubleValue("quantity")));
jsonDtl.setPlan_qty(BigDecimal.valueOf(json.getDoubleValue("quantity")));
jsonDtl.setQty(BigDecimal.valueOf(json.getDoubleValue("qty")));
jsonDtl.setPlan_qty(BigDecimal.valueOf(json.getDoubleValue("qty")));
MdPbMeasureunit unitDao = unitDaoList.stream()
.filter(row -> row.getUnit_code().equals(json.getString("unit_code")))
.findFirst().orElse(null);
jsonDtl.setUnit_id(unitDao.getMeasure_unit_id());
jsonDtl.setUnit_name(unitDao.getUnit_name());
jsonDtl.setVehicle_code(json.getString("vehicle_code"));
jsonDtl.setVehicle_code2(json.getString("vehicle_code2"));
jsonDtl.setVehicle_code(json.getString("pallet_sn"));
jsonDtl.setVehicle_code2(json.getString("mater_frame"));
jsonDtl.setCreate_name("ERP");
jsonDtl.setCreate_time(DateUtil.now());
dtlArr.add(jsonDtl);
GroupPlate plate = new GroupPlate();
plate.setGroup_id(IdUtil.getStringId());
plate.setStoragevehicle_code(json.getString("vehicle_code"));
plate.setStoragevehicle_code(json.getString("pallet_sn"));
plate.setMaterial_id(materDao.getMaterial_id());
plate.setQty_unit_id(unitDao.getMeasure_unit_id());
plate.setQty_unit_name(unitDao.getUnit_name());
plate.setQty(BigDecimal.valueOf(json.getDoubleValue("quantity")));
plate.setQty(BigDecimal.valueOf(json.getDoubleValue("qty")));
plate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("生成"));
plate.setExt_code(json.getString("ext_code"));
plate.setExt_type(json.getString("ext_type"));
plate.setExt_code(json.getString("order_code"));
plate.setExt_type(json.getString("order_type"));
plate.setCreate_name("ERP");
plate.setCreate_time(DateUtil.now());
plates.add(plate);

View File

@@ -81,11 +81,14 @@ public class PmFormDataController {
@GetMapping("/getSonFormData/{id}")
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id) {
//参数判读,参数解析,调用参数入库
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
return new ResponseEntity<>(iPmFormDataService.getSonDtlFormData(id), HttpStatus.OK);
}
@GetMapping("/getdtl/{id}")
public ResponseEntity<Object> getdtl(@PathVariable String id) {
return new ResponseEntity<>(iPmFormDataService.getdtl(id), HttpStatus.OK);
}
@PostMapping("/confirmStatus")
@SaIgnore
@@ -109,6 +112,22 @@ public class PmFormDataController {
}
@PostMapping("/tomerge")
@SaIgnore
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> tomerge(@RequestBody JSONArray rows) {
iPmFormDataService.tomerge(rows);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/dismerge")
@SaIgnore
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> dismerge(@RequestBody JSONArray rows) {
iPmFormDataService.dismerge(rows);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/sync/{type}")
@Log("单据同步")
public ResponseEntity<Object> sync(@RequestParam String type, String formDtl) {

View File

@@ -1,6 +1,7 @@
package org.nl.wms.pm_manage.service;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
@@ -38,6 +39,10 @@ public interface IPmFormDataService extends IService<PmFormData> {
*/
void update(PmFormDataParam params);
void tomerge(JSONArray rows);
void dismerge(JSONArray rows);
List<PmFormData> getByType(String from_type);
@@ -52,6 +57,8 @@ public interface IPmFormDataService extends IService<PmFormData> {
*/
Object getSonDtlFormData(String id);
List<PmFormData> getdtl(String parent_id);
void dynamicSql(String sql);
List<PmFormData> getByParentId(String...parent_id);

View File

@@ -16,12 +16,11 @@ import java.math.BigDecimal;
* @since 2025-06-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@TableName("pm_form_data")
public class PmFormData extends Model<PmFormData> {
public class PmFormData implements Serializable {
private static final long serialVersionUID = -7739291296662381393L;
//@TableId(type = IdType.ASSIGN_ID)
/**
@@ -159,16 +158,17 @@ public class PmFormData extends Model<PmFormData> {
*/
private Integer is_finish;
/**
* 是否合单
*/
private String is_merge;
/**
* 获取主键值
*
* @return 主键值
* 源单字符串集
*/
@Override
protected Serializable pkVal() {
return this.id;
}
private String merge_codes;
private String new_merge_flag;
}

View File

@@ -42,6 +42,10 @@ public class PmFormDataDto implements Serializable {
* 源单单据日期
*/
private String source_form_date;
/**
* 物料code
*/
private String material_id;
/**
* 物料code
*/
@@ -133,6 +137,17 @@ public class PmFormDataDto implements Serializable {
* 是否完结
*/
private Integer is_finish;
/**
* 是否合单
*/
private String is_merge;
/**
* 源单字符串集
*/
private String merge_codes;
private String new_merge_flag;
/**
* 关联上级表单id

View File

@@ -2,8 +2,12 @@ package org.nl.wms.pm_manage.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
@@ -27,6 +31,7 @@ import org.nl.wms.pm_manage.service.dto.PmFormDataDto;
import org.nl.wms.pm_manage.service.dto.PmFormDataParam;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.nl.wms.pm_manage.service.IPmFormDataService;
import org.springframework.util.CollectionUtils;
@@ -194,6 +199,17 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
return this.baseMapper.queryTree(query);
}
@Override
public List<PmFormData> getdtl(String id) {
if (StringUtils.isEmpty(id)) {
throw new BadRequestException("请求参数不能为空");
}
PmFormData form = pmFormDataMapper.selectById(id);
String[] codes = form.getMerge_codes().split(",");
return this.list(new QueryWrapper<PmFormData>().in("code", codes));
}
@Override
@@ -209,6 +225,61 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void tomerge(JSONArray rows){
BigDecimal sum_qty = BigDecimal.ZERO;
String codes = "";
String h_code = "";
for(int i=0;i<rows.size();i++){
JSONObject jo = rows.getJSONObject(i);
PmFormData form = pmFormDataMapper.selectById(jo.getString("id"));
if("1".equals(form.getIs_merge())){
throw new BadRequestException("当前单据已合单,不允许再次提交:"+form.getCode());
}
if("1".equals(form.getNew_merge_flag())){
throw new BadRequestException("当前单据为合单后新单据,不允许再次提交:"+form.getCode());
}
if(i==0){
codes = form.getCode();
h_code= "H-"+form.getCode();
}else{
codes = codes+","+form.getCode();
}
sum_qty = sum_qty.add(form.getQty());
form.setIs_merge("1");
pmFormDataMapper.updateById(form);
if(i==(rows.size()-1)){
form.setId(IdUtil.getStringId());
form.setQty(sum_qty);
form.setCode(h_code);
form.setNew_merge_flag("1");
form.setMerge_codes(codes);
form.setIs_merge("0");
pmFormDataMapper.insert(form);
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void dismerge(JSONArray rows){
for(int i=0;i<rows.size();i++){
JSONObject jo = rows.getJSONObject(i);
PmFormData form = pmFormDataMapper.selectById(jo.getString("id"));
if(!"1".equals(form.getNew_merge_flag())){
throw new BadRequestException("当前单据为非合单新单据,不允许提交:"+form.getCode());
}
String[] codes = form.getMerge_codes().split(",");
pmFormDataMapper.update(null,new UpdateWrapper<PmFormData>()
.set("is_merge","0")
.in("code",codes)
);
pmFormDataMapper.deleteById(form.getId());
}
}
@Override
public List<PmFormData> getByParentId(String[] parent_id) {
Assert.notNull(parent_id, "请求参数不能为空");